當(dāng)我們第一次下載一個(gè)全新app的時(shí)候也物,打開app會(huì)提示一些授權(quán)彈窗杯道,最主要的就是網(wǎng)絡(luò)夹厌,有的用戶點(diǎn)擊不允許使用網(wǎng)絡(luò)豹爹,那app將無(wú)法給用戶提供相應(yīng)的數(shù)據(jù)展示,這個(gè)時(shí)候矛纹,可以做一個(gè)彈窗提示帅戒,提示用戶去設(shè)置里打開網(wǎng)絡(luò)授權(quán)。
我這里需求是用戶在注冊(cè)時(shí)崖技,點(diǎn)擊獲取驗(yàn)證碼處給出提示
第一步:在你用到的地方引入頭文件#import <CoreTelephony/CTCellularData.h>
第二步:聲明一個(gè)字符串逻住,會(huì)來(lái)標(biāo)記該app的授權(quán)網(wǎng)絡(luò)狀態(tài)
@property(nonatomic, copy) NSString *netState;
第三步:檢測(cè)app授權(quán)網(wǎng)絡(luò)狀態(tài),在viewDidLoad里進(jìn)行調(diào)用
#pragma mark -- 檢測(cè)app是否授權(quán)網(wǎng)絡(luò)狀態(tài)
- (void)networkState{
? ? CTCellularData *cellularData = [[CTCellularData alloc]init];
? ? cellularData.cellularDataRestrictionDidUpdateNotifier = ^(CTCellularDataRestrictedState state){
? ? ? ? BOOL_isRestricted =YES;
? ? ? ? //獲取聯(lián)網(wǎng)狀態(tài)
? ? ? ? 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=@"無(wú)需開啟";
? ? ? ? }
? ? };
}
第四步:在獲取驗(yàn)證碼的按鈕點(diǎn)擊事件處迎献,先進(jìn)行判斷瞎访,網(wǎng)絡(luò)狀態(tài),如之前允許了網(wǎng)絡(luò)吁恍,正常進(jìn)行獲取驗(yàn)證碼的網(wǎng)絡(luò)請(qǐng)求扒秸;如之前拒絕了網(wǎng)絡(luò)授權(quán),則彈窗提示冀瓦,去設(shè)置里打開網(wǎng)絡(luò)授權(quán)
-(void)buttonClick{
? ? if([ self.netState isEqualToString:@"需開啟"]){
? ? ? ? dispatch_async(dispatch_get_main_queue(), ^{
? ? ? ? ? ? ? UIAlertController*alertVC = [UIAlertControlleralertControllerWithTitle:@"提示"message:@"您未授權(quán)“開本助手”網(wǎng)絡(luò)伴奥,請(qǐng)去設(shè)置里,開啟網(wǎng)絡(luò)授權(quán)"preferredStyle:UIAlertControllerStyleAlert];
? ? ? ? ? ? ? UIAlertAction *cancel = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {}];
? ? ? ? ? ? ? UIAlertAction *sure = [UIAlertAction actionWithTitle:@"去設(shè)置" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
跳轉(zhuǎn)設(shè)置? ? ? ? ? ? ? ?
? [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
? ? ? ? }];
? ? ? ? [alertVCaddAction:cancel];
? ? ? ? [alertVCaddAction:sure];
? ? ? ? [self presentViewController:alertVC animated:YES completion:nil];
? ? ? });
? ? ?}else{
? ? ? ? ? //正常的獲取驗(yàn)證碼的網(wǎng)絡(luò)請(qǐng)求
? ? ?}
}
注:
1翼闽、上面的檢測(cè)網(wǎng)絡(luò)狀態(tài)拾徙,應(yīng)該是屬于異步請(qǐng)求,如果你想在檢測(cè)網(wǎng)絡(luò)狀態(tài)那里感局,去做一些UI操作尼啡,比如彈窗寫在那里,會(huì)報(bào)錯(cuò)询微,記得寫上主線程里做UI的操作崖瞭,就可以了
2、跳轉(zhuǎn)設(shè)置撑毛,還需做一個(gè)配置
Targets -->info? -->URL Types, 加上prefs