【问题标题】:App rejected because of ipv6 network connectivity issues应用因 ipv6 网络连接问题而被拒绝
【发布时间】:2017-03-26 08:47:52
【问题描述】:

拒绝我的应用的原因是 ipv6 网络连接问题。

首先,我使用 AWS 作为我的后端服务器。我使用我的域名连接到我的服务器,例如http://ec2-XX-XXX-XXX-XXX.compute-1.amazonaws.com:80/parse,其中 X 是一个数字

其次,我尝试通过以下方式重现该问题 a) 转到我的 iPhone 设置 -> 开发人员 -> 状态(Newwork 链接调节器) -> 创建一个与 LTE 完全相同但协议为 IPv6 的配置文件 b) 按照苹果的建议做同样的事情。使用迅雷以太网连接我的 MacBook 并与我的 iPhone 共享 wifi。 我的应用适用于这两种情况。

第三,我看一下 AWS 关于支持 IPv6 的问题。链接在这里。 http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/ResourceRecordTypes.html#AAAAFormat 似乎什么都不应该改变。我不太确定,因为我不熟悉服务器。

有什么建议吗?谢谢。


更新

如果您使用的是旧苹果的 Rechability 类,并且如果您使用的是旧的 AFNetworking 的 AFNetworkReachabilityManager 类

响应 - 我没有为 Reachability 或 AFNetworking 实现任何代码。我应该担心这些类在 Parse 等其他来源的框架中吗?

如果您使用的是硬编码的 IP 地址

响应:我的域名是http://ec2-XX-XXX-XXX-XXX.compute-1.amazonaws.com:80/parse,其中 X 是一个数字。所以,我认为这应该没问题。

【问题讨论】:

  • 在许多(大多数?)这些情况下,第三方库或框架会崩溃。也许是广告或分析代码?
  • 我的应用终于通过了。感谢您的帮助。

标签: ios xcode server ipv6 appstore-approval


【解决方案1】:

有几个点经常导致此问题。

  • 如果您使用的是旧苹果的 Rechability 类,请将其替换为最新的,因为旧的 Rechability class 与 `ipv6 only 网络不兼容。
  • 对于旧的 AfNetworking 库也是如此,如果您使用的是旧的 AFNetworking's AFNetworkReachabilityManager class,则将此类替换为最新的 AFNetworkReachabilityManager 类或将整个库替换为最新的类
  • 如果您将hard coded IP addresses 用作api,则将其替换为域名。例如,您不应该使用像:http://192.168.1.11:4444/login 这样的 api。你的 api 应该是:http://api.example.com/login

正如 Apple 文档所述,

确保您没有将 IPv4 地址文字以点表示法传递给 getaddrinfo 和 SCNetworkReachabilityCreateWithName 等 API。 相反,使用高级网络框架和地址不可知 API 的版本,例如 getaddrinfo 和 getnameinfo,并传递它们 主机名或完全限定域名 (FQDN)。请参阅 getaddrinfo(3) Mac OS X 开发者工具手册页和 getnameinfo(3) Mac OS X 开发者工具手册页。

注意:在 iOS 9 和 OS X 10.11 及更高版本中,NSURLSession 和 CFNetwork 在本地自动从 IPv4 文字合成 IPv6 地址 在 DNS64/NAT64 网络上运行的设备。但是,您仍然应该 努力摆脱 IP 地址文字的代码

  • 并且您的 api 托管服务器应该与ipv6 兼容(这不是主要问题,因为几乎服务器都与 ipv6 兼容)

您可以参考Apple documentation了解更多详情

您将了解如何在您的 mac 上创建仅 ipv6 的网络以进行测试,也可以通过上面的苹果文档进行测试!

【讨论】:

  • 如果可能,您应该从您使用的任何框架更改旧的 Rechability,因为如果该框架在内部使用这个旧的 Rechability 类,那么它可能会在 ipv6 上产生问题!
  • 我的应用终于通过了。感谢您的帮助。
【解决方案2】:

我的应用已获批准。

我唯一改变的是

  • 将签名设置为“自动管理签名”,因为当我将构建配置更改为“发布”时,我的应用程序无法运行(我不确定这是否与 IPv6 有关。我觉得这有点奇怪)

其他使用 Google Map api、Parse 在 AWS 中托管和 Facebook 登录的人的参考:

  • 我认为他们的框架很好地通过了 IPv6 要求。

我仍然在质疑为什么 Apple 在我上次提交时说我的应用未能通过 IPv6 要求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-28
    • 2016-11-24
    • 1970-01-01
    • 1970-01-01
    • 2017-07-01
    • 1970-01-01
    • 2017-03-09
    • 1970-01-01
    相关资源
    最近更新 更多