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 IPv66 你的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
The future is forever world Ipv6 Launch
5 广告时间
欢迎对iOS感兴趣,保持学习心态,保持创业心态的同学,加入我们 - 今日头条
简历发送至: liukegang@bytedance.com
加我为好友:
网友评论