iOS WiFi内切功能

前置条件

1.付费苹果开发者账号
2.开发者中心申请使用Hotspot 和 WiFi information 的权限配置

在开发者中心 配置Hotspot 和 WiFi information 的权限

在Xcode 项目 配置Hotspot 和 WiFi information 的权限

在Xcode 项目 导入相关静态库

代码实现

导入头文件

#import 
#import

连接WiFi

    //1、app切换连接到对应WiFi:
    NEHotspotConfiguration * conWiFi = [[NEHotspotConfiguration alloc] initWithSSID:@"WiFi名称" passphrase:@"WiFi密码" isWEP:NO];
    
                [[NEHotspotConfigurationManager sharedManager] applyConfiguration:conWiFi completionHandler:^(NSError * _Nullable error) {
                    if (error) {
                        if (error.code == NEHotspotConfigurationErrorAlreadyAssociated) {
                            //已连接
                            NSLog(@"WiFi 连接成功");
                        }
                        else if (error.code == NEHotspotConfigurationErrorUserDenied) {
                            //用户点击取消
                            NSLog(@"WiFi 用户点击取消");
                        }
                        else{
                            NSLog(@"WiFi 错误");
                        }
                    }
                }];

获取配置过的WiFi列表

//2、获取配置过的WIFI列表:
    if (@available(iOS 11.0, *)) {
            [[NEHotspotConfigurationManager sharedManager] getConfiguredSSIDsWithCompletionHandler:^(NSArray * array) {
                NSLog(@"WiFi 列表 %@",array);
            }];
        }

获取已连接WiFi名

//3、获取手机连接的WiFi列表:
    NSLog(@"已连接WiFi-%@",[self obtainWiFiName]);
- (NSString *)obtainWiFiName
{
    NSString *ssid = @"Not Found";
    CFArrayRef myArray = CNCopySupportedInterfaces();

    if (myArray != nil) {

        CFDictionaryRef myDict = CNCopyCurrentNetworkInfo(CFArrayGetValueAtIndex(myArray, 0));

        if (myDict != nil) {
            NSDictionary *dict = (NSDictionary*)CFBridgingRelease(myDict);

            ssid = [dict valueForKey:@"SSID"];

        }
    }
    
   return ssid;

}

END

你可能感兴趣的:(iOS WiFi内切功能)