需要iPv6兼容性 – iOS应用程序被苹果拒绝
6月1日之后,我将我的离子应用程序提交给iTunes连接,我收到了来自苹果的消息。
应用程序在IPv6networking上进行审查。 请确保您的应用程序支持IPv6networking ,因为需要 IPv6兼容性 。
有关支持IPv6networking的信息,请参阅支持iPv6 DNS64 / NAT64networking。
有关networking概述,请参阅关于networking。
我已经使用AFNetworking进行API调用。
请帮助找出相同的解决scheme。
谢谢。
如果您使用的是特定于IPv4的API或硬编码的IP地址,则需要更新代码。尽pipe所有NSURLSession和CFNetwork API(包括NSURLConnection)已经支持IPV6
正如苹果所提到的:
在WWDC 2015上,我们宣布在iOS 9中过渡到纯IPv6networking服务。从2016年6月1日起,提交给App Store的所有应用程序必须支持纯IPv6networking。 大多数应用程序不需要任何更改,因为NSURLSession和CFNetwork API已经支持IPv6。
如果您的应用程序使用特定于IPv4的API或硬编码的IP地址,则需要进行一些更改。
虽然。 苹果也build议不要使用IP地址文字,长期(不是必需的)
不要使用IP地址文字
确保您不是以点表示forms将IPv4地址文字传递给getaddrinfo和SCNetworkReachabilityCreateWithName等API。 而是使用高级networking框架和API的地址无关版本(例如getaddrinfo和getnameinfo),并传递它们的主机名或完全限定的域名(FQDN)。 请参阅getaddrinfo(3)Mac OS X开发人员工具手册页和getnameinfo(3)Mac OS X开发人员工具手册页。
注意:在iOS 9和OS X 10.11及更高版本中,NSURLSession和CFNetwork会自动在运行于DNS64 / NAT64networking的设备上本地合成IPv4文本中的IPv6地址。 但是,你仍然应该努力摆脱你的IP地址文字的代码
如果您正在使用AFNetworking Library,请确保将其更新到3.x以上的版本,因为它们似乎已经更新了less量的东西。 – > AFNetworking增加了对IPv6可达性的支持。
有关详细信息,请点击此链接
支持纯IPv6networking
另外,要testing
你可以按照这个详细的教程:
教程如何对testing您的应用程序内换了IPv6的兼容性
由于IPv6networking而导致的苹果应用拒绝解决scheme
我对IPv6的互联网可达性检查工作不好。它总是显示networking不存在。当我使用此代码时,苹果在24小时内批准了我的应用程序。 谢谢
在类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; }
编辑:
$ grep -nr 'AF_INET*' . ./Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.m:122: address.sin_family = AF_INET; replace AF_INET; to AF_INET6;
其实我正在使用AFNetworking库调用API。
我只是用我现有的类从GithubreplaceAFNetworkReachabilityManager类。 而苹果不再有问题了。
而我的应用程序现在工作。