注册

准备万全的应用还是无法通过App Store审核?别着急,可能是IPv6的锅

最近很多开发者反映,自己的iOS应用明明已经考虑的事无巨细了,却还是无法通过App Store的审核,是不是苹果的审核规则变的更严格了?

这是因为有些开发者可能没有注意到,5月4日的时候苹果在其开发者官网上有发过这样一条通知

449763-4d71f95315a415db.png


这条通知中提到,2016年6月1日开始,所有提交到App Store上的应用必须支持IPv6-only的网络。

苹果还在最新的 App Store Review Guidelines中增加了这样的表述

449763-61b6798c970a753d.png


同时苹果也声明,大部分应用不需要进行任何更改,因为NSURLSession和CFNetwork API已经支持IPv6了,所以使用NSURLSession和CFNetwork API进行开发的开发者们大可不必担心这个问题。
但是,如果你的应用使用了IPv4专属API或硬编码IP地址,那么就需要开发者对自己的应用做出一些更改了。

这样看来,那些应用没有过审的开发者们可能就恍然大悟了,不是自己不给力,而是苹果太淘气。

那么问题来了,到底怎样才能让自己的应用支持IPv6-only网络呢?

在苹果官方的文档中,给出了以下几个解决方案确保IPv6 DNS64/NAT64的兼容性:
使用高级网络框架


449763-d68469cfb5edf48b.jpg


不要直接使用IP地址
使用容量更大,足以存储IPv6地址的地址结构,比如sockaddr_storage
检查并删除不兼容IPv6 DNS64/NAT64的代码,比如:
inet_addr()
inet_aton()
inet_lnaof()
inet_makeaddr()
inet_netof()
inet_network()
inet_ntoa()
inet_ntoa_r()
bindresvport()
getipv4sourcefilter()
setipv4sourcefilter()
将IPv4类型的代码转换为IPv6的形式​

449763-f9476c5e1d3c1ed1.png


无需预检(Preflight),直接连接网络
使用系统API生成IPv6地址
 
那么如何用Mac在本地搭建一个IPv6的测试环境呢?这里是操作步骤:

1.确保你的Mac以非Wi-Fi的方式连接到互联网
2.通过Dock、LaunchPad或Apple菜单打开系统偏好设置
3.按住键盘上的Option键并点击共享,且不要松开Option键

449763-29f9fd2ae160a242.png


4.在共享服务列表中选择互联网共享


449763-c2b48844d101e7dc.png


5.松开Option键
6.选择创建NAT64网络

449763-24bf283e252f8acb.png


7.选择一个网络接口,提供您的互联网连接

449763-dca2482ca037077b.png


Tip:如果你的Mac是用有线拨号上网的话,请选择PPOE选项作为共享源。如果你的Mac是用有线上网(不用拨号的)的话,请选择Thunderbolt以太网有线网选项作为共享源。

8.将Wi-Fi选项打勾

449763-88f02a1d1f272050.png


9.点击Wi-Fi选项,配置网络名称和安全选项

449763-2d9850c42ab9ea6b.png


10.选择互联网共享,启动本地网络

449763-a879ba4663a40982.png




449763-8440105df6b08aa8.png


当共享处于活动状态后,在Wi-Fi显示处,会有一个朝上的箭头,这表示互联网共享已经启用,现在就有一个IPv6 NAT64网络可以让开发者并可以从其他设备访问并测试应用了。

449763-60e46eb56800c8fb.png


Tip:为了确保测试只发生在本地IPv6网络上,请确保你的测试设备没有其他活动的网络接口。例如,如果你正在使用iOS设备进行测试,请确保蜂窝服务被禁用,所以你只能通过Wi-Fi测试。
 
环信IM已经支持IPv6,如果遇到提交审核因为网络问题没通过的检查下sdk版本号,V3.1.3/V2.2.5 以后支持IPv6,最新sdk下载地址http://www.easemob.com/download/im
 

0 个评论

要回复文章请先登录注册