苹果审核因为 IPV6 被拒的最简明解决方案

我们的 app 因为被苹果爸爸因为 IPV6 拒绝了两轮。把惨痛经验和研究结果分享给大家。

如何判断因为 IPV6 被拒绝

因为我给很多朋友解决过这个问题,我的总结是,只要被拒的回复内容中含有 IPV6 这个关键字,就基本百分之 90 以上的可能你有 IPV6 的问题。如果你的 app 只有 IPV6 的问题。那么应该会给你附件一张你 app 网络无响应的截图。

原因

因为国内的 IPV6 和国外是 IPV6 网络是不通的,但是国内高校内的 IPV6 网络和国外是通的。所以通过外网或者高校网的请求即可。

解决方案

前提

1、需要你保证你的 SDK 和 AFN 是支持 IPV6 的。pod update 一下就 OK 啦。
2、需要有一台国外的服务器,或者高校内的服务器。将你的 IPV6 地址写到你域名的 AAAA 解析中。然后在服务器内的 nginx.conf 文件中加入一条 server

1
2
3
4
5
6
7
8
9
server {
listen 80;
listen [::]:80;
server_name www.xxxx.cn;
location / {
proxy_pass http://www.xxxx.cn;
}
}

解释

将上面 www.xxxx.cn 的域名换成你的域名即可,如果是 https 请求,还需要加上 443 端口 和证书路径~
简单的解释一下,当苹果爸爸审核人员访问这个域名时,因为他们是 IPV6 ONLY 的网络,他们会寻找这个域名的 AAAA 解析, 这个解析地址则是你国外网站的 IPV6 地址。这样他们就访问到了你国外的服务器。这个 server 的意思就是将来自 IPV6 地址 80 端口、域名是 xxxx 的请求 通过 proxy_pass 命令转发给了 http://www.xxxx.cn。这样,苹果审核人员就访问到了你的国内服务器的。

问答

这样会影响我的 app 国内用户的访问速度吗?
答:当然不会,国内请求是通过 IPV4 取得到的是你 DNS 的 A 解析,或者 CNAME 解析,这样都是直接访问你国内的服务器的。只有通过 IPV6 访问时,才会走你的国外服务器转发。
去哪购买国外服务器?
答:最好找朋友或者公司的国外服务器,在 nginx 里添加一条 server 就行了。(如果没有 nginx 可以装一个,或者查查别的办法)。因为不占什么资源而且只是审核的时候会有用。如果实在找不到,推荐购买 linode 最低配置 5刀 一月。买来还可以配 VPN 科学上网玩~不会配?我博客里有文章介绍。