当我们第一次下载一个全新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
网友评论