龙空技术网

一次ios上线悲剧的经历(附 ipv6审核被拒解决方案)

不是急客是极客 527

前言:

眼前看官们对“phpipv6”可能比较关注,小伙伴们都需要了解一些“phpipv6”的相关文章。那么小编也在网上搜集了一些关于“phpipv6””的相关内容,希望咱们能喜欢,朋友们快快来学习一下吧!

之前做了款苹果 ios app产品,准备发布到苹果 app store。苹果对应用审核过程严格,相信不仅我一个人,还有很多的开发者都经历过一个就是发布然后被拒然后再发布然后再被拒然后再再发布...... 的一个漫长而又痛苦的经历。用户不会知道产品上线发布的艰辛,命苦的ios开发人员@@@

本次上线被苹果拒了 , 在此记录一些细节,希望对后来人有所帮助:

苹果反馈的信息是

提示说IOS应用必须支持IPV6-Only网络

被拒理由:App没有支持ipv6-Only被拒。

经过查找资料发现苹果App Store 自2016年6月1日开始实施全新策略,所有提交至苹果 App Store 的 iOS 应用申请必须要兼容面向硬件识别和网络路由的最新互联网协议:IPv6-only 标准。去看了苹果官网的解释:

IPv6比IPv4也更加高效,向IPv6过渡是大势所趋。

我们用iOS设备连接上Wifi、4G、3G等网络时,设备被分配的地址均是IPV4地址,但是随着运营商和企业逐渐部署IPV6 DNS64/NAT64网络之后,设备被分配的地址会变成IPV6的地址,而这些网络就是所谓的IPV6-Only网络,仍然可以通过此网络去获取IPV4地址提供的内容。

那么什么是ipv4和ipv6呢?

IPv4与IPv6

IPv4 是互联网协议(Internet Protocol,IP)的第四版,也是第一个被广泛使用,目前运用最多的互联网技术协议,IPv4 地址格式是这个样子:123.123.123.123。

IPv6 是 IPv4 的下一个版本 。IPv6 地址长度为 128 位,地址空间增加了 2^128-2^32 个,它在提高安全性方面相比前代有着较大的提升。此外,身份认证和隐私权也是 IPv6 的关键特性。IPv6 地址格式是这个样子:1243:ab4:678:3309:220:56bf:ce97:20b1 。

解决方法:

第一是服务器,要有一个IPV6服务器,可以在国外租用一个。然后把域名解析支持AAAA解析到国外服务器的IPV6地址,域名解析支持AAAA解析,如DNSPOD

把您的域名AAAA解析解析,在国外服务器配置一个NGINX,转发到国内的IPV4服务器地址。可在ipv6测试址:中测试是否支持。有一点总结出的是服务器不用支持 IPv6,但是必须正确响应 IPv6 的 DNS 查询。

第二是ios app 程序本身,常用的第三方SDK,比如支付,分享等更新到最新的版本检查并消除IPv4-specific api ,下图蓝色框内的 API 默认都是支持 IPv6 的。

所以,我们可以采用 NSURLSession 和 CFNetwork 进行网络请求。

如果采用 NSURLSession,那么当前比较成熟的网络请求框架就是 AFNetworking,最新版本的 AFNetworking 已经使用了 NSURLSession。下图来时苹果官方帮助文档

对于如何支持IPV6-Only,官方给出了如下几点标准:

1. Use High-Level Networking Frameworks;

2. Don't Use IP Address Literals;

3. Check Source Code for IPv6 DNS64/NAT64 Incompatibilities;

4. Use System APIs to Synthesize IPv6 Addresses

最后积累历次审核被拒的经验,丰富组织过程资产,指导后续工作,开发人员可以多看看苹果官方的审核指南。

帮助文档地址

IOS App开发的坑实在多,我只能说未完待续,,,,,

标签: #phpipv6