我第一次阅读有关IPv6的强制性支持仅在AppStore中发布的所有新应用程序中的网络是昨天,当时我的应用程序被Apple拒绝,并说明这是原因。
所以,我一直试图从我的角度重现这一点。我已经通过了Apple's guide并设置了一个NAT64网络并将我的iPhone连接到它(screenshot)。
但是,当我转到 test-ipv6.com 或任何其他网站检查设备上的IPv6连接时,它显示" 未检测到IPv6地址"信息。此外,我无法加载 ipv6.google.com ,据报道仅在IPv6网络上加载(如果我错了,请更正我)。
我是否遗漏了某些内容,或者我还能做些什么来测试我的应用仅支持IPv6网络兼容性?
P.S:当我在这个NAT64网络中尝试时,我的应用程序工作正常,页面加载正常。但是,在Apple的拒绝回复中,这些API最终失败了。
答案 0 :(得分:0)
将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的网络进行的。
<强> EDIT2:强>
那些能够看到你的ipv6 ip地址的网站。如果您使用该教程,则ipv6地址是私有(网络内部)地址。它用于在您的iPhone和Mac之间进行通信。 互联网网站看到的是您的 PUBLIC IP,由您的互联网服务提供商提供给您的调制解调器,通常是ipv4网络。
总而言之:您的应用正在使用其ipv6地址。那些测试网站无法检测到它,因为它们只能看到路由器/调制解调器的公共地址。
请参阅This link以了解有关公共与私人IP地址的更多信息。
如果这是您搜索的内容,或者它是否解决了您的问题,请接受答案:)