无法重现 App Store 审核团队遇到的(IPv6?)连接问题

Can't reproduce (IPv6?) connection issue that App Store review team is having

我的 iOS 应用程序遇到 IPv6 问题。最初我在 6 月 1 日之前几天提交了不知道 IPv6 要求 (https://developer.apple.com/news/?id=05042016a)。

他们在 6 月 1 日进行了审核,并因 IPv6 incompatibility/not 能够连接而被拒绝。我不想建立自己的 IPv6 网络,所以我更新了代码以使其兼容——我将 Apple 提供的 Reachability 更新到最新版本。我还在使用几年前一位前联合创始人编写的我自己的下载库。它不会连接到 IP 地址,也不会连接到 Apple 推荐的任何内容,所以我现在没有决定升级它。我还在使用旧版本的 AFNetworking。

我重新提交了一个应用程序。同样的原因再次被拒。我去买了 thunderbolt 适配器并设置了 IPv6。现在我可以很好地连接到那个应用程序。我还可以很好地连接到另一个仍然具有非常旧的可达性代码的应用程序。我的主要问题是我希望它像 Apple 一样崩溃,所以我可以正确修复它。

备注:

-我最初尝试 post 在 IPv6 App Store Rejection 上发表评论,但它太长了。我是 Twitter 上的@andytriboletti,在那个问题中由 Sean 链接。

-我 post 在 Apple 开发者论坛上编辑了这个,但 10 小时后它仍在等待批准: https://forums.developer.apple.com/message/141461#141461

-以下是我在 Macbook pro 上使用 thunderbolt 以太网适配器设置 IPv6 网络的方法。 https://developer.apple.com/library/tvos/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/UnderstandingandPreparingfortheIPv6Transition/UnderstandingandPreparingfortheIPv6Transition.html

-我正在使用 iPhone 6 运行 OS 9.3.2 进行测试。我的 Macbook Pro 运行 Apple 链接到我的文章中描述的 IPv6 网络设置是 运行 10.11.5。

-我已经测试了Apple测试的确切版本。我使用 buddybuild 作为构建自动化工具,他们给我发了一封电子邮件,其中包含他们上传到 iTunes connect 的版本。

-应用向 https://greenrobot.com (and also incldues advertising and analytics libraries). No hardcoded IP addresses in my code. GreenRobot looks like it is setup for IPv6: https://ip6.nl/#greenrobot.com

发出网络请求

我怀疑这与评论者建议的广告和分析代码无关。它与服务器与 IPv6 的兼容性有关。我使用 Linode。我让 linux 服务器管理员在我的服务器上为我升级到 IPv6。如果广告或分析无法连接,它们只会默默地失败,玩游戏没有问题。问题是与我的游戏服务器通信,该服务器仅在 IPv6 下无法运行。

根据回答: I used this site to test my site's compatibility: http://ready.chair6.net/ - http://ready.chair6.net/?url=https://greenrobot.com

有趣的是,Apple.com、Google.com、Facebook.com、Twitter.com 都不合规。我能找到的唯一一个像我现在的网站一样完全合规的域名是 arin.net.

进行这些更改后,我的应用现已获得批准。注意我还添加了一些关于没有连接的错误检查并显示适当的错误屏幕。但由于其他 Whosebug 发布者也有 IPv6 服务器问题,而且仅添加错误检查会导致应用程序突然连接并没有多大意义,我非常确信这是服务器问题。

另一件有趣的事情是,我在 phone 上与一位 iOS 开发人员交谈,他在 6 月 1 日之后批准了更新。他们正在使用 AWS,并且不知道我所说的关于 AWS 不能在 IPv6 下工作的内容。很奇怪,除非 Apple 只要求在一定比例的应用程序上使用 IPv6。

编辑:新信息:来自下面的评论:"If your server has an IPv6 record (i.e. claims to support IPv6), but your server's IPv6 support is broken, then it won't work on IPv6 obviously. But if your sever doesn't have an IPv6 record at all (i.e. claims to IPv4-only), it should work without any problems."

就其价值而言,我也看到了这一点,正如所讨论的 here,截至 2016 年 6 月 14 日的文档与 App Review Team 的设置之间显然存在差异。