zoukankan      html  css  js  c++  java
  • iOS 处理应用第一次启动无法联网的情况

    iOS应用在客户第一次安装的时,会请求网络权限,此时就算用户点击了同意网络权限,网络请求此时可能也已经失败,需要在客户点击了同意的时候,重新发起新的网络请求
    监听网络权限这里采用CoreTelephony/CTCellularData.h这个库来监听,具体操作流程
    1、创建CTCellularData并监听网络状态(监听是在异步线程监听,如果设计到显示UI的需要到主线程刷新)
    2、监听到kCTCellularDataRestricted表示网络权限关闭,此时可能是用户第一次请求,所以在这里发起一次网络请求,app会自动弹出网络申请弹出,
    3、用户点击了运行网络会进入到kCTCellularDataNotRestricted这个状态下,此时 发起正常的网络请求,并且初始化系统(需要注意的是此时线程为异步线程)

    #if TARGET_IPHONE_SIMULATOR  //模拟器
        [self performSelectorOnMainThread:@selector(fetchProtocolVersionReq) withObject:nil waitUntilDone:YES];
    #elif TARGET_OS_IPHONE      //真机
       __block BOOL isNoNetToNet = NO;
        CTCellularData *cellularData = [[CTCellularData alloc] init];
        cellularData.cellularDataRestrictionDidUpdateNotifier=^(CTCellularDataRestrictedState state) {
            NSLog(@"%@",[NSThread currentThread]);
            switch(state){
                case kCTCellularDataRestricted:
                {
                    NSLog(@"Restricted  权限关闭的情况下 再次请求网络数据会弹出设置网络提示");
                    [self performSelectorOnMainThread:@selector(fetchProtocolVersionReq) withObject:nil waitUntilDone:YES];
                    isNoNetToNet = YES;
                }
                    break;
                case kCTCellularDataNotRestricted:{
                    NSLog(@"NotRestricted 已经开启网络权限 监听网络状态");
                    dispatch_async(dispatch_get_main_queue(), ^{
                        [self performSelector:@selector(fetchProtocolVersionReq) withObject:nil afterDelay:isNoNetToNet ? 1.0f : 0.0];
                        isNoNetToNet = NO;
                    });
                }
                    break;
                case kCTCellularDataRestrictedStateUnknown:
                    NSLog(@"Unknown 未知情况 (还没有遇到推测是有网络但是连接不正常的情况下)");
                    break;
                default:
                    break;
            }
        };
    #endif
    
  • 相关阅读:
    javascript定义
    JavaScript学习笔记
    PostgreSQL数据库配置
    python 时间戳转时间 timestamp to time
    WebGIS:Vue+Flask+PostGIS+Geoserver开发环境配置
    GeoServer环境配置
    Vue前端环境配置
    Flask后端环境配置
    1.顺序表
    汇编语法--AT&T VS. intel
  • 原文地址:https://www.cnblogs.com/qqcc1388/p/15559813.html
Copyright © 2011-2022 走看看