应用因 IPV6 问题被 App Store 拒绝
App was rejected by App Store because of IPV6 issues
由于 IPV6 问题,我的应用被应用商店拒绝。这是 App Store 的信息
- 1 Performance: App Completeness Guideline 2.1 - Performance
Your app crashed on iPad running iOS 10.3.1 connected to an IPv6
network when we:
entered the provided credentials. The app loaded for a second and then
crashed. When relaunching the app it appears we’re stilled “logged in”
but the app loads for a moment and crashes again.
This occurred when your app was used:
- On Wi-Fi
We have attached detailed crash logs to help troubleshoot this issue.
Next Steps
To resolve this issue, please revise your app and test it on a device
while connected to an IPv6 network (all apps must support IPv6) to
ensure that it runs as expected.
Resources
For information on how to symbolicate and read a crash log, please
review Tech Note TN2151 Understanding and Analyzing Application Crash
Reports.
For information about supporting IPv6 Networks, please review
Supporting IPv6 DNS64/NAT64 Networks and About Networking.
我该如何解决这个问题?
是的。我也曾多次遇到过这个问题。 Apple 现在仅支持与 IPv6 兼容的应用程序。
首先我按照他们的描述测试了我的应用程序。我在 IPv6 上进行了测试,但没有收到他们所说的任何错误。所以连接上IPv6后先完成调试。如果你觉得它工作正常,那么就这样做。
我通过不同的网站找到了我网络的IPVersion。我在手机上截屏了我连接的网络,并将这些屏幕截图发送给苹果进行审核(说这是连接到 IPv6 的证明)。
下面是几个网站,可帮助您确定您使用的是哪个版本。
现已接受
我在 iOS 遇到过这个问题。比我更改我的 reachblility class 互联网连接方法和我的应用程序批准。如果您想在您的系统中建立 Ipv6 网络,请检查
https://developer.apple.com/library/content/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/UnderstandingandPreparingfortheIPv6Transition/UnderstandingandPreparingfortheIPv6Transition.html
Objective c
+ (instancetype)reachabilityForInternetConnection
{
struct sockaddr_in6 zeroAddress;
bzero(&zeroAddress, sizeof(zeroAddress));
zeroAddress.sin6_len = sizeof(zeroAddress);
zeroAddress.sin6_family = AF_INET6;
return [self reachabilityWithAddress: (const struct sockaddr *) &zeroAddress];
}
Swift 3
func ipv6Reachability() -> SCNetworkReachability?
{
var zeroAddress = sockaddr_in6()
zeroAddress.sin6_len = UInt8(MemoryLayout<sockaddr_in>.size)
zeroAddress.sin6_family = sa_family_t(AF_INET6)
return withUnsafePointer(to: &zeroAddress, {
[=12=].withMemoryRebound(to: sockaddr.self, capacity: 1) {
SCNetworkReachabilityCreateWithAddress(nil, [=12=])
}
})
}
问题是我使用了一些代码来检查应用程序是否连接到互联网。这些代码仅支持 IPV4,不支持 IPV6。所以我只是更新这些代码以支持 IPV6。这是代码:
旧代码:
var zeroAddress = sockaddr_in()
zeroAddress.sin_len = UInt8(MemoryLayout.size(ofValue: zeroAddress))
zeroAddress.sin_family = sa_family_t(AF_INET)
新代码:
var zeroAddress = sockaddr_in6()
zeroAddress.sin6_len = UInt8(MemoryLayout.size(ofValue: zeroAddress))
zeroAddress.sin6_family = sa_family_t(AF_INET6)
由于 IPV6 问题,我的应用被应用商店拒绝。这是 App Store 的信息
- 1 Performance: App Completeness Guideline 2.1 - Performance
Your app crashed on iPad running iOS 10.3.1 connected to an IPv6 network when we:
entered the provided credentials. The app loaded for a second and then crashed. When relaunching the app it appears we’re stilled “logged in” but the app loads for a moment and crashes again.
This occurred when your app was used:
- On Wi-Fi
We have attached detailed crash logs to help troubleshoot this issue.
Next Steps
To resolve this issue, please revise your app and test it on a device while connected to an IPv6 network (all apps must support IPv6) to ensure that it runs as expected.
Resources
For information on how to symbolicate and read a crash log, please review Tech Note TN2151 Understanding and Analyzing Application Crash Reports.
For information about supporting IPv6 Networks, please review Supporting IPv6 DNS64/NAT64 Networks and About Networking.
我该如何解决这个问题?
是的。我也曾多次遇到过这个问题。 Apple 现在仅支持与 IPv6 兼容的应用程序。
首先我按照他们的描述测试了我的应用程序。我在 IPv6 上进行了测试,但没有收到他们所说的任何错误。所以连接上IPv6后先完成调试。如果你觉得它工作正常,那么就这样做。
我通过不同的网站找到了我网络的IPVersion。我在手机上截屏了我连接的网络,并将这些屏幕截图发送给苹果进行审核(说这是连接到 IPv6 的证明)。
下面是几个网站,可帮助您确定您使用的是哪个版本。
现已接受
我在 iOS 遇到过这个问题。比我更改我的 reachblility class 互联网连接方法和我的应用程序批准。如果您想在您的系统中建立 Ipv6 网络,请检查
https://developer.apple.com/library/content/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/UnderstandingandPreparingfortheIPv6Transition/UnderstandingandPreparingfortheIPv6Transition.html
Objective c
+ (instancetype)reachabilityForInternetConnection
{
struct sockaddr_in6 zeroAddress;
bzero(&zeroAddress, sizeof(zeroAddress));
zeroAddress.sin6_len = sizeof(zeroAddress);
zeroAddress.sin6_family = AF_INET6;
return [self reachabilityWithAddress: (const struct sockaddr *) &zeroAddress];
}
Swift 3
func ipv6Reachability() -> SCNetworkReachability?
{
var zeroAddress = sockaddr_in6()
zeroAddress.sin6_len = UInt8(MemoryLayout<sockaddr_in>.size)
zeroAddress.sin6_family = sa_family_t(AF_INET6)
return withUnsafePointer(to: &zeroAddress, {
[=12=].withMemoryRebound(to: sockaddr.self, capacity: 1) {
SCNetworkReachabilityCreateWithAddress(nil, [=12=])
}
})
}
问题是我使用了一些代码来检查应用程序是否连接到互联网。这些代码仅支持 IPV4,不支持 IPV6。所以我只是更新这些代码以支持 IPV6。这是代码:
旧代码:
var zeroAddress = sockaddr_in()
zeroAddress.sin_len = UInt8(MemoryLayout.size(ofValue: zeroAddress))
zeroAddress.sin_family = sa_family_t(AF_INET)
新代码:
var zeroAddress = sockaddr_in6()
zeroAddress.sin6_len = UInt8(MemoryLayout.size(ofValue: zeroAddress))
zeroAddress.sin6_family = sa_family_t(AF_INET6)