最近提交的新版本因为IPv6问题被拒,审核组给的截图,页面是空的,说明请求之后没有拿到数据。在这之前,17年元旦之后,我们先后提交了三个版本,均审核通过,真是一脸懵逼,先自己搭环境测试。
搭建IPv6环境进行测试
两种方式:用网线、不用网线(热点方式)
因为我的Mac没有网线接口,买个转换接头要100大洋左右,果断选择第二种。具体步骤参考下面的文章,一步一步来就OK了。
iOS-不用网线搭建IPv6网络测试环境
测试结果:运行OK。
我重新打了个包提交审核,审核速度相当快,不到20个小时就给我拒了。。。我不死心,重新提交审核,又是不到20个小时就给我拒了。。。今年的五一过得真是相当心塞。
Mac搭建IPv6环境测试没问题仍然被拒怎么办
从网上查资料,发现Mac搭建IPv6环境测试通过,只能代表客户端应用在 IPv6 网络下,是没有问题的。此时手机和 Mac 之间是 IPv6 ,但 Mac 和你的服务器之间还是 IPv4 连接。无法验证你的服务器能够对 IPv6 网络做出正确的响应。
苹果审核时,通过 DNS 服务器询问你服务器的 IPv6 地址,然后进行访问。如果查询不到 IPv6 地址,可能会进而询问 IPv4 地址,然后进行转换使用。苹果明确表示服务器不需要支持 IPv6,但是有一点苹果没有指出来,那就是,虽然你的服务器不用支持 IPv6,但是必须正确响应 IPv6 的 DNS 查询。
验证服务器是否能响应IPv6的DNS查询####
方法一: $ dig +nocmd +nostats example.com AAAA 如果返回的 status 为 NOERROR, 那基本就没什么问题。
我试着dig自己的域名,返回NOERROR,因此运维说服务器没问题,提交审核后依然被拒。这个方法的可靠性有待考证(我怀疑此时Mac与服务器之间依然是IPv4连接)。
方法二:点击进行IPv6测试
界面如下:
结果表明服务器不支持IPv6,也不能响应 IPv6 的 DNS 查询。
剩下的就是运维的事了。
和运维进行友好沟通##
和iOS小伙伴们沟通IPv6被拒的解决方法,发现最难的不是找到被拒的原因,而是和运维扯皮。大部分小伙伴都听运维说过这句话:IPv6被拒和服务器没关系,服务器不需要做什么设置,应该是你们客户端的问题,你们看看代码怎么改一下。他们的证据就是上文说的“苹果明确表示服务器不需要支持 IPv6”。
这种时刻一定要明确责任。作为客户端,首先要确保代码中没有使用被IPv6禁止的方法,排除了自己的问题后,与运维沟通一定要坚定立场,是他们的问题就一定要让他们改。我和运维第一次沟通时不自信,不知道自己这里有什么问题但也以为是自己的问题,就重新提交审核又被拒,浪费四天时间。
明确责任不是在追责或者推卸责任,而是为了尽快解决问题使项目顺利上线。
我们使用的是阿里云服务器,参考文章阿里云 Ubuntu 支持 IPv6 的完整步骤
再次测试。
IPv6 web server 不通过没关系---你的服务器不用支持 IPv6
AAAA DNS record 通过即可---服务器必须正确响应 IPv6 的 DNS 查询
再次提交审核,通过。