应用程序由于IPV6问题被App Store拒绝

问题描述:

由于IPV6问题,我的应用程序被应用程序商店拒绝。下面是应用商店的信息应用程序由于IPV6问题被App Store拒绝

  1. 1性能:应用程序完整性准则2.1 - 性能
  2. 您的应用上连接到一个iPad运行IOS 10.3.1坠毁IPv6 网络当我们:

    输入提供的凭据。该应用程序加载了一秒钟,然后 坠毁。当重新启动应用程序时,它显示我们暂停“登录” ,但该应用程序加载一会儿并再次崩溃。

    发生这种情况时,使用你的应用程序:

  • 在的Wi-Fi

我们附上详细的崩溃日志来帮助解决这个问题。

下一步

要解决此问题,请修改您的应用程序和测试设备 上,同时连接到IPv6网络(所有的应用程序必须支持IPv6),以 确保其运行正常。

资源

有关如何symbolicate和阅读崩溃日志,请 评审技术说明TN2151理解和分析应用程序崩溃 报告信息。

有关支持IPv6网络的信息,请查看 支持IPv6 DNS64/NAT64网络和关于网络。

开始=>

帮我解决这个问题。

我在iOS中面临这个问题。比我更改我的可达性类互联网连接方法和我的应用程序批准。如果你想使IPv6网络在您的系统比请

https://developer.apple.com/library/content/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/UnderstandingandPreparingfortheIPv6Transition/UnderstandingandPreparingfortheIPv6Transition.html 

目标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]; 
} 

斯威夫特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, { 
$0.withMemoryRebound(to: sockaddr.self, capacity: 1) { 
    SCNetworkReachabilityCreateWithAddress(nil, $0) 
} 
}) 
} 
+0

这在下文中最好的给你上面swift3代码或代码: 'VAR zeroAddress = SOCKADDR_IN(sin_len:0,sin_family:0 ,sin_port:0,sin_addr:in_addr(s_addr:0),sin_zero:(0,0,0,0,0,0,0)) zeroAddress.sin_len = UInt8(sizeofValue(zeroAddress)) zeroAddress.sin_family = sa_family_t(AF_INET )' –

+1

你的代码是在ipv4上面我的代码ipv6 –

+0

但是你的代码支持IPV4和IPV6? –

是的。我在很多时候都面临过这个问题。 Apple现在仅支持那些兼容IPv6的应用程序。

首先,我按照他们的描述测试了我的应用程序。我在IPv6上进行了测试,但他们说没有收到任何错误。所以在连接到IPv6后首先完成调试。如果你觉得,它运作良好,然后做到这一点。

我通过不同的网站找到了我的网络的IPVersion。我截取了我在移动设备上连接的网络屏幕截图,并将这些屏幕截图发送给苹果进行审查(称这是对连接IPv6的证明)。

下面是几个网站,可帮助您找出您正在使用的版本。现在

Google IPv6 test

它接受

问题是,我使用了一些代码来检查应用程序是否连接到互联网与否。这些代码仅支持IPV4而不支持IPV6。所以我只是更新这些代码来支持IPV6。下面是代码:

Old Code:

var zeroAddress = sockaddr_in() 
zeroAddress.sin_len = UInt8(MemoryLayout.size(ofValue: zeroAddress)) 
zeroAddress.sin_family = sa_family_t(AF_INET) 

New Code:

var zeroAddress = sockaddr_in6() 
zeroAddress.sin6_len = UInt8(MemoryLayout.size(ofValue: zeroAddress)) 
zeroAddress.sin6_family = sa_family_t(AF_INET6)