iOS上线IPv6被拒

苹果公司规定从2016年6月1日开始所有新上架的app开始审核IPv6的支持,至于原因大家都知道。从5月份开始我们的app就开始为了这个规定修改网络请求,值得庆幸的是一直上线都很顺利。从8月份开始陆陆续续的就有朋友说他们的app因为IPv6的原因被拒了,当时我还一直以为是因为他们的服务器不支持IPv6的原因,不过他们一般都是第二天重新提交就会通过,总之就是稀里糊涂的就上线了,我们的项目在最近一次提审终于也因为IPv6被拒了。可是我们从6月份开始就一直没有修改过网络请求啊,为什么以前都没事,只有这次被拒啦,不可能是因为以前苹果审核没有审核这个方面的,于是开始各种查资料,各种研究,终于发现了原因。

首先说一下app网络请求的过程:

图片.png

这个官网上给出的一个流程图,首先app发送一个IPv6的网络请求,然后在DNS服务器会先解析你这个IPv6看看路由里面有没有这个IPv6的地址,如果有的话会直接找到这个地址并且链接,如果没有找到这个地址的话DNS64会自动把这个IPv6的地址转换成IPv4的地址,如果能找到就会把这个当成你要访问的地址,如果还是找不到的话就会返回找不到地址。
那么为什么苹果公司审核有的时候能够通过,而有的时候不能通过呢?那是因为咱们的DNS都是在国内的,而苹果是在美国的IPv6环境上测试的,当他们的ATS向你的DNS发送请求时,如果链接不通,那么苹果审核人员就会认为是你的不支持IPv6,所以就会被拒,这种情况下你只需要再次提交审核就好了。
那么说了这么多咱们需要做什么呢,首先你要把链接都换成域名形式的,不要写成IP地址的,这是为了确保DNS可以转换,如果网络请求你是用的第三方,比如AFNetworking,那么你只需要升级成最新版本就可以了,如果是自己写的那么请用NSURLSession。


图片.png

官网上关于这方面是这样写的,只说了NSURLSession和CFNetwork,网上有的人说NSURLConnection在ISO9下是支持IPv6的,不过为了保险起见还是用NSURLSession。
网上的资料都是说NSURLSession支持IPv6,NSURLConnection不支持,但是我当时就是不知道支持部支持表现在哪方面,又为什么不支持,是因为NSURLSession和CFNetwork可以把IPv4合成IPv6。
我们客户端需要做的就是这些了。
最后你需要搭建一个IPv6的环境测试你的部署是否正确,搭建环境请自己百度,友情提示,如果你的电话连不上马Mac热点,提示链接失败或者密码错误,那么不要怀疑自己,请重新启动电脑,在按照流程重新创建一个NAT64的热点,如果还是连不上那么就换台电脑吧,千万不要怀疑自己,不要认为苹果公司做了这么多年的电脑,一个热点肯定不会有问题,呵呵,这个真的是苹果公司的问题。。。。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 原文连接 为了加深印象与理解,自己copy了一份,顺便按照自己的理解稍作修改。参考资料 自从5月初Apple明文规...
    不会游泳De鱼阅读 10,133评论 2 12
  • 跟别人谈起来的时候,看见别人不怎么开心的时候,我第一句话总是告诉他们爱自己。原因简单,因为我知道爱自己最重要,我也...
    QiaoPanda阅读 3,122评论 0 0
  • 那年春光正好,他与她定下鸳盟,却有一残签谶言一般紧追她不放。 非人非鬼,必不得其死,不死,则…… 他果真没与她白头...
    欧薇特阅读 1,666评论 0 0
  • 思绪纷飞,窗外已白了一片。一个人蜷缩在狭小的出租屋,此刻感觉时界都安静了好多。看着桌子上厚厚的一摞文件,刚刚平静的...
    想飞的鱼小天阅读 1,751评论 1 4
  • 鹤污圣丸子阅读 1,508评论 0 1

友情链接更多精彩内容