【问题标题】:Can't reproduce (IPv6?) connection issue that App Store review team is having无法重现 App Store 审核团队遇到的(IPv6?)连接问题
【发布时间】:2016-10-05 04:52:37
【问题描述】:

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

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

我重新提交了一个应用程序。以同样的理由再次被拒绝。我去买了迅雷适配器并设置了 IPv6。现在我可以很好地连接到该应用程序。我也可以很好地连接到另一个仍然有非常旧的可达性代码的应用程序。我的主要问题是我希望它以与 Apple 破坏相同的方式破坏,因此我可以正确修复它。

注意事项:

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

-我在 Apple Developer Forums 上发布了此内容,但 10 小时后仍在等待批准: https://forums.developer.apple.com/message/141461#141461

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

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

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

-该应用程序向https://greenrobot.com 发出网络请求(还包括广告和分析库)。我的代码中没有硬编码的 IP 地址。 GreenRobot 看起来像是为 IPv6 设置的:https://ip6.nl/#greenrobot.com

【问题讨论】:

  • 您是否检查过广告和分析库是否合规?
  • 我希望在这里重现 Apple 遇到的故障,而不是在无法验证修复的情况下升级代码。
  • 失败可能在广告或分析代码中...
  • 我们不知道 Apple 的设置,所以你不能完全复制它,但我猜他们删除了所有 IPv4 连接,只允许 IPv6 连接。他们还可能正在运行某种网络数据包分析,以检查当只有 IPv6 接口可用时没有 IPv4 请求发出。无论如何,在您进行测试时,您应该要求每个第三方框架为您验证代码是否支持 IPv6。毕竟这是他们的代码。
  • @Andy 我面临同样的拒绝(iPv6 连接)问题,但无法重现。我已经按照 Apple 的建议在位置 IPv6 网络上对其进行了测试,并且运行良好。我不明白为什么这个问题会出现在 Apple 审查团队中。请提出建议。

标签: ios networking ipv6


【解决方案1】:

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

根据回答: https://stackoverflow.com/a/37689996/211457我用这个网站来测试我的网站的兼容性:http://ready.chair6.net/ - http://ready.chair6.net/?url=https://greenrobot.com

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

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

另一件有趣的事是我通过电话与一位 iOS 开发人员交谈,他在 6 月 1 日之后获得了更新批准。他们正在使用 AWS,但不知道我在说什么 AWS 不能在 IPv6 下工作。很奇怪,除非 Apple 只在一定比例的应用上要求 IPv6。

编辑:新信息:来自下面的评论:“如果您的服务器有 IPv6 记录(即声称支持 IPv6),但您的服务器的 IPv6 支持已损坏,那么它显然无法在 IPv6 上运行。但如果您的服务器根本没有 IPv6 记录(即声称仅支持 IPv4),它应该可以正常工作。”

【讨论】:

  • 我不完全确定是这样,但我的应用更新已获批准,因此我不想对此置之不理。正如我所说,当我在我创建的 IPv6 网络下测试时,Apple 拒绝的应用程序版本对我有用!困惑的是,我用这个答案作为线索:stackoverflow.com/a/37689996/211457 那个回答者也接到了苹果的电话,告诉他这就是答案。当我的团队实施他的解决方案,然后使用 chair6 网站进行测试时,我的应用获得了批准。
  • user102008,也请查看对此问题的评论:stackoverflow.com/q/37725762/211457“将我的 dns 更改为 2001:778::37 可以解决问题。”
  • @Andy 我的设备已连接到 IPv6 网络。当我调用连接到 IPv4 的 API 时显示错误。错误域=NSURLErrorDomain 代码=-1003 “找不到具有指定主机名的服务器。” UserInfo={NSErrorFailingURLStringKey=, _kCFStreamErrorCodeKey=8 请给我建议
  • @user102008 我的设备已连接到 IPv6 网络。当我调用连接到 IPv4 的 API 时显示错误。错误域=NSURLErrorDomain 代码=-1003 “找不到具有指定主机名的服务器。” UserInfo={NSErrorFailingURLStringKey=, _kCFStreamErrorCodeKey=8 如果我想从 IPv6 连接到 IPv4 我应该怎么做请给我建议
  • @VJVJ ready.chair6.net 网站对您的服务器有何评价?
【解决方案2】:

对于它的价值,我也看到了这一点,并且正如 here 所讨论的那样,截至 2016 年 6 月 14 日的文档与应用审查团队的设置之间显然存在差异。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多