您的位置:首页 > 移动开发 > IOS开发

iOS wifi认证

2017-02-06 17:48 89 查看
wifi认证存在的问题:在设备连接上wifi,没有通过路由器认证前,如果关闭自动弹出的Portal页面,wifi会自动断开。 解决方案:可通过以下两个方法来禁止系统自动弹Portal页面来解决wifi自动关闭的问题。

1、正常情况,用户使用iPhone手机连接带有Portal认证的路由器,在连接成功后,iOS系统会在已有列表中随机选择连接指定的网址(例如:www.itools.info)以测试当前路由器是否需要Portal认证。在需要Portal认证的网络,系统会弹出Portal页面,这个时候,如果用关掉portal页面,或者直接切换到其它应用,wifi网络会直接自动断开,我们的解决办法是路由器白名单,让路由器放行所有Portal测试的IP,以下为测试的域名:

www.appleiphonecell.com
captive.apple.com
www.itools.info
www.ibook.info
www.airport.us
www.thinkdifferent.us


对应的IP地址:

23.207.103.91
23.33.54.18
23.44.167.91
23.67.183.91
96.7.103.91
23.42.71.91
23.34.105.211
23.59.167.91
23.42.184.50
23.47.232.190
23.77.23.91
23.194.87.91
23.61.91.190
23.218.12.50
23.2.38.95
23.46.135.91
172.225.213.179
218.205.66.94
23.64.251.249
23.58.250.189


将以上所有IP加到路由器的白名单中,即可解决iPhone断开wifi的问题,但是同时也不自动弹出Portal页面了,用户打开浏览器才会重定向到Portal页面。

2、 wifi名确定解决方法

如果公司部署的公共wifi名确定的情况,就比较简单了,不需要配置上述白名单也可以保证wifi不断开,具体办法是,在程序启动时,向iOS系统注册SSID,方法如下:

- (void)registerNetwork:(NSString *)ssid{
NSString *values[] = {ssid};
CFArrayRef arrayRef = CFArrayCreate(kCFAllocatorDefault,(voidvoid *)values, (CFIndex)1, &kCFTypeArrayCallBacks);
if( CNSetSupportedSSIDs(arrayRef)) {
NSArray *ifs = (__bridge_transfer id)CNCopySupportedInterfaces();
CNMarkPortalOnline((__bridge CFStringRef)(ifs[0]));
NSLog(@"%@", ifs);
}
}


参考资料:iOS WIFI 信息 获取
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios