【iOS】越獄環境下iOS實現周邊Wi-Fi RSSi值的獲取

一、前言

蘋果在iOS5推出之後就不再提供能直接獲取Wi-Fi RSSI數值的API。本文的方法是在越獄環境下,基於MobileApple80211框架來進行開發,實現自動搜索周邊Wi-Fi熱點並獲取其信息(比如MAC,SSID,RSSI,CHANNEL)。目前該框架成爲了私有框架,其中API均爲私有API,導致應用不能上App Store,只能等待Apple哪天再次開放API。


二、調試設備

(1) iphone 3gs iOS4.0 無需越獄即可獲取;

(2) iOS5及以上則必須要越獄,並將程序部署到終端的/Applications目錄下取得超級用戶權限才能獲得Wi-Fi的訪問權限。

注:可參考應用Wi-Fi Analyzer(越獄後在Cydia上下載)。


三、代碼

Demo源代碼參考:http://easymorse-iphone.googlecode.com/svn/trunk/iphone.wifiii/

我的代碼:http://pan.baidu.com/s/1EJl3X

注:iOS5及以上,注意修改路徑,如下所示。

[objc] view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. libHandle = dlopen("System/Library/SystemConfiguration/IPConfiguration.bundle/IPConfiguration", RTLD_LAZY);  

要獲得Wi-Fi的訪問權限必須獲得超級用戶權限,因此iOS5及以上設備必須越獄,並將程序部署到設備的/Application目錄下,下文將詳細介紹。


四、製作系統級應用

ios的程序分爲mobile和root權限模式,我們一般用xcode開發的app取得的是mobile權限,但是ios越獄後安裝的app如:Cydia、91助手、PP助手等均爲系統級應用程序。系統級app的好處是:用戶無法手動刪除、取得完全的root權限、可設置開機啓動項等等功能。

通過xcode打包的ipa是無法安裝成爲系統app的,所以我們需要另外一種打包方式:DEB。下面就主要介紹deb文件的製作方法。


4.1  deb文件製作方法

(1)通過xcode得到app文件

我們通過xcode編譯之後,可以右擊後“Show in Finder”找到WifiScan.app文件。


(2)準備文件目錄

創建一個目錄用來打包,如tmp,tmp下建DEBIAN和Applications兩個目錄, DEBIAN下建一個文本文件control(需要把.txt或.rtf的後綴去掉)

tmp目錄結構如下:
-DEBIAN
---control
-Applications
---WifiScan.app

control文件就是打包時的配置文件,它也會作爲deb包的配置被打包到包中,文件例子如下:

[objc] view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. <span style="font-size:14px;">Package:com.yuhangkit.WifiScan  
  2. Name:WifiScan  
  3. Version:0.1-1  
  4. Description:WifiScan,開發中...  
  5. Section:商業  
  6. Depends:firmware(>= 4.3)  
  7. Priority:optional  
  8. Architecture:iphoneos-arm  
  9. Author:yuhangkit  
  10. Homepage:http://blog.csdn.net/yuhangkit  
  11. Icon:file:///Applications/WifiScan/Icon.png  
  12. Maintainer:Zhengyuhang <http://weibo.com/supermianmian></span>  

(3)打包deb文件(說明:如出現應用安裝後閃退的情況,可參考http://blog.csdn.net/hjs89/article/details/38403037此處的打包方式,比較詳細)

打開終端,文件路徑打開至tmp文件夾上層目錄,輸入

dpkg-deb -b tmp WifiScan.deb



(4)Mac下需要手動添加dpkg命令

Macports下載地址: http://www.macports.org/install.php

根據自己的Mac系統版本選擇相應的Macports版本,雙擊進行安裝。 

注:安裝Macports有可能會卡在最後一分鐘,需要重啓後斷網安裝即可。

接着安裝dpkg,打開終端輸入: sudo port -f install dpkg

安裝時間較長,如失敗可重新安裝Macports後再輸入口令。


4.2 生成系統級應用

(1)通過Cydia,安裝DEB

安裝DEB的方法很多種,我採用的是iFunBox工具,很簡單。

下載iFunBox的Mac版本:http://pan.baidu.com/s/1mYQ4o

連上越獄設備然後將deb文件拖入iFUnBox中,如下圖所示。


然後重啓設備就行了,默認是在開機後自動安裝。


(2)系統級應用的刪除與調試

可以看到系統級應用WifiScan已經安裝成功,且不能夠直接刪除,必須用設備上的Cydia-->已安裝-->WifiScan,進行刪除。需要注意的是,每次更新代碼調試,必須先把先前的刪除乾淨才能順利重新安裝。

鑑於這種調試方式過於繁瑣,目前正在考慮iOSOpenDev直接在Xcode裏配置越獄開發環境來提高調試效率,有興趣的朋友可以自己試試。


(3)成果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章