繁体   English   中英

在以下情况下,您的应用在运行iOS 11.1且已连接到IPv6网络的iPad和iPhone上崩溃了:

[英]Your app crashed on iPad and iPhone running iOS 11.1 connected to an IPv6 network when we:

我的应用程序在测试时,我的应用程序在IPad和Iphone上运行良好。我正在使用AFNetworking 2.0进行API的调用,并且由于IPv6网络,苹果应用程序的评论又一次又一次地拒绝了我的应用程序,我使用了硬编码的IP地址,例如http:// 192.230.66.71/XXXXXXXX/XX/我对此感到沮丧,请有人帮助我现在该怎么办。

您不应该根据Apple的规则使用硬编码IP地址。

不要使用IP地址文字,请确保未将点号的IPv4地址文字传递给getaddrinfo和SCNetworkReachabilityCreateWithName等API。 相反,请使用高级网络框架和与地址无关的API版本(例如getaddrinfo和getnameinfo),并向它们传递主机名或完全限定的域名(FQDN)。 请参见getaddrinfo(3)Mac OS X开发人员工具手册页和getnameinfo(3)Mac OS X开发人员工具手册页。

注意:在iOS 9和OS X 10.11及更高版本中,NSURLSession和CFNetwork在运行DNS64 / NAT64网络的设备上本地自动从IPv4文字合成IPv6地址。 但是,您仍然应该删除IP地址文字的代码。

我认为您应该注意两件事:

1.不建议使用硬编码IP地址,但根据上述说明和搜索,我发现一些开发人员在其应用中通过了带有IPv4地址文字的审核。
因此,请尝试先不要在您的应用中使用IPv4地址文字,然后确保您注意到我下面提到的第二件事。

2.您的应用可能会因其他与网络相关的问题而崩溃。 就像我之前评论的一样。 我将其粘贴在此处,以使您更加清楚。

确保安全处理接收到的数据。 我的应用程序由于相同的原因而被拒绝,但我发现真正的问题是,在某些情况下,接收到的数据可能是服务器错误,这导致应用程序崩溃。 我通过修复该错误通过了应用审查。

例如,该应用程序在您的网络下运行良好,但在其他地方可能会失败,例如连接速度太慢并导致超时。 在这种情况下,您将获得一些服务器错误数据或空数据,然后如果在代码中强行解包数据,则应用程序将崩溃。 就我而言,Apple拒绝了我的具有IPv6问题的应用程序,这不是真正的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM