IPv6适配


iOS IPv6 最新升级攻略:
1。官方Reachability
https://developer.apple.com/library/ios/samplecode/Reachability/History/History.html#//apple_ref/doc/uid/DTS40007324-RevisionHistory-DontLinkElementID_1
2。微信SDK
iOS平台微信SDK下载地址:https://res.wx.qq.com/open/zh_CN/htmledition/res/dev/download/sdk/WeChatSDK1.7.zip
微信SDK已支持IPv6,请iOS开发者及时升级
由于苹果App Store政策调整,所有iOS应用必须支持IPv6。iOS平台微信SDK最新的1.7版已支持IPv6,请开发者及时升级App中的微信SDK。
微信团队
2016年05月12日
3。微博SDK
https://github.com/sinaweibosdk/weibo_ios_sdk
关于ipv6支持的问题
由于苹果商店6月1日起,强制app需要支持ipv6-only的网络。微博sdk这边也做了支持,更新了使用的底层网络代码,包括reachability库。 

---------------------------------------------------------

参考:http://www.cocoachina.com/ios/20160523/16385.html

源地址:http://www.jianshu.com/p/8837739251ad?utm_campaign=hugo&utm_medium=reader_share&utm_content=note&utm_source=weixin-friends

IPv6-only 的兼容性解决方案

首先解释下IPv6的是什么?

维基百科的定义如下:
IPv6是Internet Protocol version 6的缩写 全名为互联网通讯协议第6版 是互联网协议的最新版本,用于分组交换互联网络的网络层协议,旨在解决IPv4地址枯竭问题
IPv6具有比IPv4大得多的编码地址空间。这是因为IPv6采用了128位的地址,而IPv4使用的是32位。因此新增的地址空间支持2128(约3.4 ×1038)个地址

优点如下:

  1. IPv6具有更大的地址空间
  2. IPv6使用更小的路由表 (更快的路由)
  3. IPv6具有更高的安全性

APP中如何使用IPv6

1. 使用更高层次的网络API(Use High-Level Networking Frameworks) 避免使用socket API

蓝色部分API 默认都支持IPv6

IPv6适配_第1张图片
API

也就是说
.WebKit
.(NSURLSession NSURLRequest NSURLConnection)
.CFNetwork

这些API默认都已经支持IPv6
而值得庆幸的时 我们使用的大多数第三方网络库使用的也是这些API
比如AFNetWorking 我特意找了一段代码

IPv6适配_第2张图片
AFNetWoring DEMO

下图是Alamofire创建请求的代码

IPv6适配_第3张图片
Alamofire DEMO

Alamofire使用的是High-Level Networking Frameworks(NSURLRequest) 也不存在兼容性问题
这意味着大多数情况下 我们不需要做什么 就可以兼容IPv6

如果你不能避免使用socket API 请参考这个指南
RFC4038: Application Aspects of IPv6 Transition

2. 不要使用IP地址
比如使用SCNetworkReachabilityCreateWithName API 时

  func SCNetworkReachabilityCreateWithName(_ allocator:     CFAllocator?, _ nodename: UnsafePointer) -> SCNetworkReachability?

使用主机名或者主机域名访问

3.检查IPv4代码
项目中不能使用如下代码:

inet_addr()
inet_aton()
inet_lnaof()
inet_makeaddr()
inet_netof()
inet_network()
inet_ntoa()
inet_ntoa_r()
bindresvport()
getipv4sourcefilter()
setipv4sourcefilter()
IPv6适配_第4张图片
IPv4->IPv6类型对照表

如何测试?

利用Mac创建一个 IPv6 WIFI 热点 手机连接该WIFI即可测试
(必须保证你的Mac已连接到Internet 并且不是通过WIFI的方式)
1. 创建 IPv6 WIFI热点

点击系统设置(System Preferences)-> 按住Option键 -> 点击共享(Sharing

IPv6适配_第5张图片
共享

选择互联网共享(Internet Sharing

IPv6适配_第6张图片
互联网共享

选中 创建NaT64网络 (Create NAT64 Network)

IPv6适配_第7张图片
systempreferences_sharing_internetsharing_ipv6_2x.png

选择 一个共享来源连接

IPv6适配_第8张图片
共享来源连接

配置WIFI选项

IPv6适配_第9张图片
WIFI选项配置

输入你的热点名称和密码 最后启用互联网共享(Internet Sharing)选中checkbo

IPv6适配_第10张图片
启用 互联网共享
IPv6适配_第11张图片
热点开启效果

之后通过手机连接该热点 完成测试



文/sprint(简书作者)
原文链接:http://www.jianshu.com/p/8837739251ad
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。






你可能感兴趣的:(『iOS,-,知识』)