iOS开发APP内自动链接wifi
公司在做智能硬件方面的业务,有一个自动链接wifi的需求,在网上查了半天,目前因为苹果的限制,只能ios11以上才能用,有点坑,现在整理一下发出来。
首先添加依赖库NetworkExtension.framework
然后打开Capabilities里的Hotspot Configuration
最后上代码
添加头文件
#import <NetworkExtension/NetworkExtension.h>
#import <SystemConfiguration/CaptiveNetwork.h>
链接代码
//创建将要连接的WIFI配置实例
- (void)connectWifi {
if (@available(iOS 11.0, *)) {
//Hachi_Office为wifi名称,hachismart是密码,这里换上你自己的wifi名和密码
NEHotspotConfiguration * hotspotConfig = [[NEHotspotConfiguration alloc] initWithSSID:@"Hachi_Office" passphrase:@"hachismart.com" isWEP:NO];
// 开始连接 (调用此方法后系统会自动弹窗确认)
[[NEHotspotConfigurationManager sharedManager] applyConfiguration:hotspotConfig completionHandler:^(NSError * _Nullable error) {
NSLog(@"%@", error);
if (!error) {
//根据名称判断是否链接成功
if ([[self getCurrentWifi] isEqualToString:@"Hachi_Office"]) {
NSLog(@"链接成功");
}
}else{
//如果本来就链接了这个wifi,也会走到这里来
NSLog(@"%@", error.localizedDescription);
}
}];
} else {
// ios 10以下(包括10)在这里处理
}
}
//获取当前wifi名称
-(NSString *)getCurrentWifi
{
NSString *ssid = nil;
NSArray *ifs = (__bridge id)CNCopySupportedInterfaces();
for (NSString *ifname in ifs) {
NSDictionary *info = (__bridge id)CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifname);
if (info[@"SSID"])
{
ssid = info[@"SSID"];
}
}
return ssid;
}