美文网首页iOS开发(OC)其它
ios 检测app是否授权网络

ios 检测app是否授权网络

作者: 肉肉要次肉 | 来源:发表于2020-05-06 11:30 被阅读0次

    当我们第一次下载一个全新app的时候,打开app会提示一些授权弹窗,最主要的就是网络,有的用户点击不允许使用网络,那app将无法给用户提供相应的数据展示,这个时候,可以做一个弹窗提示,提示用户去设置里打开网络授权。

    我这里需求是用户在注册时,点击获取验证码处给出提示

    第一步:在你用到的地方引入头文件#import <CoreTelephony/CTCellularData.h>

    第二步:声明一个字符串,会来标记该app的授权网络状态

    @property(nonatomic, copy) NSString *netState;

    第三步:检测app授权网络状态,在viewDidLoad里进行调用

    #pragma mark -- 检测app是否授权网络状态

    - (void)networkState{

        CTCellularData *cellularData = [[CTCellularData alloc]init];

        cellularData.cellularDataRestrictionDidUpdateNotifier = ^(CTCellularDataRestrictedState state){

            BOOL_isRestricted =YES;

            //获取联网状态

            switch(state) {

                case kCTCellularDataRestricted:

                    NSLog(@"Restricted");//拒绝

                    break;

                case kCTCellularDataNotRestricted:

                    _isRestricted =NO;

                    NSLog(@"Not Restricted");//允许

                    break;

                case kCTCellularDataRestrictedStateUnknown:

                    NSLog(@"Unknown");//未知

                    break;

                default:

                    break;

            };

            if(_isRestricted ==YES) {

                self.netState=@"需开启";

            }else{

                self.netState=@"无需开启";

            }

        };

    }

    第四步:在获取验证码的按钮点击事件处,先进行判断,网络状态,如之前允许了网络,正常进行获取验证码的网络请求;如之前拒绝了网络授权,则弹窗提示,去设置里打开网络授权

    -(void)buttonClick{

        if([ self.netState isEqualToString:@"需开启"]){

            dispatch_async(dispatch_get_main_queue(), ^{

                  UIAlertController*alertVC = [UIAlertControlleralertControllerWithTitle:@"提示"message:@"您未授权“开本助手”网络,请去设置里,开启网络授权"preferredStyle:UIAlertControllerStyleAlert];

                  UIAlertAction *cancel = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {}];

                  UIAlertAction *sure = [UIAlertAction actionWithTitle:@"去设置" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {

    跳转设置               

      [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];

            }];

            [alertVCaddAction:cancel];

            [alertVCaddAction:sure];

            [self presentViewController:alertVC animated:YES completion:nil];

          });

         }else{

              //正常的获取验证码的网络请求

         }

    }

    注:

    1、上面的检测网络状态,应该是属于异步请求,如果你想在检测网络状态那里,去做一些UI操作,比如弹窗写在那里,会报错,记得写上主线程里做UI的操作,就可以了

    2、跳转设置,还需做一个配置

    Targets -->info  -->URL Types, 加上prefs

    相关文章

      网友评论

        本文标题:ios 检测app是否授权网络

        本文链接:https://www.haomeiwen.com/subject/aimightx.html