在WWDC2015上苹果宣布iOS9将支持纯IPv6的网络服务。2016年初开始所有提交到App Store的应用必须支持IPv6。为确保现有的应用是兼容的,我们需要注意下面几点。

不建议使用底层的网络API

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

Networking frameworks and API layers

大部分情况下,我们用高级的API完全能够实现我们的需求,而且高级API封装的很便于使用,很多底层的像适配IPv6的工作都已经帮我们做好了。而用底层API会有大量的工作要我们自己来做,更容易产生bug。但你如果确实需要用底层的POSIX socket API, 请参照这个RFC4038: Application Aspects of IPv6 Transition的指导。

不要用IP地址

比如下面这个API,nodename这个参数不要传IP地址,而应该用域名

SCNetworkReachabilityCreateWithName

这个方法在著名的Reachability中是用到的,我们常用的网络库AFNetworking就用了这个。所以用到的同学得好好查一下了,另外这个项目的作者几天前刚刚就这个问题有一个新的提交,不过最新的release版本中还没有加进去,可以点下面链接先去看看他都改了哪些地方。

Added support for IPv6 to Reachability #3174

检查不兼容IPv6的代码

搜一下工程里有没有下面的这些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

本地搭建IPv6测试环境

最后我们来搭一个IPv6的测试环境吧,你所需要的就是一台用非Wi-Fi的方式上网的Mac电脑。

我们的要做的其实就是用Mac做一个热点,然后用iPhone连接这个Wi-Fi,听起来很容易,我相信大家在公司就是这么干的吧。

区别是这次我们产生的是一个本地的IPv6 DNS64/NAT64网络,这项功能是OS X 10.11新加的。和我们以前开启热点方式不一样的地方在于,我们在“System Preferences”界面选中“Sharing”的同时,要按住“Option”键。

System Preferences

之后在“Sharing”界面中,我们会看到和之前不一样的地方,就是红框所标的地方,多了一个叫“Create NAT64 Network”的选框,选中它。

Sharing

之后就是按照正常的创建热点的流程走完就行了。

现在我们用iPhone连接上这个刚创建好的热点就可以测试了,注意此时要把iPhone设成飞行模式,以保证只用Wi-Fi上网。

链接

针对苹果最新审核要求为应用兼容IPv6

Supporting IPv6 DNS64/NAT64 Networks

iOS 适配iPV6的修改(AF及其他第三方库)

针对苹果最新审核要求为应用兼容IPv6的更多相关文章

  1. 针对苹果最新审核要求:应用兼容IPv6

    在WWDC2015上苹果宣布iOS9将支持纯IPv6的网络服务.2016年初开始所有提交到App Store的应用必须支持IPv6.为确保现有的应用是兼容的,我们需要注意下面几点. 不建议使用底层的网 ...

  2. 针对苹果最新审核要求 为应用兼容IPv6

    本文授权转载,作者:我不是段誉(简书) 在WWDC2 015上苹果宣布iOS 9将支持纯IPv6的网络服务.2016年初开始所有提交到App Store的应用必须支持IPv6.而今年5月初,苹果宣布6 ...

  3. 针对苹果最新审核要求为应用兼容IPv6-备用

    在WWDC2015上苹果宣布iOS9将支持纯IPv6的网络服务.2016年初开始所有提交到App Store的应用必须支持IPv6.为确保现有的应用是兼容的,我们需要注意下面几点. 不建议使用底层的网 ...

  4. 苹果审核不通过,程序/游戏不兼容IPV6网络

    最近苹果升级的IOS10,所以那边网络环境变成IPV6,如果你的程序不兼容IPV6,苹果的程序会以这个不兼容的原因驳回审核. 那么如何让自己的程序兼容这个?方法其实C#本来已经提供给你的,而且很简单, ...

  5. 使用 Java 开发兼容 IPv6 的网络应用程序

    根据现有 IPv4 地址的部署速度,剩余的地址将在 10 到 20 年被使用殆尽.因此网络逐渐从 IPv4 向 IPv6 转换是不可避免的,相应的各种网络应用程序都将支持 IPv6.对于 Java,从 ...

  6. WWDC 后苹果最新 App Store 审核条款!

        WWDC 2016 大会之后,苹果公司发布了四个全新平台:iOS,macOS,watchOS 和 tvOS.并且在此之后,苹果应用商店审核条款也同时进行了更新——貌似不算进行了更新,简直就是重 ...

  7. 正确适配苹果ATS审核要求的姿势

    首先,ATS的技术行为不会有任何变化(除了新增两个字段NSAllowsArbitraryLoadsInWebContent和NSRequiresCertificateTransparency,也就是更 ...

  8. [转]Swift 简介 - 苹果最新的编程语言

    Swift 真的可以说是最新的编程语言了,2014wwdc刚刚发布,下面来了解一下都有哪些特点. 首先感谢原作者,主要内容是借鉴他的,参考链接 http://zh.lucida.me/blog/an- ...

  9. Swift 简单介绍 - 苹果最新的编程语言

    Swift 真的能够说是最新的编程语言了,2014wwdc刚刚公布,以下来了解一下都有哪些特点. 首先感谢原作者,主要内容是借鉴他的,參考链接 http://zh.lucida.me/blog/an- ...

随机推荐

  1. linker command failed with exit code 1 (use -v to see invocation)解决办法

    [cpp] view plaincopy Undefined symbols for architecture i386:     "_OBJC_CLASS_$_FMDatabase&quo ...

  2. FMDB简单用法

    首先引入类库 声明数据库和路径 /**  声明数据库对象  */ @property (nonatomic, strong) FMDatabase *dataBase; /**  声明存储路径  */ ...

  3. java反射机制一个例子

    import java.lang.reflect.*; public class DumpMethods { public static void main(String args[]) { try ...

  4. HTML5设计网页动态条幅广告(Banner) 已经加上完整源代码

    横幅广告(Banner): 1.横幅广告是网络广告的常见形式,一般位于网页的醒目位置上:当用户单击这些横幅广告时,通常可以链接到相应的广告页面: 2.设计横幅广告时,要力求简单明了,能够体现出主要的中 ...

  5. asp.net mvc 应用Bundle(捆绑和微小)压缩技术 启用 BundleConfig 配置web.config

    从MVC4开始,我们就发现,项目中对Global.asax进行了优化,将原来在MVC3中使用的代码移到了 [App_Start]文件夹下,而Global.asax只负责初始化.其中的BundleCon ...

  6. GridView 和DataGrid区别

    转自:http://blog.csdn.net/51357/article/details/1480599 近期在维护一个vs2008开发的项目(该项目是从Vs2013拷贝升级过来的),发现不同时期按 ...

  7. ORA-00600: internal error code, arguments: [kcblasm_1], [103], [], [], [], [], [], []

    一ORACLE 10.2.0.5.0 标准版的数据库的告警日志出现ORA-00600错误,具体错误信息如下所示 Errors in file /u01/app/oracle/admin/SCM2/bd ...

  8. 定义类Human,具有若干属性和功能;定义其子类Man、Woman; 在主类Test中分别创建子类、父类和上转型对象,并测试其特性。

    package com.hanqi.test; public class Humen { private String speak; private String read; private Stri ...

  9. Windows服务调试小结(附Demo)

    本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 阅读目录 介绍 搭建环境 调试方式 Demo下载 本文版权归mephisto和博客园共有,欢迎转载,但须 ...

  10. 3、eclipse和maven环境安装以及HDFS读写的demo

    安装eclipse和maven环境   $ mkdir /home/beifeng/.m2 $ tar zxf repository.tar.gz -C /home/beifeng/.m2 $ /co ...