针对苹果最新审核要求为应用兼容IPv6

在WWDC2015上苹果宣布iOS9将支持纯IPv6的网络服务。2016年初开始全部提交到App Store的应用必须支持IPv6。为确保现有的应用是兼容的,咱们须要注意下面几点。html

不建议使用底层的网络API

 

下图展现的蓝色部分的这些API都是不存在兼容性问题的,而咱们平时本身用的包括那些第三方的网络库大部分都是用的这些API。node

Networking frameworks and API layersgit

 

大部分状况下,咱们用高级的API彻底可以实现咱们的需求,并且高级API封装的很便于使用,不少底层的像适配IPv6的工做都已经帮咱们作好了。而用底层API会有大量的工做要咱们本身来作,更容易产生bug。但你若是确实须要用底层的POSIX socket API, 请参照这个RFC4038: Application Aspects of IPv6 Transition的指导。github

不要用IP地址

 

好比下面这个API,nodename这个参数不要传IP地址,而应该用域名网络

SCNetworkReachabilityCreateWithNamesocket

这个方法在著名的Reachability中是用到的,咱们经常使用的网络库AFNetworking就用了这个。因此用到的同窗得好好查一下了,另外这个项目的做者几天前刚刚就这个问题有一个新的提交,不过最新的release版本中尚未加进去,能够点下面连接先去看看他都改了哪些地方。测试

Added support for IPv6 to Reachability #3174spa

检查不兼容IPv6的代码

 

搜一下工程里有没有下面的这些API,这些都是只针对IPv4作处理的,有的话就删了。htm

inet_addr()ip

inet_aton()

inet_lnaof()

inet_makeaddr()

inet_netof()

inet_network()

inet_ntoa()

inet_ntoa_r()

bindresvport()

getipv4sourcefilter()

setipv4sourcefilter()

若是用到了下面左边的这些IPv4的类型,那么它们相应的IPv6类型也须要作处理

IPv4-IPv6

本地搭建IPv6测试环境

 

最后咱们来搭一个IPv6的测试环境吧,你所须要的就是一台用非Wi-Fi的方式上网的Mac电脑。

咱们的要作的其实就是用Mac作一个热点,而后用iPhone链接这个Wi-Fi,听起来很容易,我相信你们在公司就是这么干的吧。

区别是此次咱们产生的是一个本地的IPv6 DNS64/NAT64网络,这项功能是OS X 10.11新加的。和咱们之前开启热点方式不同的地方在于,咱们在“System Preferences”界面选中“Sharing”的同时,要按住“Option”键。

System Preferences

以后在“Sharing”界面中,咱们会看到和以前不同的地方,就是红框所标的地方,多了一个叫“Create NAT64 Network”的选框,选中它。

Sharing

以后就是按照正常的建立热点的流程走完就好了。

如今咱们用iPhone链接上这个刚建立好的热点就能够测试了,注意此时要把iPhone设成飞行模式,以保证只用Wi-Fi上网。


 

文/我不是段誉(简书做者) 原文连接:http://www.jianshu.com/p/69ed4489762c 著做权归做者全部,转载请联系做者得到受权,并标注“简书做者”。

相关文章
相关标签/搜索