iOS 開發(fā) App 內自動連接指定 Wi-Fi

目前很多智能設備配置網(wǎng)絡的時候都有app內部直連Wi-Fi的功能(iOS11之前需要用戶跳到Wi-Fi設置界面去連),iOS11后蘋果提供 NEHotspotConfigurationManager 類用于app內直連周邊的Wi-Fi;具體步驟:

1、向開發(fā)者中心申請使用NEHotspotHelper的權限(理由要充分,詳述app使用NEHotspotHelper的理由,一般兩周給結果);
2、給App ID的entitlements file配置權限:


111.jpg

3、在Xcode-Build Phases中導入NetworkExtension.framework框架:


22.jpg

4、在Xcode - Capabilities 中開啟Hostpot Configuration:
33.png

5、代碼實現(xiàn):
//導入頭文件
    #if TARGET_IPHONE_SIMULATOR
    #else
    #import <NetworkExtension/NetworkExtension.h>
    #endif
//1、app內直連Wi-Fi:
NEHotspotConfiguration * hotmode = [[NEHotspotConfiguration alloc] initWithSSID:@"wifiSSID" passphrase:@"password" isWEP:NO];
            __weak typeof(self) weakSelf = self;
            [[NEHotspotConfigurationManager sharedManager] applyConfiguration:hotmode completionHandler:^(NSError * _Nullable error) {
                if (error) {
                    if (error.code == NEHotspotConfigurationErrorAlreadyAssociated) {
                        //已連接
                    }
                    else if (error.code == NEHotspotConfigurationErrorUserDenied) {
                        //用戶點擊取消
                    }
                    else{
                        //注:這個方法存在一個問題,如果你加入一個不存在的WiFi,會彈出無法加入WiFi的彈框,但是本方法的回調error沒有值。在這里,我是通過判斷當前wifi是否是我要加入的wifi來解決這個問題的
                    }
                }
            }];
//2、獲取配置過的WIFI列表:
if (@available(iOS 11.0, *)) {
        [[NEHotspotConfigurationManager sharedManager] getConfiguredSSIDsWithCompletionHandler:^(NSArray * array) {
            
        }];
    }
//3、獲取當前手機連接的wifi:
//導入 
#import<SystemConfiguration/CaptiveNetwork.h>
- (NSString *)getWifiName {
    NSArray *ifs = (__bridge id)CNCopySupportedInterfaces();
    id info = nil;
    for (NSString *ifnam in ifs) {
        info = (__bridge id)CNCopyCurrentNetworkInfo((CFStringRef)CFBridgingRetain(ifnam));
        if (info && [info count]) {
            break;
        }
    }
    if ([info isKindOfClass:[NSDictionary class]]) {
        NSString *wifiSsid = [info objectForKey:@"SSID"];
        return wifiSsid;
    }
    return nil;
}
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容