在iOS10上安装新App, 第一次打开时会询问用户"是否允许应用使用数据"(仅针对国行且需要连接移动网络的设备), 如下图所示, 在用户点击允许之前, App是无法联网的, 这意味着所有网络请求都是失败的.
询问用户”是否允许应用使用数据”问题
这个问题导致的直接结果就是用户进入首页时是一片空白, 对用户来说很不友好. 当前不少App都没有针对这个问题进行处理, 需要用户手动刷新, 当然也有做得比较好的,比如加一个”查看解决方案”之类的按钮, 告诉用户为什么会出现这种问题以及解决办法.
但是作为开发者, 感觉不能忍, 虽然主要原因可能是这个功能出的太仓促以至于苹果没来得及提供对应的API, 但是我们还是应该尝试去解决一下.
解决办法
其实方法很简单, 使用AFNetworking就可以搞定.
大家都知道, AFN可以监测网络状况, 当第一次监测到网络是WiFi或移动网络时就说明用户授权成功了, 这时候发个通知让首页重新加载就可以了.(似不似, 就这么简单嘛)
至于这个是不是第一次, 可以用钥匙串存储记录一下(什么? 你觉得太麻烦? 当然你不记录也行, 只是每次启动都会请求两次也没什么大不了)
经测试, 用户未点击允许之前, AFN监测到网络的状态是AFNetworkReachabilityStatusNotReachable, 点击允许后(如果手机网络是通畅的), 要么是WiFi要么是移动网络, 所以这个方案是可行的. Demo在这, 戳我下载
有人说使用CoreTelephony框架的CTCellularData也是可以的, 大家可以自行测试.
备注
这个方案仅针对第一次安装App时. 如果用户是更新App, 那么第一次启动时由于钥匙串没有获取到相应信息会误以为是第一次安装, 所以会导致首页数据请求两次, 个人觉得影响不大, 因为只是这一次会请求两次嘛. 最后, 如果大家有更好的方案可以拿出来分享一下(*^__^*)
网友评论