准备万全的应用还是无法通过App Store审核?别着急,可能是IPv6的锅

最近很多开发者向蒲公英反映,自己的iOS应用明明已经考虑的事无巨细了,却还是无法通过App Store的审核,是不是苹果的审核规则变的更严格了?

这是因为有些开发者可能没有注意到,5月4日的时候苹果在其开发者官网上有发过这样一条通知

这条通知中提到,2016年6月1日开始,所有提交到App Store上的应用必须支持IPv6-only的网络。

苹果还在最新的 App Store Review Guidelines中增加了这样的表述



同时苹果也声明,大部分应用不需要进行任何更改,因为NSURLSession和CFNetwork API已经支持IPv6了,所以使用NSURLSession和CFNetwork API进行开发的开发者们大可不必担心这个问题。
但是,如果你的应用使用了IPv4专属API或硬编码IP地址,那么就需要开发者对自己的应用做出一些更改了。

这样看来,那些应用没有过审的开发者们可能就恍然大悟了,不是自己不给力,而是苹果太淘气。

那么问题来了,到底怎样才能让自己的应用支持IPv6-only网络呢?

在苹果官方的文档中,给出了以下几个解决方案确保IPv6 DNS64/NAT64的兼容性:

使用高级网络框架

不要直接使用IP地址
使用容量更大,足以存储IPv6地址的地址结构,比如sockaddr_storage**
检查并删除不兼容IPv6 DNS64/NAT64的代码,比如:

inet_addr()
inet_aton()
inet_lnaof()
inet_makeaddr()
inet_netof()
inet_network()
inet_ntoa()
inet_ntoa_r()
bindresvport()
getipv4sourcefilter()
setipv4sourcefilter()

将IPv4类型的代码转换为IPv6的形式

无需预检(Preflight),直接连接网络
使用系统API生成IPv6地址


那么如何用Mac在本地搭建一个IPv6的测试环境呢?这里是操作步骤:

1.确保你的Mac以非Wi-Fi的方式连接到互联网
2.通过Dock、LaunchPad或Apple菜单打开系统偏好设置
3.按住键盘上的Option键并点击共享,且不要松开Option键

4.在共享服务列表中选择互联网共享



5.松开Option键
6.选择创建NAT64网络

7.选择一个网络接口,提供您的互联网连接



Tip:如果你的Mac是用有线拨号上网的话,请选择PPOE选项作为共享源。如果你的Mac是用有线上网(不用拨号的)的话,请选择Thunderbolt以太网有线网选项作为共享源。

8.将Wi-Fi选项打勾

9.点击Wi-Fi选项,配置网络名称和安全选项

10.选择互联网共享,启动本地网络

当共享处于活动状态后,在Wi-Fi显示处,会有一个朝上的箭头,这表示互联网共享已经启用,现在就有一个IPv6 NAT64网络可以让开发者并可以从其他设备访问并测试应用了。

Tip:为了确保测试只发生在本地IPv6网络上,请确保你的测试设备没有其他活动的网络接口。例如,如果你正在使用iOS设备进行测试,请确保蜂窝服务被禁用,所以你只能通过Wi-Fi测试。蒲公英建议开发者们可以先进入飞行模式后再打开Wi-Fi开关,确保设备仅连接在IPv6网络上。

更加具体详细的操作方法可以参考苹果官方文档:!(https://developer.apple.com/library/mac/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/UnderstandingandPreparingfortheIPv6Transition/UnderstandingandPreparingfortheIPv6Transition.html#//apple_ref/doc/uid/TP40010220-CH213-SW1)

这样的话,从开发到最终测试,应用对于IPv6-only网络支持的问题就可以迎刃而解了。
当然,如果你现在还是满头雾水或者感觉很麻烦的话,蒲公英还为您提供了一个更加方便的选择,那就是:

蒲公英iOS上架咨询服务!

其实跟其他被拒的理由相比,IPv6的问题实在是太小儿科了,比如说下面这两条,简直就是欲加之罪何患无辞:

2.12 Apps that are not very useful, unique, are simply web sites bundled as Apps, or do not provide any lasting entertainment value may be rejected.
10.6 Apple and our customers place a high value on simple, refined, creative, well thought through interfaces. They take more work but are worth it. Apple sets a high bar. If your user interface is complex or less than very good, it may be rejected.

大致的意思就是:只要是苹果觉得没用的、不好用的、难看的、没品位的,都会拒绝掉。

在使用过蒲公英服务的用户中,因为这两条被拒绝的非常多,但是每个情况都不太一样。苹果因为审核人员工作量太大,所以一般写的也不太清楚,如果开发者英文不好而且没有经验的话就会在这两个问题上卡很久。

而蒲公英iOS上架咨询服务就是针对各种App无法上架而推出的,我们有最专业的 iOS 应用开发团队,多年 App Store 上线经验,专业的预审帮助您找出被拒风险。成熟的技术团队为您详细的把控每一个上线规则,人工在线逐条对照,只为让您的应用审核一次通过

为了探究更深层次的被拒情况,我们做了细化的分析。根据应用功能、应用内容、提审材料、新审核准则、审核环境等方面,系统地发现应用中被拒的风险。我们的测试人员将全程与您在线交流,让您的应用一次过审,成功上线。

在我们收到预审请求后,我们的预审人员将全程跟踪整个应用预审过程。实时在线与您的开发团队进行沟通,帮助您解决被拒的问题。经过我们预审人员与您沟通过后的方案若不能顺利上架 App Store,我们将退还您全部费用。

详情请点击链接:https://zc.pgyer.com/review
专家测试报告示范:http://zc.pgyer.com/bug_report/report?brKey=review

推荐阅读更多精彩内容