最佳实践:使用负载均衡SLB IPv6搞定苹果AppStore审核

1.Greetings

HI,大家好,我是负载均衡SLB产品经理添毅,今天我们来聊一聊苹果的IPv6审核,以及使用阿里云负载均衡SLB(IPv6)搞定AppStore IPv6审核。

2.Appstore IPv6审核是什么

最佳实践:使用负载均衡SLB IPv6搞定苹果AppStore审核

由于国外的IPv6发展起步较早,因此在世界上可能已经存在一些IPv6 Only的网络环境了,所谓IPv6 Only就是指仅具有IPv6地址的互联网环境,苹果为了保证这些IPv6 Only的用户也能够顺利的使用苹果的服务和AppStore上的App,因此要求从2016年6月1日起,所有上架AppStore的应用必须支持IPv6-only网络。
参考网址:https://developer.apple.com/support/ipv6/

但这个要求常常被误读为上架AppStore的应用(包括APP、服务器以及服务器所在网络环境)要全面支持IPv6才行,但其实不然。

苹果当然知道,第三方开发者以及的他们的服务器遍布世界各地,各国建设IPv6的进展参差不齐,如果一刀切下来,不要说2016年,恐怕到现今的2018年,这个改造工作量都无法得以完成,将极大影响AppStore市场和苹果生态的繁荣。

因此苹果的要求仅仅是“Support IPv6-only”而不是“Must be IPv6-only”,也就是说第三方开发者的应用只要能被IPv6-only环境下的用户访问即可,并不要求整个系统全面转化为IPv6。

仔细研读上面苹果官网连接中的内容,可以看到如下描述:
最佳实践:使用负载均衡SLB IPv6搞定苹果AppStore审核

首先苹果给出一个在没有IPv6-ony环境的情况下,教大家搭建一个IPv6-only的访问环境,便于进行本地的测试
最佳实践:使用负载均衡SLB IPv6搞定苹果AppStore审核

接着苹果提到:
针对App来说:并不用全面替换掉其中涉及到IPv4部分的代码(网络相关API),只要能够通过上述IPv6-only环境能够访问即可,可见这个标准存在一些模糊性,需要用户自行搭建上述环境并通过本地测试。
同时苹果也建议到:代码中最好不要出现专门为IPv4或者IPv6提供的API,而尽量使用经过封装的地址簇无关的API。使用这些地址簇无关的、经由苹果良好封装的API,APP可以在IPv6和IPv4环境中自适应,而无需感知底层网络基础设施的细节。

针对服务器来说:如果服务器部署在互联网上,那么其实并不需要进行立即的改动,因为应为苹果会通过6to4转换服务器即DNS64/NAT64,去访问你的应用,只要能访问通就行。
同时苹果也建议到:尽管现在不需要,迟早服务器时需要IPv6支持的,即服务器能够分配IPv6地址,域名能够解析到V6的地址。
但如果有些服务器是内嵌在iOS App客户端本身中的情况,由于这种情况无法进行6to4转换,因此必须要要求改内嵌Server和客户端都具备IPv6的处理能力。

总结下来苹果的IPv6-only Support审核走的是两条路线:

  • 如果应用App、服务器、网络环境均具备IPv6条件,直接访问就好了。
  • 如果应用App、服务器、网络环境不具备IPv6条件,那么苹果将通过DNS64/NAT64来访问你的应用。

这样看来,大部分情况下,我们应该什么都不需要做,就能顺利通过审核,但是为什么网上存在大量的用户抱怨审核不通过呢?

3.为什么会审核失败

其实问题主要出在DNS64/NAT64这个环节,苹果在通过DNS64/NAT64访问我们的应用服务器时,由于其测试环境部署在美国,而我们的服务器如果部署在*境内,在6to4转换访问是往往会出现一些不可描述的失败原因,从而导致审核失败。
这时最好的办法就是让审核访问路径不要走DNS64/NAT64这一条路径,从而让应用服务器拥有一个IPv6的地址,就是王道了。

4.解决方案

使用阿里云负载均衡SLB IPV6实例,同样无需后端应用的改造,将原有服务直接挂载到IPv6 SLB的后端,由SLB实现6to4转换,而在苹果审核服务访问应用系统的时,是直接访问IPv6 VIP的(SLB上提供的IPv6地址),因此App审核将不再是烦恼。

最佳实践:使用负载均衡SLB IPv6搞定苹果AppStore审核
如何购买IPv6实例具体参看《终于来了!重磅发布:阿里云负载均衡SLB率先支持IPv6!》.

PS:如果用IPv6 SLB审核还是出现问题,可以尝试升级付费版本云解析,可能会有奇效哦!

5.结束语

目前阿里云负载均衡SLB已经面向全网用户开放IPv6实例购买,详情参考,同时IPv6 SLB更享65折带宽优惠,即刻行动起来,今天就让您的服务升级到IPv6吧 !

上一篇:Day6-快速搭建LAMP环境


下一篇:Flutter 70: 图解自定义 ACEStepper 步进器