菜鸟教程小白 发表于 2022-12-11 17:46:17

ios - 如何为 iOS 应用程序测试设置仅 IPv6 的网络?


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

<p>所以,我一直在尝试从头到尾重现这一点。我已经通过<a href="https://developer.apple.com/library/content/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/UnderstandingandPreparingfortheIPv6Transition/UnderstandingandPreparingfortheIPv6Transition.html#//apple_ref/doc/uid/TP40010220-CH213-SW1" rel="noreferrer noopener nofollow">Apple&#39;s guide</a>同样的,并设置了一个 NAT64 网络并将我的 iPhone 连接到它(<a href="http://i.stack.imgur.com/LtrGU.png" rel="noreferrer noopener nofollow">screenshot</a>)。</p>

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

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

<p><strong>P.S:</strong>当我在这个 NAT64 网络中尝试时,我的应用程序工作正常并且页面加载正常。但是,在 Apple 的拒绝回复中,这些 API 最终失败了。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您在使用 AFNetworking 吗?
如果是,请更新您的类(class)。
在 AFNetworkReachabilityManager 类的 AFNetworking 库中更改以下代码行</p>
<p>将 AF_INET 更改为 AF_INET6;</p>
<pre><code>+ (instancetype)sharedManager {
    static AFNetworkReachabilityManager *_sharedManager = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&amp;onceToken, ^{
      struct sockaddr_in address;
      bzero(&amp;address, sizeof(address));
      address.sin_len = sizeof(address);
      address.sin_family = AF_INET6;//Change AF_INET TO AF_INET6
      _sharedManager = ;
    });

    return _sharedManager;
}
</code></pre>
<p>否则,您使用什么类或库进行网络连接?</p>
<p>编辑:根据您的要求,这里有一个关于如何测试您的应用并检查它是否已准备好 ipv6 的教程:</p>
<p> <a href="http://www.brianjcoleman.com/tutorial-how-to-test-your-app-for-ipv6-compatibility/" rel="noreferrer noopener nofollow">http://www.brianjcoleman.com/tutorial-how-to-test-your-app-for-ipv6-compatibility/</a> </p>
<p> <a href="https://web.archive.org/web/20180207202735/http://www.brianjcoleman.com/tutorial-how-to-test-your-app-for-ipv6-compatibility/" rel="noreferrer noopener nofollow">Alternate link over Waybackmachine</a> </p>
<p>它涵盖了在您的 Mac 中创建一个仅 IPv6 NAT64 的网络,然后从您的 Mac 共享互联网连接到您的其他 wifi(或蓝牙或其他)设备。</p>
<p>然后您可以在您的应用中进行所有测试,确保所有调用都是通过仅 ipv6 的网络进行的。</p>
<p><strong>编辑2:</strong></p>
<p>那些网站将无法看到您的 ipv6 ip 地址。如果您使用该教程,则 ipv6 地址是 <strong>private</strong>(网络内部)地址。它用于在你的 iPhone 和你的 mac 之间进行通信。
互联网网站看到的是您的 <strong>PUBLIC</strong> ip,它由您的互联网服务提供商提供给您的调制解调器,通常是 ipv4 网络。</p>
<p>因此得出结论:您的应用正在使用其 ipv6 地址。那些测试网站不会检测到它,因为它们只看到您的路由器/调制解调器的公共(public)地址。</p>
<p>请引用<a href="https://www.iplocation.net/public-vs-private-ip-address" rel="noreferrer noopener nofollow">This link</a>阅读有关公共(public) IP 地址与私有(private) IP 地址的更多信息。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 如何为 iOS 应用程序测试设置仅 IPv6 的网络?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/39914245/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/39914245/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 如何为 iOS 应用程序测试设置仅 IPv6 的网络?