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

释放双眼,带上耳机,听听看~!

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转换如下图:

最后,祝大家上传成功,工作愉快!

 

人已赞赏
iOS文章

iOS开发UITableView的全部属性、方法以及代理方法

2020-5-18 16:33:02

iOS文章

iOS 使用MFMailComposeViewController 报错及解决方案

2020-5-18 17:48:02

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索