需要 iPv6 兼容性 - iOS 应用被苹果拒绝
required iPv6 compatibility - iOS app rejected by apple
6 月 1 日后,我将我的 ionic 应用程序提交到 itunes connect,我收到了苹果的消息。
应用程序在 IPv6 网络上进行审核。 请确保您的应用支持 IPv6 网络,因为需要 IPv6 兼容性 。
有关支持 IPv6 网络的信息,请参阅支持 iPv6 DNS64/NAT64 网络。
有关网络概述,请参阅关于网络。
我已经使用 AFNetworking 进行 API 通话。
请帮忙找出相同的解决方案。
谢谢。
如果您正在使用特定于 IPv4 的 API 或硬编码 IP 地址,您将需要更新您的代码,尽管所有 NSURLSession 和 CFNetwork API(包括 NSURLConnection)已经支持 IPV6
Apple 提到的:
At WWDC 2015 we announced the transition to IPv6-only network services
in iOS 9. Starting June 1, 2016 all apps submitted to the App Store
must support IPv6-only networking. Most apps will not require any
changes because IPv6 is already supported by NSURLSession and
CFNetwork APIs.
If your app uses IPv4-specific APIs or hard-coded IP addresses, you
will need to make some changes.
虽然。 Apple 还建议不要长期使用 IP 地址字面量(没有必要)
Don’t Use IP Address Literals
确保您没有将点表示法中的 IPv4 地址文字传递给
getaddrinfo 和 SCNetworkReachabilityCreateWithName 等 API。
相反,使用高级网络框架和地址不可知
API 的版本,例如 getaddrinfo 和 getnameinfo,并传递它们
主机名或完全限定的域名 (FQDN)。请参阅获取地址信息 (3)
Mac OS X 开发者工具手册页和 getnameinfo(3) Mac OS X
开发人员工具手册页。
注意:在iOS9和OSX 10.11及以后的版本中,NSURLSession和CFNetwork
在本地自动从 IPv4 文字合成 IPv6 地址
在 DNS64/NAT64 网络上运行的设备。但是,您仍然应该
努力摆脱您的 IP 地址文字代码
如果您正在使用 AFNetworking 库,请确保将其更新到 3.x 以上的版本,因为他们似乎已经更新了一些东西。 -- > AFNetworking Added support for IPv6 to Reachability.
详细信息请关注link
另外,要测试
您可以按照这个详细教程:
实际上我正在调用 API 使用 AFNetworking 库。
我刚刚用我现有的 类 替换了 Github 中的 AFNetworkReachabilityManager 类。苹果就没有问题了。
我的应用现在可以运行了。
苹果应用因IPv6网络被拒绝的解决方法
我的 IPv6 互联网可达性检查不工作 well.It 总是显示缺少 network.when 我使用此代码,苹果在 24 小时内批准了我的应用程序。谢谢
更改 AFNetworking 库 Class AFNetworkReachabilityManager
中的以下代码行
将 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;
从 API URL 中删除点符号,因为 IPv6 网络不允许 URL 中的点符号。我从 API URL 中删除了它对我的工作。
6 月 1 日后,我将我的 ionic 应用程序提交到 itunes connect,我收到了苹果的消息。
应用程序在 IPv6 网络上进行审核。 请确保您的应用支持 IPv6 网络,因为需要 IPv6 兼容性 。
有关支持 IPv6 网络的信息,请参阅支持 iPv6 DNS64/NAT64 网络。
有关网络概述,请参阅关于网络。
我已经使用 AFNetworking 进行 API 通话。
请帮忙找出相同的解决方案。
谢谢。
如果您正在使用特定于 IPv4 的 API 或硬编码 IP 地址,您将需要更新您的代码,尽管所有 NSURLSession 和 CFNetwork API(包括 NSURLConnection)已经支持 IPV6
Apple 提到的:
At WWDC 2015 we announced the transition to IPv6-only network services in iOS 9. Starting June 1, 2016 all apps submitted to the App Store must support IPv6-only networking. Most apps will not require any changes because IPv6 is already supported by NSURLSession and CFNetwork APIs.
If your app uses IPv4-specific APIs or hard-coded IP addresses, you will need to make some changes.
虽然。 Apple 还建议不要长期使用 IP 地址字面量(没有必要)
Don’t Use IP Address Literals
确保您没有将点表示法中的 IPv4 地址文字传递给 getaddrinfo 和 SCNetworkReachabilityCreateWithName 等 API。 相反,使用高级网络框架和地址不可知 API 的版本,例如 getaddrinfo 和 getnameinfo,并传递它们 主机名或完全限定的域名 (FQDN)。请参阅获取地址信息 (3) Mac OS X 开发者工具手册页和 getnameinfo(3) Mac OS X 开发人员工具手册页。
注意:在iOS9和OSX 10.11及以后的版本中,NSURLSession和CFNetwork 在本地自动从 IPv4 文字合成 IPv6 地址 在 DNS64/NAT64 网络上运行的设备。但是,您仍然应该 努力摆脱您的 IP 地址文字代码
如果您正在使用 AFNetworking 库,请确保将其更新到 3.x 以上的版本,因为他们似乎已经更新了一些东西。 -- > AFNetworking Added support for IPv6 to Reachability.
详细信息请关注link
另外,要测试
您可以按照这个详细教程:
实际上我正在调用 API 使用 AFNetworking 库。
我刚刚用我现有的 类 替换了 Github 中的 AFNetworkReachabilityManager 类。苹果就没有问题了。
我的应用现在可以运行了。
苹果应用因IPv6网络被拒绝的解决方法
我的 IPv6 互联网可达性检查不工作 well.It 总是显示缺少 network.when 我使用此代码,苹果在 24 小时内批准了我的应用程序。谢谢
更改 AFNetworking 库 Class AFNetworkReachabilityManager
中的以下代码行将 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;
从 API URL 中删除点符号,因为 IPv6 网络不允许 URL 中的点符号。我从 API URL 中删除了它对我的工作。