前置条件
1.付费苹果开发者账号
2.开发者中心申请使用Hotspot 和 WiFi information 的权限配置
在开发者中心 配置Hotspot 和 WiFi information 的权限
在Xcode 项目 配置Hotspot 和 WiFi information 的权限
在Xcode 项目 导入相关静态库
代码实现
导入头文件
#import <NetworkExtension/NetworkExtension.h>
#import<SystemConfiguration/CaptiveNetwork.h>
连接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;
}