iOS App Rejection - 确保您的应用支持IPv6网络

时间:2016-07-05 16:14:49

标签: ios objective-c app-store ipv6

Apple拒绝了我的应用iOS应用,过去两周我一直试图在商店购买此应用。

该应用需要一个带有IP,端口,帐号,客户端号码和帐户密钥的模拟帐户。我用这些信息为苹果创建了几个帐户,但我一直被拒绝。

起初它是由于UIBackgroundModes的位置,我需要为ios 9更改并添加免责声明。

我让苹果开发人员对审核所有信息进行了审核,以获得对该应用程序的访问权限。他们再次拒绝该应用程序注意到:请注意,应用程序将在IPv6网络上进行审核。请确保您的应用支持IPv6网络,因为需要IPv6兼容性。

我目前正在使用reachability 2.2来监控设备的状态。这对于IPv4网络下的所有测试都非常有效。

虽然有一个新版本reachability 3.0表示它完全支持IPv6。我不确定可达性是否是最新的,因为它们仍在使用AF_INET而不是文档中概述的AF_INET6。 Apple还删除了reachabilityForLocalWiFi,但我的应用程序包含它并监视IN_LINKLOCALNETNUM。

如果可以,我如何在iMac上设置IPv6网络?该应用程序使用IP地址(例如199.56.42.21)初始化与服务器的连接。我还没有IPv6网络,所以我尝试使用 set up a local IPv6 Wi-Fi network using your Mac中的iMac建立IPv6连接。问题是我的iMac在代理(使用以太网)后运行,外部网络在wifi上,在设置指南上它说不是通过wifi

3 个答案:

答案 0 :(得分:1)

我正在使用可达性 3.x,它支持IPV6。

我已通过IPV6网络亲自测试过它。我们的应用程序也经历了App Store审核。

如果您使用任何其他网络库,请使用以下链接测试IPV6支持 http://www.brianjcoleman.com/tutorial-how-to-test-your-app-for-ipv6-compatibility/

答案 1 :(得分:1)

刚刚使用cloudFlare等任何CDN注册了您的网站,您的应用将在下次无需将整个网站转移到任何其他服务器时获得批准。这是从app store获得批准的最简单方法。

答案 2 :(得分:0)

Internet协议版本6(IPv6)是Internet协议(IP)的最新版本,IP协议为网络上的计算机提供标识和定位系统,并通过Internet路由流量。

互联网连接的用户,设备和应用程序的数量正在快速增长,以至于原始版本的互联网协议(称为IPv4)的可用地址池正在迅速耗尽。 IPv4使用32位地址,可以支持直接连接到Internet的43亿台设备。替代协议称为IPv6,使用128位地址,提供大约三百四十万亿。

如今,Apple拒绝这些应用程序,因为应用程序应该支持IPv6网络。在我们的环境中,我们也面临着应用程序的相同情况,我们找到了解决此问题的方法之一。大多数应用程序不需要任何更改,因为NSURLSession和CFNetwork API已经支持IPv6。如果您的应用程序使用特定于IPv4的API或硬编码的IP地址,则需要进行一些更改。

Apple还建议不要长期使用IP地址文字,并确保没有将点地址表示法中的IPv4地址文字传递给API,例如getaddrinfo和SCNetworkReachabilityCreateWithName。相反,我们可以使用高级网络框架和地址无关的API版本,例如getaddrinfo和getnameinfo,并传递它们的主机名或完全限定的域名(FQDN)。如果您使用的是AFNetworking Library,请确保将其更新到3.x以上的版本,因为它们似乎已更新了一些内容。我们必须在AFNetworkReachabilityManager类中对AFNetworking库进行一些更改

+ (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;
}

我们需要在应用程序的上述模块中进行一些更改并添加到库中。完成此操作后,我们可以通过启用MAC中的Internet共享选项来测试应用程序的IPv6。

测试IPv6 DNS64 / NAT64兼容性 首先,我们需要确保Mac通过Wi-Fi连接到互联网。导航到系统首选项并选择共享选项,并确保在选择共享选项之前需要按住选项键。选择“Internet共享”,然后选中“创建NAT64网络”复选框。现在我们需要选择提供互联网连接的网络接口,如以太网,Wi-Fi,蓝牙PAN。

我在这里选择Wi-Fi来共享互联网连接并配置Wi-Fi网络选项。一旦配置了Wi-Fi,然后启用互联网共享选项。

一旦我们选择了互联网共享,它会要求提示开始共享您设备的互联网访问权限。

现在IOS设备已在共享网络中连接,我们可以检查该应用是否正在该网络上运行。