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

在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

https://github.com/AFNetworking/AFNetworking/pull/3174/files

检查不兼容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上网。

时间: 2024-10-10 21:46:27

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

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

在WWDC2015上苹果宣布iOS9将支持纯IPv6的网络服务.2016年初开始所有提交到App Store的应用必须支持IPv6.为确保现有的应用是兼容的,我们需要注意下面几点. 不建议使用底层的网络API 下图展示的蓝色部分的这些API都是不存在兼容性问题的,而我们平时自己用的包括那些第三方的网络库大部分都是用的这些API. Networking frameworks and API layers 大部分情况下,我们用高级的API完全能够实现我们的需求,而且高级API封装的很便于使用,很多底

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

最新消息 今天苹果推出重磅消息,6月1日后所有应用必须支持IPv6-only网络!!!当iOS开发者看到这个消息的第一反应可能就是IPv6是个什么鬼!!其实IPv6早在很早之前就已经推出,而且苹果在2015年的开发者大会上就已经提出苹果将力挺IPv6 官网链接 IPv6-only 说了这么多,IPv6到底是个什么鬼!我们来看看百度百科是怎么解释的: 我们再来看看官方给出的IPv6与IPv4的对比: 看不懂??,我们来解释下: 1.IPv6:避免了网络地址转换(NAT) 2.通过网络通过使用简化的

iOS开发之苹果应用6.1日起需兼容IPv6,那么作为开发者我们需要做些什么呢?【科普IPV6】

我相信现在很多的iOS开发者都知道苹果要求我们提交到App Store的应用必须支持IPv6. 1.提到IPV6相关. 那这个直接就联想到就是关于我们App中网络部的一些内容,是否要进行相应的改变. 首先,解释下什么是ipv6? IPv6是下一代互联网的协议,它的提出最初是因为随着互联网的迅速发展,IPv4定义的有限地址空间将被耗尽,地址空间的不足必将妨碍互联网的进一步发展.通俗的说就是,我们的网络ip地址不够用了, 我们每台电脑上internet都需要一个身份证明,就是说的IP地址, ipv4

iOS应用兼容IPv6

在WWDC2015上苹果宣布iOS9将支持纯IPv6的网络服务.2016年初开始所有提交到App Store的应用必须支持IPv6.为确保现有的应用是兼容的,我们需要注意下面几点. 不建议使用底层的网络API 下图展示的蓝色部分的这些API都是不存在兼容性问题的,而我们平时自己用的包括那些第三方的网络库大部分都是用的这些API. Networking frameworks and API layers 大部分情况下,我们用高级的API完全能够实现我们的需求,而且高级API封装的很便于使用,很多底

关于苹果最新语言Swift

Swift是为IOS和OSX应用制定的新编程语言,吸取C和Objective-C语言的精粹,但不损失与C语言的兼容性.Swift采用安全编程模型.加入了各种现代编程语言特性,使得该语言更易被掌握.更具扩展性,用起来更有趣.Swift语言的奠基石是已经成熟的.并为大家所喜爱的Cocoa和Cocoa Touch框架,新语言使大家可以尽情畅想新软件开发的机遇. Swift沉积了多年的研发成果,苹果公司为提供高效Swift语言编译器.调试器和基础架构打下了坚实基础.我们使用Automatic Refer

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

根据现有 IPv4 地址的部署速度,剩余的地址将在 10 到 20 年被使用殆尽.因此网络逐渐从 IPv4 向 IPv6 转换是不可避免的,相应的各种网络应用程序都将支持 IPv6.对于 Java,从其 1.4 版开始对 IPv6 提供了较好的支持,对程序员基本屏蔽了 IPv4 和 IPv6 的差异,但其中仍有一些 IPv6 引起的变化需要我们小心处理.针对这一情况,本文介绍了如何运用现有的 Java 技术应对这些变化. IPv6 背景介绍 目前我们使用的是第二代互联网 IPv4 技术,它的最大

如何测试APP是否兼容IPv6

从2016年6月苹果公司要求APP兼容IPv6,很多APP在审核的时候因为这个原因被拒,这里介绍了一种利用两个iPhone手机和一台 OS X10.11以上的mac( IPv6 DNS64/NAT64 网络,这项功能是 OS X 10.11 新加的功能) 第一步:通过数据线连接iphone和mac 第二步:打开iphone的个人热点并选择仅蓝牙和USB 选择仅USB 第三步:打开网络偏好设置,确保你的Mac的Wi-Fi是打开的,并且没有连接任何网络 需要在已有连接wifi可以在高级里删除之前的联

苹果最新iOS11系统钉钉打卡如何破解 钉钉打卡破解最新苹果系统 无需越狱

之前,针对于苹果最新系统的钉钉虚拟定位签到打卡,我们都是采用修改代码的形式来进行修改位置的.但远程修改代码的方法存在局限性: 第一:目前只支持苹果9系统以及10系统,可以通过远程修改代码的形式进行虚拟定位,但最新升级的11系统的苹果手机已经修复了此Bug,所以远程修改代码已经不支持11系统的苹果手机!第二:修改代码的这种方式,虽然支持任何app进行虚拟定位,位置修改.但是修改位置时候操作比较麻烦,并且存在一定的偏差,需要多次进行微调,才能进去打卡范围.鉴于存在的这两种局限性,历时一个月的研究与开

苹果最新系统10.10升级后用不了

最近升级了苹果系统Yosemite ,刚开始的时候,是可以用的,但是后面重启的时候,进入界面就不能动了.一直在打圈圈. 然后第二次重新装,重启了几次,也没发现问题.最后打开了XCode,提示需要安装组件之类的,于是就安装,但是这次重启了之后就进不了系统了.以前不能进系统,一直打圈圈的原因应该就是这个. 希望大家注意. 苹果最新系统10.10升级后用不了,布布扣,bubuko.com