最近公司接了個(gè)外包項(xiàng)目,要求用到Wi-Fi相關(guān)的權(quán)限,好了,二話不說(shuō),我們來(lái)貼代碼。
1.判斷用戶的Wi-Fi開(kāi)關(guān)是否打開(kāi)
/**
判斷Wi-Fi開(kāi)關(guān)是否打開(kāi)
@return 開(kāi)關(guān)狀態(tài)
*/
+ (BOOL) isWiFiSwichOn {
NSCountedSet * cset = [NSCountedSet new];
struct ifaddrs *interfaces;
if( ! getifaddrs(&interfaces) ) {
for( struct ifaddrs *interface = interfaces; interface; interface = interface->ifa_next) {
if ( (interface->ifa_flags & IFF_UP) == IFF_UP ) {
[cset addObject:[NSString stringWithUTF8String:interface->ifa_name]];
}
}
}
return [cset countForObject:@"awdl0"] > 1 ? YES : NO;
}
2.跳轉(zhuǎn)到系統(tǒng)Wi-Fi頁(yè)面
NSURL* urlCheck1 = [NSURL URLWithString: @"App-Prefs:root=WIFI"];
NSURL* urlCheck2 = [NSURL URLWithString: @"prefs:root=WIFI"];
NSURL* urlCheck3 = [NSURL URLWithString: UIApplicationOpenSettingsURLString];
if ([[UIApplication sharedApplication] canOpenURL: urlCheck1]) {
[[UIApplication sharedApplication] openURL: urlCheck1];
} else if ([[UIApplication sharedApplication] canOpenURL: urlCheck2]) {
[[UIApplication sharedApplication] openURL: urlCheck2];
} else if ([[UIApplication sharedApplication] canOpenURL: urlCheck3]) {
[[UIApplication sharedApplication] openURL: urlCheck3];
} else {
return;
}
在iOS9以前由于蘋果的政策我們并不能直接替用戶連上某個(gè)Wi-Fi,而是通過(guò)給手機(jī)裝一個(gè)Configuration Profile(在iOS9之前的Wi-Fi萬(wàn)能鑰匙就是通過(guò)裝描述文件的形式來(lái)讓用戶連上某個(gè)Wi-Fi)
具體實(shí)現(xiàn)參考
http://blog.csdn.net/toto18369905359/article/details/52622462
然而在iOS9之后要想實(shí)現(xiàn)Wi-Fi萬(wàn)能鑰匙的樣子讓用戶連上某個(gè)Wi-Fi然后在系統(tǒng)的Wi-Fi頁(yè)面顯示一些提示信息像下圖一樣
就要用到NetworkExtension/NEHotspotHelper 然后這個(gè)東西的權(quán)限蘋果這邊并沒(méi)有進(jìn)行大范圍的發(fā)放,這個(gè)權(quán)限還是需要發(fā)郵件進(jìn)行申請(qǐng)。具體申請(qǐng)使用流程如下
https://www.eyrefree.org/2017/03/09/2017-03-09-NEHotspotHelper/#六-演示