您的位置:首页 > 移动开发

iOS APP 支持IPv6-only的注意事项及兼容性考虑

2016-07-05 11:52 417 查看

iOS APP 提交到AppStore要 支持IPv6-only

IPv4 和 IPv6的区别

IP 地址前者是 . (dot)分割,后者是以 :(冒号)分割的。

在WWDC2 015上苹果宣布iOS 9将支持纯IPv6的网络服务。2016年初开始所有提交到App Store的应用必须支持IPv6。而今年5月初,苹果宣布6月1日后所有应用必须支持IPv6-only网络。为确保现有的应用是兼容的,我们需要注意下面几点。

支持IPv6-only网络注意事项

1、针对接口使用IP地址的 公司 需要手工更改请求方式 因为目前使用ipv4的地址访问ipv6的服务器会出现 地址无法解析的问题 因此 官方给的解决方案是:“在iOS 9和OS X 10.11和以后,NSURLSession和CFNetwork自动将iPv4合成IPv6 来进行请求”

NSURLSession和CFNetwork 兼容ipv4和ipv6的互转 请求 所以如果使用 IP访问 必须使用最新版本的API即 NSURLSession或CFNetwork 使用AFnetworking请求数据的话 仅需吧AF 升级到3.0 以上版本即可;

2 、针对 请求接口使用的是域名访问的app来说目前没有什么影响 仅仅需要确认下是不是支持ipv6 网络即可 对于服务器和后端目前来说也不需要做什么多余的操作

验证您的APP是否支持IPv6

本地 Mac 搭建 IPv6 测试环境,验证APP是否支持ipv6步骤:

1》 按住option/alt 点击共享



2》 将 mac的wifi热点 打开(不会的自行百度 这里不多说) 注意箭头指示部分 打开(打开共享时候一定要按住option/alt)



3》 手机开启 飞行模式 。连接 自己电脑的wifi热点 ,运行APP, 如果顺利运行,则说明你的APP 支持ipv6 网络 ;否则,说明不支持。在自行改动APP。 目前版本 微信(6.3.16)不支持 可以做为参考

PS: 在使用 IPv6 的热点时候,记得手机开 飞行模式 哦,保证手机只在 Wi-Fi 下上网,以免手机在连接不到网络时候,会默认跳转到使用 蜂窝移动网络(即2G、3G、4G流量) 上网。

注意以下常见问题:

问: 开了飞行模式,怎么上无线啊?

答: 开启飞行模式的时候,无线会自动关闭,然后你在重新打开无线就可以了哈

兼容性考虑

1》下图展示的蓝色部分的这些API都是不存在兼容性问题的,而我们平时自己用的包括那些第三方的网络库大部分都是用的这些API。



图为:Networking frameworks and API layers

大部分情况下,我们用高级的API完全能够实现我们的需求,而且高级API封装的很便于使用,很多底层的像适配IPv6的工作都已经帮我们做好了。而用底层API会有大量的工作要我们自己来做,更容易产生bug。故不建议使用底层的网络API。

2》检查不兼容IPv6的代码

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

以下API只针对IPv4做处理,需调整:

inet_addr()

inet_aton()

inet_lnaof()

inet_makeaddr()

inet_netof()

inet_network()

inet_ntoa()

inet_ntoa_r()

bindresvport()

getipv4sourcefilter()

setipv4sourcefilter()

如果用到了下面左边的这些IPv4的类型,那么它们相应的IPv6类型也需要做处理,IPv4-IPv6转换如下图:



最后,祝大家上传成功,工作愉快!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  app store app wwdc ipv6 ios