当前位置: 首页 > news >正文

扶风高端企业网站建设深圳做兼职的网站设计

扶风高端企业网站建设,深圳做兼职的网站设计,wordpress 柒比贰主题,wordpress用户前端化我刚经历了一场末日#xff08;停电#xff09;#xff0c;特别是在你想写文档的时候。。。 言归正传#xff0c;今天的问题是解决iOS10系统下首次按钮APP弹出的网络权限提示所带来了问题以及优化。 起因 查了相关文章知道由于大陆工信部出台的新规指出#xff0c;应用在未… 我刚经历了一场末日停电特别是在你想写文档的时候。。。 言归正传今天的问题是解决iOS10系统下首次按钮APP弹出的网络权限提示所带来了问题以及优化。 起因 查了相关文章知道由于大陆工信部出台的新规指出应用在未经用户允许的前提下系统不能授予其使用联网、获取定位的功能。Apple在iOS10系统中加入了关于应用使用数据的授权弹窗提示用户在iOS系统及以上系统中第一次打开应用时会被要求对于是否授予应用联网权限进行选择。 问题 Apple把自己的问题解决了 但是Apple没有给出官方的获取选择事件的回调这样就是给开发者挖坑了。 对于很多开发者习惯于把预加载接口放到AppDelegate的同志就很苦恼了。 这样会造成配置接口请求失败首页数据为空的情况第一次获取DeviceToken失败添加推送通知失败第三方初始化失败以至于导致很多延伸的问题。 解决 1.根据CTCellularData类获取网络权限状态以及监听状态改变回调推荐 我就在使用此方法。话不多说上代码注释很详细 添加CoreTelephony系统库在AppDelegate.m里#importCoreTelephony/CTCellularData.h [objc] view plain copy - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {      // Override point for customization after application launch.            //1.获取网络权限 根绝权限进行人机交互      if (__IPHONE_10_0) {          [self networkStatus:application didFinishLaunchingWithOptions:launchOptions];      }else {          //2.2已经开启网络权限 监听网络状态          [self addReachabilityManager:application didFinishLaunchingWithOptions:launchOptions];      }            //初始化window      self.window  [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];      [self.window setBackgroundColor:[UIColor whiteColor]];        //    //创建UI      [self createWindowRootWithType:2];            [self.window makeKeyAndVisible];      return YES;  }    /*  CTCellularData在iOS9之前是私有类权限设置是iOS10开始的所以App Store审核没有问题  获取网络权限状态  */  - (void)networkStatus:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {      //2.根据权限执行相应的交互      CTCellularData *cellularData  [[CTCellularData alloc] init];            /*      此函数会在网络权限改变时再次调用      */      cellularData.cellularDataRestrictionDidUpdateNotifier  ^(CTCellularDataRestrictedState state) {          switch (state) {              case kCTCellularDataRestricted:                                    NSLog(Restricted);                  //2.1权限关闭的情况下 再次请求网络数据会弹出设置网络提示                  [self getAppInfo];                  break;              case kCTCellularDataNotRestricted:                                    NSLog(NotRestricted);                  //2.2已经开启网络权限 监听网络状态                  [self addReachabilityManager:application didFinishLaunchingWithOptions:launchOptions];  //                [self getInfo_application:application didFinishLaunchingWithOptions:launchOptions];                  break;              case kCTCellularDataRestrictedStateUnknown:                                    NSLog(Unknown);                  //2.3未知情况 还没有遇到推测是有网络但是连接不正常的情况下                  [self getAppInfo];                  break;                                default:                  break;          }      };  }    /**  实时检查当前网络状态  */  - (void)addReachabilityManager:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {      AFNetworkReachabilityManager *afNetworkReachabilityManager  [AFNetworkReachabilityManager sharedManager];            //这个可以放在需要侦听的页面      //    [[NSNotificationCenter defaultCenter]addObserver:self selector:selector(afNetworkStatusChanged:) name:AFNetworkingReachabilityDidChangeNotification object:nil];      [afNetworkReachabilityManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {          switch (status) {              case AFNetworkReachabilityStatusNotReachable:{                  NSLog(网络不通%,(status) );                  break;              }              case AFNetworkReachabilityStatusReachableViaWiFi:{                  NSLog(网络通过WIFI连接%,(status));                  if (self.mallConfigModel  nil) {                     [self getInfo_application:application didFinishLaunchingWithOptions:launchOptions];                  }                  break;              }              case AFNetworkReachabilityStatusReachableViaWWAN:{                  NSLog(网络通过无线连接%,(status) );                  if (self.mallConfigModel  nil) {                      [self getInfo_application:application didFinishLaunchingWithOptions:launchOptions];                  }                  break;              }              default:                  break;          }      }];            [afNetworkReachabilityManager startMonitoring];  //开启网络监视器  }    - (void)getInfo_application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {            //第三方库初始化      [self initValueThirdParty:application didFinishLaunchingWithOptions:launchOptions];        //    //获取初始信息      [self initData];            //添加通知      [self addNotification];  }   这样也同时解决了用户如果选择不允许和限制两种情况在用户没有统一联网的情况下APP会显示没有网络的UI重新进入APP会调用在不允许状态下会调用一个测试接口APP会自动弹出重新选择网络权限以及说明的弹窗进入设置修改过APP联网权限以后选择回到APP就会触发cellularDataRestrictionDidUpdateNotifier在回调里进行相应的人机交互就可以了。 2.延迟请求 就是把配置请求放到首页VC里不要放到AppDelegate里同时监听网络状态(AF,其他第三方等有个致命性的问题就是获取网络状态会有一定的延迟亲测导致很多情况还有就是要自己处理权限弹框以及对原有代码逻辑要进行修改。 总结 这个问题遇到几次了原来都是用第二种方式进行了一定的优化这次的APP有一个配置信息接口导致出现问题写下来作为记录方法还有很多种不足的地方还有很多仅供大家参考。 转载于:https://www.cnblogs.com/Free-Thinker/p/8303261.html
http://www.zqtcl.cn/news/603931/

