iOS 网络权限管理

网络权限管理

一、iOS网络情况分类:

  1. 通过App应用设置网络使用权限(关闭、WLAN、WLAN与蜂窝移动网)
  2. 直接设置手机网络情况(飞行模式、无线局域网络、蜂窝移动网络)

二、iOS开发使用到的网络判断类:

  1. AFNetworkReachability或者Reachability来判断网络的可达性,这两个类可以判断网络是否可达,以及可达时网络的类型(WLAN还是蜂窝移动网络);

  2. CTCellularData来判断网络数据是否受限,只有应用网络权限设置为WLAN与蜂窝移动网时,网络数据才会返回不受限;

三、组合关系:

权限飞行模式/关闭网络局域网蜂窝移动网络
关闭不可达-数据受限不可达-数据受限不可达-数据受限
WLAN不可达-数据受限WLAN-数据受限不可达-数据受限
WLAN和蜂窝移动网不可达-数据受限WLAN-数据不受限WLAN-数据不受限

注:关闭网络,及关闭无线局域网和蜂窝移动网络。

四、特殊说明:

  1. 第一次安装应用(之前从未安装过),第一次启动App时,会提示选择网络,选择之后就不会提示选择网络;但有时第一次安装时不出现选择网络,需要在设置中修改任意一个应用的网络权限,然后重启App,就会提示网络(目前没有找到不出现选择网络的原因);

  2. 当网络由可达状态切换到不可达状态后,第一进入App时,系统会提示一次网络权限改变的提示;

  3. 修改网络权限时,App不会重启,这个地方与相册授权不同。相册、相机、麦克风等修改权限后返回时,App会重新启动。

五、代码:

CTCellularData *cellularData = [[CTCellularData alloc] init];
cellularData.cellularDataRestrictionDidUpdateNotifier = ^(CTCellularDataRestrictedState state) {
        //获取联网权限状态
        switch (state) {
            case kCTCellularDataRestricted:
                NSLog(@"Restricrted");
                break;
                
            case kCTCellularDataNotRestricted:
                NSLog(@"Not Restricted");
                break;
                
                //未知,第一次请求
            case kCTCellularDataRestrictedStateUnknown:
                NSLog(@"Unknown");
                break;
                
            default:
                break;
        };
    };

AFNetworkReachabilityManager *mgr = [AFNetworkReachabilityManager sharedManager];
[mgr setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
        //获取联网可达状态
        switch (status) {
            case AFNetworkReachabilityStatusUnknown:
                NSLog(@"NetworkingTypeUnknown");
                break;
                
            case AFNetworkReachabilityStatusNotReachable:
                NSLog(@"NetworkingTypeNotReachable");
                break;
                
            case AFNetworkReachabilityStatusReachableViaWWAN:
                NSLog(@"NetworkingTypeReachableViaWWAN");
                break;
                
            case AFNetworkReachabilityStatusReachableViaWiFi:
                NSLog(@"NetworkingTypeReachableViaWiFi");
                break;
                
            default:
                NSLog(@"NetworkingTypeUnknown");
                break;
        }


转载链接:https://www.jianshu.com/p/2d3ef8b72986

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值