We will reject apps for any content or behavior that we believe is over the line. What line, you ask? Well, as a Supreme Court Justice once said, “I'll know it when I see it”. And we think that you will also know it when you cross it.摘自苹果审核指南 https://developer.apple.com/app-store/review/guidelines/
是的,苹果才是真爸爸。
苹果App审核指南每年都会不定期地调整几次。通常在调整后,管理员登录developer后台,会收到苹果的推送让你点击“OK”,不过谁又会去仔细阅读那么一长段的指南呢?都是去ASO上看看好心人翻译提炼后的文章,顶多事后再去原文翻翻确认一下吧。
17年6月WWDC前后有一波常规调整。此次调整后审核流程加强了 自动化扫描关键字 的能力,我们团队一个月内连续两个版本、三个APP,提审近30次被拒。其中有被第三方SDK坑害的,也有我们自己一些“no zuo no die”自作聪明的行为惹怒了审核员的。好在最后经过不懈的修改和与审核团队沟通,终于通过。
总结一些有意思的点,供参考。
为什么被拒
1.私有API
不允许使用私有API
私有API包括两种,一种是代码中(包括第三方库)使用了与苹果私有API相同命名的API。另一种是代码中(包括第三方库)的确使用了私有API,这类私有API有可能在低版本iOS中是公开API,高版本被苹果私有化,要引起注意。
"2.5.1 Apps may only use public APIs and must run on the currently shipping OS. Learn more about public APIs. Keep your apps up-to-date and make sure you phase out any deprecated features, frameworks or technologies that will no longer be supported in future versions of an OS."
2.防审核
不允许使用基于绕开审核的技术,或利用隐藏功能来规避审核被拒风险。
"2.3.1 Don’t include any hidden or undocumented features in your app; your app’s functionality should be clear to end-users and App Review. Egregious or repeated behavior is grounds for removal from the Developer Program. We work hard to make the App Store a trustworthy ecosystem and expect our app developers to follow suit; if you’re dishonest, we don’t want to do business with you."
3.远程下载可执行代码
不允许远程下载可执行代码
"2.5.2 Apps should be self-contained in their bundles, and may not read or write data outside the designated container area, nor may they download, install, or execute code, including other apps. Apps designed to teach, develop, or test executable code may, in limited circumstances, download code provided that such code is not used for other purposes. Such apps must make the source code provided by the Application completely viewable and editable by the user."
4.在App store外升级APP
不允许使用第三方APP升级。不允许 包含 第三方可升级APP的平台的任何代码,哪怕你没有实际在使用升级功能。如蒲公英pgyer SDK。
违反的也是上一条"2.5.2"
审核手段
1.人工
苹果人工审核一般情况下会持续10分钟到1小时不等,更多数情况下在10多分钟左右。
人工审核会对主要界面进行肉眼审核,一些常见的审核点都在人工审核范围,如网络可用性、抽奖等商业活动是否声明与苹果无关、不能出现beta测试字样、不能出现安卓Android字样、符合年龄分级且不违反当地法律等等。并且很大可能性会对主流程进行验证,比如电商类App,审核员可能会下单小金额产品,并尝试进行支付。
虽然可能性不大,但最严重的情况是:任何只要是审核员主观认为不合适的内容,都会被拒。
2.自动化
自动化审核主要是扫描关键字,私有API、被封杀的第三方平台(pgyer)、违规关键字对应的key(如被审核员发现"iosDownUrl":"http://www.pgyer.com/xxx"这种键值对,那么单纯删除value:"http://www.pgyer.com/xxx"没用,苹果会因为iosDownUrl这个key拒绝,所以key也得删除)。
3.抓包
抓包并不是常用手段。但综合审核被拒经验来看,苹果也会用抓包的方式审核http接口的path、接口字段key与value。
比如接口中有“audit”字段,审核员人为判断为基于“防审核”的功能,从而拒绝。
审核员
审核员会中文,但与他/她邮件沟通时,最好附上中文+英文,以免无效沟通浪费时间。
审核员工作时间是美国西部时间(比北京时间慢15小时)的白天8小时制,周一至周五。其他时间不审核。
审核员是人,就会有脾气。审核员的权利也很大,可以自主决定对app的违规行为进行处罚,如果审核员认为app违规严重可能除以延期审核、下架、封号等处罚。
审核员会测试APP的主要流程,应该把审核员当做一位用户对待,不要将错误的页面、流程展现给审核员。
对于被拒的app,将会由该审核员一直跟进到审核通过。通过申诉渠道,app会被提交到“审核委员会”评判。
沟通渠道
1.Resolution center 邮件
与苹果审核团队的沟通渠道主要是通过itunes connect中的Resolution center(解决方案中心),在其中用邮件的形式进行解释说明回复。并可以附上附件,比如一些截图、简单的数据txt文档。
2.App 审核信息 section
注意:在每次提交审核时,将附件和备注说明都填写在“App 审核信息”栏目里,这是最好的方式。(新版本会继承老版本的内容,如无改变则无需再次填写)
3.电话
有时,苹果审核员会主动打电话给开发者,给予一些审核被拒修改建议。打电话的原因,猜想可能是审核员因为规避一些商业冲突纠纷,不方便书面回复。比如此次通过关键词扫描封杀蒲公英(pgyer),就是审核员通过电话直接说明“pgyer”关键词。
苹果审核员可能会留下他们自己的联系方式,如果有需要也可以打给他们。要开通国际漫游,且可能需要多打几次才会接听。
苹果审核员强调自己不解答任何技术问题,他们只会对app所违反的条例进行简单解释,至于对如何修改代码,则不会给予任何建议。需要运气好的话会给一点点提示。所以这也是最麻烦的地方,对于苹果不明讲的问题,只能一次次分析、一次次删除,一次次提交。踩坑积累经验。
防审核
可以明确,这种行为是欺骗,情结更严重。被审核出来会直接导致严厉处罚,而不仅仅是审核被拒绝。
有人说“防审核”与“ABTest”,审核员怎么区分呢?首先,审核员就像美国的大法官,他说有罪就是有罪。其次,审核员会用抓包分析、扫关键字的方式进行主观判断,比如App启动阶段请求的接口中有“audit”、“luaScruptZip”等字段,就被审核员直接指出,这是“以绕开审核”为目的的行为。
删除这些字段和本地防审核功能也不行,直到删除该接口,才得以成功。
处罚
通常的审核被拒,只需要修改后重新提交即可。如果严重违规,比如使用欺骗方式、多次反复违反审核规则,苹果审核会对app甚至itunes整个账号做出处罚。
1.延期审核
延期审核经过亲身体验大约会延期2个工作日。
2.下架app、封停itunes账号
下架app和封停itunes账号,具体时长官方没有说明,网上的说法从几天到几个月不等(360当年被苹果下架封号好几个月,也有人说1年)
申诉
对被拒的app,采用申诉的办法可以将app提交到“审核委员会”。
建议首先还是应该将明确的审核违规问题改好。如果确认是当前审核员误解了app的用意,可以提交申诉,邮件说清楚理由。
热更新
苹果禁止热更新app。热更新一定程度上也是绕开审核的行为,且对用户有一定的安全风险。
目前苹果的态度是禁止 通过下载可执行代码来修改Native代码而达到更新功能的行为。所以JSPatch中枪被封杀,ReactNative热更新存活。
但这只是目前,以后如何发展尚不明确。
预审核
预审核是通过一个工具,自动化对整个APP的代码(包括第三方库)进行自动化检测,对于可以违规关键字、私有API等进行扫描并反馈结果。
====
最后
有人说处理审核被拒要心大。
在我看来,首先一定是要对“苹果审核”这件事心存尊敬和感激。正是因为苹果将用户、将整个App store的质量&秩序放在第一位,才有了今天这么好的iOS App。
其次,不要试图绕开审核、欺骗审核。一定要老老实实把问题改掉,合规上架才是王道。
最后,跟审核员邮件沟通一定要注意表明自己正确的改正态度,记住审核员也是人。