工程iOS DeveloperiOS

IPv6-only 你准备好了吗

2016-05-06  本文已影响1563人  invokefear

WWDC 2015宣布iOS 9 网络服务切换到IPv6-only。从2016年6月1号开始,所有提交到App Store的App必须支持IPv6-only网络。

1 无感情况

你的App网络请求只采用 NSURLSession 和 CFNetwork API ,那么你的App不用关心IPv6-only的要求。

使用以下第三方库,当然也是没有问题地:

AFNetworking  - 为iOS 和 Mac OSX 设计的优秀网络库。构建在Foundation URL Loading System 之上,包含设计丰富,良好的API。

Alamofire - 是采用Swift语言写的HTTP网络库。

ASIHTTPRequest - 包装 CFNetwoking API 了的网络库,已经停止维护了。

2 有感情况

1 在协议中直接采用IP地址。许多通信协议,例如SIP,FTP, WebSockets, P2PP,在信息中直接采用IP地址。

2 在配置文件中直接采用IP地址。

3 网络检查。许多App在发起网络请求的时候会检查网络连接情况,采用network reachability APIs 是传递IP地址。

4 使用 low-level 网络API。一些App中直接操控socket和其他基础的网络API,例如

gethostbyname

gethostbyname2

inet_addr()

inet_aton()

inet_lnaof()

inet_makeaddr()

inet_netof()

inet_network()

inet_ntoa()

inet_ntoa_r()

bindresvport()

getipv4sourcefilter()

setipv4sourcefilter()

5 使用small address family storage containers。一些app 和网络库采用小容量的存储单元存储地址。例如uint32_t,in_addr, sockaddr_in,这些是32bits或者更小。

IPv4 vs IPv6

6 你的Reachability 是否支持IPv6呢?

Apple :2016-05-05Revised to clarify and document how Reachability supports IPv6.

AFNetworking 3.0: Added support for IPv6 to Reachability Implemented by SAMUKEI and Kevin Harwood in#3174

7 目前国内主流的第三方SDk  新浪,微信等都在为IPv6-only更新了版本

3 分析 -- 确保 IPv6DNS64/NAT64 兼容

App网络请求可以采用高级API框架,或者low-level POSIX socket APIs。在大多数情况下高级API已经足够我们的使用场景,并且简单易用。

网络框架和API层次

4 测试App是否兼容IPv6DNS64/NAT64

最简单的方式是在本地Mac上部署IPv6DNS64/NAT64服务。

A local Mac-based IPv6 DNS64/NAT64 network

使用Mac建立本地IPv6 Wi-Fi 网络

1 确保你的Mac连网,但不是通过Wi-Fi

2 打开系统偏好设置


系统偏好设置

3 按住Option键,点击共享

按照以上配置 

4 不要忘了点击 Wi- i 选项进行配置你的Wifi

最后选上 互联网共享

 5 是时候链接你的wifi进行测试你的App了。

最终状态

4 参考

Supporting IPv6 DNS64/NAT64 Networks

Your App and Next Generation Networks

Supporting IPv6 in iOS 9

The future is forever world Ipv6 Launch

sockaddr

Reachability

5 广告时间

欢迎对iOS感兴趣,保持学习心态,保持创业心态的同学,加入我们 - 今日头条

简历发送至: liukegang@bytedance.com

加我为好友:

上一篇 下一篇

猜你喜欢

热点阅读