当我们执行以下操作时,您的应用程序在连接到IPv6网络的运行iOS 11.1的iPad和iPhone上崩溃:

时间:2017-11-12 07:49:43

标签: ios

当我正在测试时,我的应用程序在IPad和Iphone上工作正常。我正在使用AFNetworking 2.0进行API调用和Apple应用程序审核再次拒绝我的应用程序&再次由于IPv6网络,我使用的是硬编码的IP地址,如http://192.230.66.71/XXXXXXXX/XX/ 我很沮丧,请任何人帮助我现在做什么。

1 个答案:

答案 0 :(得分:0)

您不应该根据Apple's rule使用硬代码IP地址。

  

不要使用IP地址文字   确保您没有将点地址表示法中的IPv4地址文字传递给API,例如getaddrinfo和SCNetworkReachabilityCreateWithName。相反,使用高级网络框架和地址无关的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问题,这不是真正的问题。