俗话说:善始者实繁,克终者盖寡.已经有5个多月没有更新简书,真的感到羞愧.没时间,工作忙,都是自己给自己开脱的借口.希望看到这篇文章的人不要像我一样,做任何事,都要坚持下来!
鸡汤的话,就不扯了,我们还是进入正题要紧.苹果要求2016年6月1号之后提交AppStore的所有App必须支持IPv6网络.此消息一出,iOS开发者们的面部表情是什么样子的,大家可以自行脑补.但是最多三天之后,我们还是得硬着头皮来面对这个事实,因为抱怨并不能让苹果做出任何让步和妥协.
看到这一消息时,我也很慌张,上网查阅各种资料,毕竟现在中国的网络还是IPv4.如何搭建网络环境验证我们的APP支持不支持IPv6的网络,简书上已经有很多这样的文章了,不会的人可以去搜索一下.我记得我们是在7月15号左右发布的一个版本,上线前按照网上的教程,搭建了IPv6的环境,然后,打包,测试,一切都没有问题.然后就信心满满的提交AppStore审核了,2-3天过后,成功通过.于是自信心就爆棚了.小宇宙就爆炸了,原因如下:
1.网上有人说适配IPv6网络AFN需要升级到最新的3.0版本,但是又有人说不需要(AFN从2.0版本升级到3.0版本改动还是有点大的).我们没有升级照样审核通过.
2.网上有人说第三方的SDK(友盟,环信,听云,QQ,微信,支付宝,微博等)也需要适配IPV6,所以需要升级到最新的版本,我们没有升级一个照样审核通过.
3.关于适配IPv6需要改动的东西,我们一个都没有动,照样审核通过.
后来,我们在开发直播版本之后,提交审核,照样通过.至此我们所有的人也就没有再理会IPv6的东西了,这期间有人也问过我关于IPv6的东西,我当时还很鄙视他们,信心满满地说,我们的App什么都没改,照样木问题!!!后来我一个特别好的朋友也问我相关的东西,问我们这边IPv6的东西是什么搞的,他们已经被拒好多次了,我就把我们实际的情况给他讲了下,他说:
根据他的经验,AppStore上的应用过于繁多,苹果一下子也忙不过来,对于IPv6的问题,苹果应该是对比较新的APP审核严格,但是对于一些2011年左右就上线的App,先放一边,给他们个缓冲的时间.因为老的APP改动起来很费劲,花费的时间多!
你们的APP没有任何改动,还能审核通过可以肯定你们运气很好,但是这事情,你最好仔细排查下,毕竟好多APP都因为这个原因被拒了.
支付宝之前的SDK就不支持IPv6,现在支持了,如果此问题不严重,我想支付宝是不会升级支持ipv6的.但是你们并没有更新,所以我感觉你们APP在未来某一段时间,苹果腾出手,就开始排查你们这些"资格老"的APP了, 因为已经给你们修改和缓冲的时间了.
听完他说的,说实话我还是有点鄙视的想法,也就没有在意.截止到iOS10正式发布之前,我们发的所有的版本都没有因为IPv6的问题被拒过.然后黑色一段时间就来了,因为我们是做电商的,双十一这一版本对我们格外重要.按照往常,开发完,测试提交AppStore审核,被拒了!!!!!!!心中一亿只草泥马奔腾而过.公司领导也惊动了,因为这是电商的年度盛宴啊,双十一版本如果审核不过,那么损失是无法估量的.没办法,全组成员熬夜加班来搞这个(现在想想都心里害怕).
开始我们还是按照之前的流程,搭建环境,测试页面,都没有问题,然后信息满满得提交AppStore,结果就是原封不动的给你打回来,邮件里写明:IPv6审核不过!!!我靠,发生了什么灵异事件,苹果大叔是要玩死我们这个几个宝宝吗?具体的情况也给CTO说了,我们测试的的确没有问题,但是我们的CTO好像不满意我们的答案.我们实在不想改动这个已经年过花甲的APP,因为工程太大了,改的话,我们这几个宝宝真的会因为加班猝死的.但是,不改吧,也找不到原因,那么,就硬着头皮来了.全组熬夜加班,改项目.
经过一次史诗级的战役过后(双十一版本因为IPv6被拒了5次),我们的APP在11月3号审核通过了.谢天谢地.还好赶上了双十一,没有死的太惨.
上面啰嗦了一箩筐没有用的东西,是因为我真的是记忆犹新啊,情不自禁地就说了这么多,宝宝心里实在是苦水太多了,没有把握好这篇文章的要点,请各位看官见谅.下面说说我们这个2011年就上线的APP关于IPv6的适配都做了哪些调整:
1.AFN网络请求升级3.0版本.我们这个旧项目里有3种网络请求方式:1.基于苹果原生的Http请求;2.ASI网络请求;3.AFN2.0版本网络请求.所以我们重新基于AFN3.0版本封装了一套网络请求,替换了之前的所有的网络请求.这项改动是最大的,因为网络请求不单单是更换,换完之后还得测试有木有bug.
2.升级友盟,环信,听云,QQ,微信,支付宝,微博等第三方SDK,在升级之前跟对应的公司咨询,你们最新的SDK支持不支持IPv6.这也是个不大不小的工作,因为升级过后的这些第三方SDK,有的已经把里面好多方法都改了(包括方法的名字,参数).升级过了,重新反复测试,看看之前的业务逻辑还能不能走通,如果不能,还得找产品撕逼,修改下业务逻辑.
3.第三方网络状态监测Reachability更换苹果原生的Reachability.这一点是最最坑爹的,我们项目检测网络状态没有用AFN自带的方法,原因就不说了,用到的是第三方Reachability.原本以为升级一下,就搞定了 ,谁知道还是被拒,原因还不给说明白,反正就是IPv6审核不过,然后去GitHub上看这个第三方的Reachability介绍,人家开头就写了个大大的警告:WARNING there have been reports of apps being rejected when Reachability is used in a framework. The only solution to this so far is to rename the class.大致的意思就是:应用程序已经有报告时可达一个框架用于被拒绝。解决这个问题的唯一解决方案到目前为止是重命名类。然后我们就按照这个改了下,重新提交AppStore审核,还是被拒.妈蛋,真要被玩死了.骂了大概1个小时街后,还得冷静下来继续找问题.最后再苹果的官方文档里找了一个也叫Reachability的东西,用自己英语4级的水平看过之后,发现我们的苹果也出了一个一模一样的Reachability(感觉苹果也在借鉴江湖上的一些'灵丹妙药'来给自己治病,这一点从文档注释VV又加以了验证),我这里说的一样只是名字上的一样,但是里面的内容90%的也一样,剩下10%的不同,我们的APP就审核不过.下图才是苹果的"正房",其他的都是"小三"!
最后:
关于IPv6网上的资料整理:ipv6审核被拒绝的解决方案
关于IPv6的审核,我们的后台服务器也做了点相应的调整,建了一个专门的IPv6的通道.这一块我不怎么了解,但是我们知道服务器做了这个调整.
Https将在2017.01.01正式推行,关于这一块,我们的APP换成AFN3.0之后,经测试之前的数据加载慢,加载不出来的问题也没有了,所以有这一块的需求的记得也换一下.
如果当初我能重视我那个好朋友说的话,可能就不需要过这段提心吊胆的日子了,所以一定要摆正好自己的心态,不要太过狂妄自大.