iOS 10 的坑:新机首次安装 app,请求网络权限“是否允许使用数据”_前进的火车_新浪博客...


这个坑最近弄得我很抓狂,不过现在基本弄清楚了。记录一下过程中我收集到的信息,分享给大家。

症状

iOS 10 之后,陆陆续续地有用户联系我们,说新机第一次安装、第一次启动的时候,app 首屏一片空白,完全没数据。kill 掉重新打开就好了。

一开始以为是用户网络情况不好,但随着越来越多的用户报告这个问题,我意识到这并不是偶然情况。但是并非所有用户都如此。

而且卸载掉之后,如果再装,也不会出现这现象。问题只会出现在这台设备第一次安装、第一次启动的情况下。如果把手机抹掉、重置,问题还能重现。

定位问题

这个问题真的很棘手,也很难定位。幸运的是,公司同事想到把手机抹掉重置,得以在我眼前重现问题。

我发现的是,app 首次启动会弹出一个询问用户“是否允许应用访问数据”的弹框,类似下图:

1.png

询问网络权限的弹框

虽然 app 刚打开的时候是一片空白,但我发现进去之后,登录、下拉刷新等都没问题。因此很容易猜测出这样的结论:用户点“允许”之前,网络请求全都是失败的;而点“允许”之后,网络请求就能正常进行了。

问题原因

有了方向之后就好查了。很快查到了掘金的这篇文章,得知这个弹框来自于工信部的要求。这篇文章里还有如果弹框不出现,用户可以采取的解决方案。另外,从少数派的这篇文章 看到,只有国行手机有这个功能。这也就解释了为何有些用户出现、而有些用户没出现这个问题。

2.png

蜂窝移动网络的两种界面

进到手机的 设置->蜂窝移动网络,如果看到如左图就说明是不会弹框的机型,如果看到如右图,说明是会弹框的机型。

那么这个新功能会为用户带来哪些问题呢?问题主要在于,用户点击“允许”之前,所有网络请求都是被禁止的。具体有两种表现:

少部分用户根本不显示弹框,所以网络请求一直被禁止。针对这部分用户,只能通过客服引导,按照掘金的这篇文章,逐个尝试里面的解决方案;

对于绝大部分用户,弹框会正确显示;然而从 app 启动到用户点击“允许”需要一段时间,在这段时间内发出的网络请求全都会直接失败;

如果用户点击“不允许”,app 永远无法访问网络,Wifi 和数据流量均不可以。当然,这是用户自己的选择,我们没什么可做的。我们主要需要解决的是上面的第二个问题。

影响范围

这个特性推出之后,大部分 app 应该都会受到不同程度的影响。可以着重在这几个方面检查一下自己的 app:

  1. 首屏数据。首屏几个 tab 的数据往往在 app 启动时即加载,也就是在用户点“允许”之前。很容易造成用户第一次进入时,首屏数据空白。

  2. 推送。通常的处理逻辑是,把注册设备远程推送的代码写在 appDelegate 里。经过测试发现,这种写法下允许推送的弹框和允许使用网络的弹框出现的顺序没有一定。如果先出允许推送的弹框,用户点击允许,此时注册 deviceToken 是不能成功的。当然如果用户允许访问网络,第二次打开 app 时也会走一遍注册远程推送方法,此时就能注册成功了。

  3. 其他首次启动的处理。诸如广告页、活动页之类,需要在启动时请求的数据。新版本的更新检查往往也在启动时进行,但这一点影响不大,因为首次打开的用户一般都是处于最新版。另外,常常会在新设备首次启动时,上传一个设备唯一标识用于统计目的,例如 IDFA。

解决方案

在重置过的手机上,尝试装了一些大大小小的 app,发现不少 app 在适配这个新特性上都存在一些小问题。而有些 app 也做了比较有特色的处理。

不幸的是,苹果这个功能可能出得太仓促,并没有给开发者提供相应的 API。所以,我们没办法检测到用户点击“允许”或“不允许”网络请求的回调,也没法检测到当前用户是否授权的状态。只能通过一些特殊处理,来尽量减小对用户的影响。

总体来说,主要有如下几个解决方案:

  1. 延迟请求。对于首次启动的所有接口,如果能延迟到用户点击“允许”之后再请求,或者重新请求一次,就能把对用户的影响降到最低,是一个比较好的解决方案。因为首次启动往往有几屏引导页,一个比较好的时机是引导页结束时。此时用户已经进行了授权,数据都能正确得到。所以我自己的做法是把请求推迟到了引导页。另外下面评论里饶志臻大神提了一个特别好的思路,就是用 AFN 监听网络状态,有网时开始请求。虽然没有试过(我自己手机不是国行,不太好实验),但感觉应该也能比较完美地处理这个问题。

  2. 允许用户手动重新请求。出现数据空白时,如果在空白页面上有“重新加载”的按钮,也可以让用户体验好一些。比较有趣的是,测试中发现网易严选的处理是这样的:

4.png

网易严选的首屏界面


加了一个“查看解决方案”的按钮。点击这个按钮会跳转到一个描述解决方案的页面,内容跟上面掘金的文章类似。很有意思的处理,虽然不能避免白屏,但用户会尝试重新打开,还可以帮到少部分始终不显示弹框的用户。

 3、稍后重新请求。网络框架如果做了请求失败时,定时重新请求的处理,应该也能解决首次请求失败的问题。另外,首次启动时各种处理的逻辑都可以写成一旦失败,下次启动重试。如每次启动都会注册远程推送。另一个例子是上传设备唯一标识的逻辑,可以写成类似这样:

1
2
3
4
5
6
7
8
9
10
NSString *storedIDFA = [[NSUserDefaults standardUserDefaults] objectForKey:kIDFAKey];
NSString *idfaString = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
if  ([storedIDFA isEqualToString:idfaString]) {  
   return ;
   }
   [HAMCommonBusinessStore requestUploadIDFA:idfaString success:^(id response) {
        
      [[NSUserDefaults standardUserDefaults] saveObject:idfaString forKey:kIDFAKey];
      
      }];

每次打开 app 都调用这段代码,而上传成功时才保存到本地。这样首次请求失败也无妨,下次打开时仍能重试上传,直到成功为止。

开发者的无奈

临时出现这种变故,作为开发者也表示很无奈。为了排查问题,技术同事牺牲手机反复重置,老板还一副不相信的样子:“那其他家 app 怎么就没出问题?”

好在总算能用各种特殊处理,把问题先掩盖过去。还是希望苹果能在 iOS 系统的新版本里完善这个新功能,提供类似相机权限的 api 吧。不要再折磨广大开发者了。


转载自:http://www.cocoachina.com/ios/20161125/18181.html




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要在iOS设备上安装1024app_ios_2.3.3.ipa,首先需要确保您的设备已越狱。如果您的设备已越狱,您可以通过以下步骤来安装: 1. 下载并安装iTools或Cydia Impactor等iOS应用程序安装器,您可以在互联网上轻松找到这些程序。 2. 下载1024app_ios_2.3.3.ipa文件,并将其拖放到iTools或Cydia Impactor中。 3. 连接您的iOS设备到电脑上,并启动iTools或Cydia Impactor。 4. 在iTools或Cydia Impactor中,找到您下载的1024app_ios_2.3.3.ipa文件,并将其安装到设备上。 5. 安装完成后,您可以在设备的主屏幕上找到该应用程序,并使用它。 需要注意的是,安装第三方应用程序可能会影响您的设备的稳定性和安全性。因此,请确保您下载的文件源可信,并注意您的设备被恶意软件攻击的风险。除此之外,还需要注意,随着iOS版本的更新,某些应用程序可能不再兼容,因此请确保您的iOS系统版本与该应用程序兼容。 ### 回答2: 1024app_ios_2.3.3.ipa是一个iOS应用程序的安装包。通常情况下,在iOS设备上安装应用程序,我们可以通过App Store来下载和安装。但是有时候,我们可能需要通过其他的方式来安装应用程序。 对于1024app_ios_2.3.3.ipa,我们可以通过以下的步骤进行安装: 1. 首先,我们需要将1024app_ios_2.3.3.ipa文件下载到我们的电脑或者Mac上。 2. 然后,我们需要将我们的iOS设备与电脑或Mac连接,打开iTunes软件。 3. 在iTunes软件中,点击“文件”选项,并选择“添加文件到库”或者“添加文件夹到库”,选择我们下载好的1024app_ios_2.3.3.ipa文件。 4. 然后我们需要将我们的iOS设备连接到电脑或Mac上,然后在iTunes软件中选择我们的设备,点击“应用”选项卡。 5. 在“应用”选项卡中,我们可以看到“文件共享”部分,选择我们需要安装的应用程序,然后点击“添加”按钮。 6. 直到该应用程序出现在我们的设备上,就表示该应用已经被成功安装。 需要注意的是,如果我们使用以上的方法安装应用程序,需要保证我们的iOS设备已经越狱。越狱后安装应用程序时,请务必注意是否为可靠的来源,避免因为应用程序源不可靠而遭受损失。 总的来说,1024app_ios_2.3.3.ipa的安装需要通过iTunes软件来完成,需要注意数据和设备的安全问题。同时,我们也可以使用其他的安装工具来完成安装,但是需要保证安装的可靠性和安全性。 ### 回答3: 1024app_ios_2.3.3.ipa是一款IOS系统的手机应用程序,如果你拥有这个文件,想要在自己的IOS设备上安装这个程序,那么可以按照以下步骤进行操作: 第一步:下载和安装iTunes软件 首先需要下载和安装iTunes软件,这个软件是苹果官方提供的一个多功能管理工具,可以用来管理你的IOS设备、备份和恢复数据、下载和更新应用等。下载iTunes的方法可以在苹果官网上找到,也可以通过第三方软件下载网站进行下载,安装完毕后,将iPhone连接到电脑上。 第二步:安装iTools软件 iTools可以理解为第三方的iTunes软件,也可以管理数据和软件,因为它界面简单易用所以被广泛地使用。下载iTools的方法可以在网站上找到,安装完毕后,将手机连接到电脑上。 第三步:将IPA文件拖入iTools软件中 把下载好的1024app_ios_2.3.3.ipa拖入iTools的应用程序的区域即可。iTools会自动执行安装过程,如果安装时间较长,请耐心等待,不要中途中断。 第四步:安装完成后打开应用 当安装完成后,在你的IOS设备上就会出现1024app的图标了,点击即可打开应用。如果出无法打开的提示,请检查设备是否已经越狱和IPA文件是否正确。 最后要提醒的是,在进行这个操作前需要确保IPA文件的来源是可信的,以免安装过程中的风险。 总之,通过这个方法,你就能够用1024app_ios_2.3.3.ipa安装你需要的IOS应用程序,让你的设备功能更加的强大。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值