相关文章:

  • 赣州本地网站网站怎么写
  • 物业公司网站设计湛江做网站软件
  • 做招聘求职网站wordpress启用插件出错
  • 珠海网站运营网站个人备案流程
  • 网站开发用什么图片格式最好网络营销名词解释是什么
  • 做柜子网站老电脑做网站服务器
  • 域名购买网站网店装修是什么
  • wordpress 网站备份为什么企业要建设自己的企业文化
  • 想做一个部门的网站怎么做潍坊网站建设价
  • 网站建设公司的公司哪家好什么行业必须做网站
  • 电子商务网站前台设计wordpress 上传文件大小
  • 深圳市住房和城乡建设局网站非常好的资讯网站设计
  • 长春作网站建设的公司国家建设环保局网站
  • 网站开发的有哪些好的软件wordpress菜单栏的函数调用
  • 家庭清洁东莞网站建设技术支持建筑模板厂投资多少钱
  • 郑州企业建站详情网站开发和网页开发有什么区别
  • 山西古建筑网站个人网站可以做自媒体吗
  • 腾讯云服务器可以做网站wordpress中文正式版
  • 做相亲网站赚钱吗vultr部署wordpress
  • 网站被挂马原因做网站较好的框架
  • 网站开发毕业设计参考文献自考大型网站开发工具
  • p2p网站建设方案策划书黄山旅游攻略冬季
  • 最世网络建设网站可以吗小说网站制作开源
  • 广州网站建设知名 乐云践新网页界面制作
  • 沈阳网站哪家公司做的好招标信息发布
  • 兰州企业网站h5页面用什么软件
  • 东莞自助建站软件ppt怎么做 pc下载网站
  • 兴化网站建设价格怎样用自己的电脑,做网站
  • 东莞网站建设企慕网站名称 注册
  • 佛山网站建设服务商百度推广客户端手机版下载