NetworkExtension 的方法是用

在做wifi分享的時候遇到了很多的問題,尤其是這個庫的時候遇到很多坑爹的事情,寫著文章只是為了不讓自己忘記怎么使用的。

1.這個庫的使用是需要向蘋果發(fā)送郵件申請使用NetworkExtension框架

2.申請下來的配置,自己去百度吧,很多都寫過了

申請下來之后開始寫代碼

NSMutableDictionary* options = [[NSMutableDictionary alloc] init];

[options setObject:@"hanmiao" forKey:kNEHotspotHelperOptionDisplayName];//這里寫的是你的副標題

dispatch_queue_t queue = dispatch_queue_create("LiyiZhan.WifiDemo", 0);//你的bundle id-如果沒有申請下來寫的話- -里面的內容是獲取不到的

BOOL returnType = [NEHotspotHelper registerWithOptions:options queue:queue handler:^(NEHotspotHelperCommand * cmd){

[cmd createResponse:kNEHotspotHelperResultAuthenticationRequired];

if(cmd.commandType == kNEHotspotHelperCommandTypeEvaluate || cmd.commandType == kNEHotspotHelperCommandTypeFilterScanList){

NSLog(@"bbbb = %lu",cmd.networkList.count);

for(NEHotspotNetwork* network in cmd.networkList){ //下面是獲取系統(tǒng)wifi的信心

NSString* ssid = network.SSID;//ssid - wifi名字

NSString* bssid = network.BSSID;//bssid 相當于apmac

BOOL secure = network.secure;//是否加密

BOOL autoJoined = network.autoJoined;

double signalStrength = network.signalStrength;//信號的強弱

NSLog(@"SSID:%@ # BSSID:%@ # SIGNAL:%f ",ssid,bssid,signalStrength);

}

? ?}

}];

2. 還有就是添加副標題 ---寫在if(cmd.commandType == kNEHotspotHelperCommandTypeEvaluate .. 里面

for (network? in cmd.networkList) {

NSLog(@"COMMAND TYPE After:? %ld", (long)cmd.commandType);

if ([network.SSID isEqualToString:@"ssid"]|| [network.SSID isEqualToString:@"WISPr Hotspot"]) {//這里是判斷系統(tǒng)的said 和 分享的said 是否一致

double signalStrength = network.signalStrength;

NSLog(@"Signal Strength: %f", signalStrength);

[network setConfidence:kNEHotspotHelperConfidenceHigh];

[network setPassword:@"password"];

NEHotspotHelperResponse *response = [cmd createResponse:kNEHotspotHelperResultSuccess];

NSLog(@"Response CMD %@", response);

[response setNetworkList:@[network]];

[response setNetwork:network];

[response deliver];

}

}

但是這個樣子寫有個坑?。。。?!很大的坑。這個坑就是如果分享的wifi有5個你的副標題只能一個一個的展示。 為了這個我找了1個小時,然后才知道怎么寫。原諒我吧,可能是我太笨了,知識面還是太少了。


[response setNetworkList:@[network]]; 如果你想把你所有的wifi一次性展示出來 修改這里?

1.用數(shù)組接受判斷出來的分享的wifi (shareWifiListArr --這個是數(shù)組)

if ([network.SSID isEqualToString:@"ssid"]|| [network.SSID isEqualToString:@"WISPr Hotspot"]) {//這里是判斷系統(tǒng)的said 和 分享的said 是否一致

[network setConfidence:kNEHotspotHelperConfidenceHigh];

[network setPassword:@"password"];

[shareWifiListArr? addObject: network];//用數(shù)組存儲network 信息

}

[response setNetworkList:shareWifiListArr];//這里改成這個樣子就可以一次性展示多個了

2.還有一個坑就是第一次走這個方法的時候分享的wifi為空的話。- -就算第二次第三次分享的wifi得到了,還是展示為空---(好吧,我是把這個方法封裝了一下,沒有放在一個界面所以才會這個樣子,如果放在同一個界面的話是沒有這個問題的,原諒我的知識淺薄吧)因為一般是先獲取系統(tǒng)的wifi信息然后把這個信息上傳到后臺,后臺再給你返回分享的wifi,這個樣子就造成了第一個的wifi分享的數(shù)組為空,為了這我只想到本地緩存的做法,如果你有什么好的辦法可以說一下,非常感謝。

實際我非常的不想上傳,我只是怕自己忘記了為什么這個樣子寫而已,因為我太差了!?。?-我代碼真的很差勁的,別笑話了萬一我玻璃心了就不好了。


3.還有一個更坑爹的是尼瑪通知還不能寫在這個里面。不然就算你的通知走了一遍釋放掉了。你還是會看到這個通知走了很多次?。。。?!后來我就寫在了跳轉到無線局域網(wǎng)的哪里,如果大神們有好的辦法求告訴我怎么寫~著的在這里有點疑問,項目催的急所以這里沒有很好的思考。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容