[iOS] “是否允许“xxx”使用数据”,在iOS10之后,首次安装App会弹框让用户授权,问题解决方案。

一、为什么会弹 “是否允许使用数据”?

  因为按照我们天朝的工信部要求,用户再使用应用的过程中,如果要使用移动数据必须要用户授权,其实这是好事,是为了保护用户的流量或者话费不会无端的被扣除。所以苹果在 iOS10 之后,在首次安装应用时会弹 “是否允许使用数据”,然而只是在国行手机上才会弹,所以这也是为什么只是部分用户反馈会弹。而且这个弹框只会弹一次,即使卸载再安装也不会再弹,除非把手机系统重置。所以为了解决这个问题,我们技术的同学反复牺牲手机重置来测试这个问题。有可能导致的问题:1.首页空白;2.如果启动时需要请求配置信息,会导致拿不到相应的配置信息。总归就是授权前所有请求都是失败的。

二、弹 “是否允许使用数据” 会导致什么问题?

  由于不授权,也就是用户在点“允许”之前,网络请求全都是失败的,而点了“允许”之后,网络请求才能正常进行,这样就会导致一个问题:在应用启动还没来得及弹网络授权框的时候,我们已经进行了数据请求,这个时候主要请求一些应用的配置信息或者是和后台约定的一些数据、Token 等;还有可能已经请求了首页的数据。所以在没授权之前这些请求都是失败的。可能苹果也是暂时应对工信部的一个策略,处理的比较仓促,所以并没有提供类似相册、相机授权相关的API,这样就比较头疼了,但是问题总归是有应对的办法。

三、解决方案

  在这里我先介绍下我的解决方案:一般我们的应用在第一次启动的时候都会有特性图有人叫引导图(就是需要滑动的那几张图),好在显示特性图的时候,网络授权弹框就已经弹出来了,而且必须用户点了“允许”或者“不允许”之后才能滑动特性图,如果用户点了“不允许”,网络请求将会一直失败,不过这是用户的决定与我们就无关了。当用户点了“允许”,再滑动特性图,这个时候请求就是正常的了,所以我的处理办法是之前启动的逻辑不变,以免可能会影响到用户体验,只是在用户滑到最后一张图片的时候重新请求需要请求的接口,这样就解决了首次启动应用首页空白等一系列问题;但是这样对于非国行手机就有个小问题:启动时请求的哪些接口会重复一次,不过这也不是大问题,总比第一次首页空白要好的多吧,而且这对于用户是无感知的。当然如果不想重复请求,可以把请求都放在滑完特性图之后,但是记得一定要分情况,因为第二次启动就不弹特性图了。当然还有其他的一些解决方案:1.启动不做处理当进入首页,放一个加载失败的按钮,如果失败用户会点击按钮,这个时候再去重新请求。2.还有人提出可以监听网络框架请求失败时,定时重新请求的处理,应该也能解决首次请求失败的问题。具体怎么解决各个应用有不同情况,需要根据实际情况去处理。

时间: 2024-08-11 05:30:34

[iOS] “是否允许“xxx”使用数据”,在iOS10之后,首次安装App会弹框让用户授权,问题解决方案。的相关文章

iOS 10 的坑:新机首次安装 app,请求网络权限“是否允许使用数据”

这个坑最近弄得我很抓狂,不过现在基本弄清楚了.记录一下过程中我收集到的信息,分享给大家. 症状 iOS 10 之后,陆陆续续地有用户联系我们,说新机第一次安装.第一次启动的时候,app 首屏一片空白,完全没数据.kill 掉重新打开就好了. 一开始以为是用户网络情况不好,但随着越来越多的用户报告这个问题,我意识到这并不是偶然情况.但是并非所有用户都如此. 而且卸载掉之后,如果再装,也不会出现这现象.问题只会出现在这台设备第一次安装.第一次启动的情况下.如果把手机抹掉.重置,问题还能重现. 定位问

iOS开发网络篇—XML数据的解析

iOS开发网络篇—XML数据的解析 iOS开发网络篇—XML介绍 一.XML简单介绍 XML:全称是Extensible Markup Language,译作“可扩展标记语言” 跟JSON一样,也是常用的一种用于交互的数据格式,一般也叫XML文档(XML Document) XML举例 <videos> <video name="小黄人 第01部" length="30" /> <video name="小黄人 第02部&qu

iOS开发之十六进制颜色数据转化为UIColor对象

1.若从服务器返回的颜色字符串数据为 hexColor:"09B57A" hexColor分为三部分:09.B5.7A 分别对应三色值 R.G.B 十六进制 十进制 00 0 01 1 ... ... 09 9 0A 10 0B 11 ... ... 0F 15 10 16 11 17 12 18 ... ... 1F 31 ...   FF 255         代码如下: 1 - (UIColor *)getColor:(NSString *)hexColor 2 { 3 uns

IOS中利用NSKeyedArchiver进行数据的归档和恢复

1.相关知识点: <1> 可以利用NSKeyedArchiver 进行归档和恢复的对象类型:NSString .NSDictionary.NSArray.NSData.                        NSNumber等 <2> 使用是必须遵循NSCoding协议对象,实现两个方法: encodeWithCoder:归档对象时,将会调用该方法. initWithCoder:每次从文件中恢复对象时,调用该方法. 2.简单例子阐述详细步骤 <1> 创建一个学生

iOS开发网络篇—JSON数据的解析

iOS开发网络篇—JSON数据的解析 iOS开发网络篇—JSON介绍 一.什么是JSON JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外) JSON的格式很像OC中的字典和数组 {"name" : "jack", "age" : 10} {"names" : ["jack", "rose", "jim

(转)iOS XML JSON SQLite CoreData 数据持久化

一.文件操作 1.因为应用是在沙盒(Sandbox)中的,在文件读写权限上受到限制,只能在几个目录下读写文件: * Documents:应用中用户数据可以放在这里,iTunes备份和恢复的时候会包括此目录 * tmp:存放临时文件,iTunes不会备份和恢复此目录,此目录下文件可能会在应用退出后删除 * Library/Caches:存放缓存文件,iTunes不会备份此目录,此目录下的文件不会在应用退出删除 2.相关方法:       # 使用NSSearchPathForDiretoriesI

iOS 学习笔记——0005(数据存储)

先发一个练手的小demo,自己写的简略通讯录,已上传至github https://github.com/liaoshaolim/addressBook 1.NSKeyedArchiver:(归档) 这里用一个添加联系人的例子来说明: 注意:归档形式保存数据,需要该对象遵守NSCoding协议,而且对应的必须提供encodeWithCoder和initWithCoder方法 因为归档是一次性的,解压也是一次性的,所以小量的ok,如果量大的话,改一个小地方就要归档或解压全部,效率会比较低 //用一

零基础iOS之Json及XML数据解析2

零基础iOS之Json及XML数据解析http://www.cnblogs.com/dingjianjaja/articles/4798604.html

关于iOS去除数组中重复数据的几种方法

关于iOS去除数组中重复数据的几种方法 在工作工程中我们不必要会遇到,在数组中有重复数据的时候,如何去除重复的数据呢? 第一种:利用NSDictionary的AllKeys(AllValues)方法 可以将NSArray中的元素存入一个字典,然后利用AllKeys或者AllValues取得字典的所有键或值,这些键或值都是去重的.代码: NSArray *dataArray = @[@"2014-04-01",@"2014-04-02",@"2014-04-