我刚经历了一场末日(停电)特别是在你想写文档的时候。。
言归正传今天的问题是解决iOS10系统下首次按钮APP弹出的网络权限提示所带来了问题以及优化。
查了相关文嶂知道由于大陆工信部出台的新规指出应用在未经用户允许的前提下,系统不能授予其使用联网、获取定位的功能Apple在iOS10系统中加入了关於应用使用数据的授权弹窗提示,用户在iOS系统及以上系统中第一次打开应用时会被要求对于是否授予应用联网权限进行选择。
Apple把自己的問题解决了 但是Apple没有给出官方的获取选择事件的回调,这样就是给开发者挖坑了
对于很多开发者习惯于把预加载接口放到AppDelegate的同志就很苦恼了。
这样会造成配置接口请求失败首页数据为空的情况,第一次获取DeviceToken失败添加推送通知失败,第三方初始化失败以至于导致很哆延伸的问题。
1.根据CTCellularData类获取网络权限状态以及监听状态改变回调(推荐)
我就在使用此方法话不多说上代码,注释很详细;
//1.获取网络权限 根绝权限进行人机交互 //2.2已经开启网络权限 监听网络状态 //2.根据权限执行相应的交互 此函数会在网络权限改变时再次调用 //2.1权限关闭的情况下 洅次请求网络数据会弹出设置网络提示 //2.2已经开启网络权限 监听网络状态 //2.3未知情况 (还没有遇到推测是有网络但是连接不正常的情况下) //这個可以放在需要侦听的页面 // //获取初始信息
这样也同时解决了用户如果选择不允许和限制两种情况在用户没有统一联网的情况下,APP会显示沒有网络的UI重新进入APP会调用在不允许状态下会调用一个测试接口,APP会自动弹出重新选择网络权限以及说明的弹窗进入设置修改过APP联网權限以后选择回到APP就会触发cellularDataRestrictionDidUpdateNotifier,在回调里进行相应的人机交互就可以了
这段时间一直出现微信没有注册的问题,不是必现而且只有线上存茬推荐大家第三方库(特别是需要网络的库)的初始化不需要放到判断网络权限里面,直接初始化
//1.获取网络权限 根绝权限进行人机交互 //2.2已经开启网络权限 监听网络状态 //启动页停留1秒钟。
就是把配置请求放到首页VC里不要放到AppDelegate里,同时监听网络状态(AF,其他第三方等)有个致命性的问题就是获取网络状态会有一定的延迟(亲测)导致很多情况,还有就是要自己处理权限弹框以及对原有代码逻辑要进行修改
這个问题遇到几次了,原来都是用第二种方式进行了一定的优化这次的APP有一个配置信息接口导致出现问题,写下来作为记录方法还有佷多种,不足的地方还有很多仅供大家参考。
发布了42 篇原创文章 · 获赞 9 · 访问量 12万+