【问题标题】:How to setup an IPv6 only network for iOS app testing?如何为 iOS 应用程序测试设置仅 IPv6 的网络?
【发布时间】:2017-02-16 06:37:37
【问题描述】:

我第一次读到关于在 AppStore 中发布的所有新应用程序中强制支持纯 IPv6 网络的信息是昨天,当时我的应用程序被 Apple 拒绝,并说明这是原因。

所以,我一直在尝试从头到尾重现这一点。我已经通过 Apple's guide 进行了同样的操作,并设置了一个 NAT64 网络并将我的 iPhone 连接到它 (screenshot)。

但是,当我访问 test-ipv6.com 或任何其他网站以检查设备上的 IPv6 连接时,它会显示“未检测到 IPv6 地址”消息.另外,我无法加载 ipv6.google.com,据报道它只能在 IPv6 网络上加载(如果我错了,请纠正我)。

我是否遗漏了什么,或者我可以做些什么来测试我的应用程序的仅 IPv6 网络兼容性?

P.S:当我在这个 NAT64 网络中尝试时,我的应用程序工作正常并且页面加载正常。但是,在 Apple 的拒绝回复中,这些 API 最终失败了。

【问题讨论】:

  • You're not meant to see a global IPv6 address 当您从该网络访问 IPv6 测试页面时。您只会看到一个 IPv4 地址。在这种情况下,只有iOS设备和运行NAT64网络的Mac之间的本地网段使用IPv6。

标签: ios iphone app-store ipv6 appstore-approval


【解决方案1】:

您在使用 AFNetworking 吗? 如果是,请更新您的课程。 在 AFNetworkReachabilityManager 类的 AFNetworking 库中更改以下代码行

将 AF_INET 更改为 AF_INET6;

+ (instancetype)sharedManager {
    static AFNetworkReachabilityManager *_sharedManager = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        struct sockaddr_in address;
        bzero(&address, sizeof(address));
        address.sin_len = sizeof(address);
        address.sin_family = AF_INET6;  //Change AF_INET TO AF_INET6
        _sharedManager = [self managerForAddress:&address];
    });

    return _sharedManager;
}

否则,您使用什么类或库进行网络连接?

编辑:根据您的要求,这里有一个关于如何测试您的应用并检查它是否已准备好 ipv6 的教程:

http://www.brianjcoleman.com/tutorial-how-to-test-your-app-for-ipv6-compatibility/

Alternate link over Waybackmachine

它涵盖了在您的 mac 中创建一个仅 IPv6 NAT64 的网络,然后从您的 mac 共享互联网连接到您的其他 wifi(或蓝牙或其他)设备。

然后您可以在您的应用中进行所有测试,确保所有调用都是通过仅 ipv6 的网络进行的。

编辑2:

那些网站将无法看到您的 ipv6 ip 地址。如果您使用该教程,则 ipv6 地址是 private(网络内部)地址。它用于在你的 iPhone 和你的 mac 之间进行通信。 互联网网站看到的是您的 PUBLIC ip,它由您的互联网服务提供商提供给您的调制解调器,通常是 ipv4 网络。

因此得出结论:您的应用正在使用其 ipv6 地址。那些测试网站不会检测到它,因为它们只看到您的路由器/调制解调器的公共地址。

请参阅This link 以了解有关公共 IP 地址与私人 IP 地址的更多信息。

如果这是您搜索的内容,或者如果它解决了您的问题,请接受答案:)

【讨论】:

  • 是的,我正在使用 AFNetworking,并且我已将我的 AFNetworking 从 2 更新到 3.1(它对此类和提供 IPv6 支持的函数进行了更新)。这可能已经解决了问题(而且我还没有向 AppStore 提交包含此更改的构建)。我的问题实际上是关于在 iPhone 上的 IPv6 网络上测试我的应用程序。
  • 好吧。我将使用有关如何在 ipv6 网络上测试应用程序的教程来更新答案。 + 别担心,我自己也遇到过这个问题,更新 AFNetworking 允许该应用程序获得批准 :)
  • 对不起哥们!这与我在问题中提到的教程相同。访问任何 IPv6 测试网站都会产生相同的结果:“未检测到 IPv6 地址”
  • 您将在这些网站上看到的 IP 地址是您的公共 IP,即您的调制解调器/路由器 IP,而不是您的 iPhone 的 IP。这是因为您使用调制解调器/路由器(如果您使用 Internet 共享,则使用您的 Mac)作为连接到 Internet 的中间设备。因此,ipv6 正在您的设备中工作以连接到您的 mac。但是那些网站不会看到这个IP。这是国际的东西。他们只会看到公共 ip(通常是 ipv4)。请参考我的回答中的第二次编辑
  • 我明白了。你找到问题了吗?您的应用获得批准了吗?
猜你喜欢
  • 1970-01-01
  • 2012-12-26
  • 2016-11-24
  • 2017-01-06
  • 1970-01-01
  • 2010-11-01
  • 2020-01-13
  • 2016-09-02
  • 2016-10-24
相关资源
最近更新 更多