以前iOS9上只有蜂窝访问权限,不过默认都是允许访问,可以自行去设置里面关闭。
而iOS10针对国行手机多了一个无线和蜂窝访问权限的选择。许多应用在第一次安装的时候会自动弹出一个alertview询问用户是否允许应用使用包括无线和蜂窝的数据。但也有部分是不会弹出的(iOS10系统bug,解决办法可自行百度)。注意这个弹窗只会在该手机第一个安装该应用的时候才会弹出,卸载重装也不会弹,类似keychain机制。
所以为了防止用户在第一次弹窗的时候点了不允许而后面不能正常连接网络的情况,做出了相应的处理。(由于苹果并没有给出相应的api,无法获知用户在第一次是否点了允许还是不允许,所以通过间接的方式去判断,有误判,不过都是极少情况的概率出现)
所有因为我们应用有引导页,所以在引导处自己写了一个请求百度HEAD的方法(为了去弹出系统网络弹窗,如果没有请求不会弹出,写HEAD请求也是为了节省流量)。然后在过渡到登陆页面的时候用AF去判断当前的网络状态,如果是AFNetworkReachabilityStatusNotReachable,即表示当前网络不可用。
然后在对此情况做出两种判断:
wifi:
- (NSDictionary *)fetchSSIDInfo {
NSArray *ifs = (__bridge_transfer NSArray *)CNCopySupportedInterfaces();
if (!ifs) {
return nil;
}
NSDictionary *info = nil;
for (NSString *ifnam in ifs) {
info = (__bridge_transfer NSDictionary *)CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifnam);
if (info && [info count]) { break; }
}
return info;