苹果的应用审核指南,其实是iOS开发人员的生存指南
前言
苹果AppStore有着大量优质的各类应用,所有的应用都需要通过苹果审核团队的审核才能获得发布。但是说到审核团队,相信很多iOS开发者都是崩溃的,他们拒绝应用的理由花样百出,让人抓狂却又毫无办法。他们神秘低调,除了申诉渠道,不和外界做任何的沟通,即使要下架你的应用或者终止你的开发者账号,也是通过苹果的技术支持来和你沟通,所以在你的申诉或者某个申请没有得到回复时,你会感到非常的无助。
我们无从了解审核团队的人,也无从了解审核团队的审核流程,但是充分的了解审核指南、掌握各类应用所必须遵从的规范,对于做iOS开发、产品、运营的小伙伴们来说是非常有必要的。
应用被拒分析
通过整理自己多个应用的提交史以及其他同行的案例,对app被拒较多的违反条款做下分析
1.二进制文件及元数据
- app不能存在明显错误及崩溃问题(在提交 app 之前,务必在设备上对 app 的错误和稳定性进行测试;如果你的 app 需要登录,需要提供演示帐户信息并保持服务器的访问通畅,如果审核团队在审核过程中发现了错误或者崩溃问题,将会以Guideline 2.1 - Performance - App Completeness:We discovered one or more bugs in your app when reviewed on iPhone running....拒绝应用,此类拒绝需要修改完善后重新打包上传)
- app的信息及元数据完整且正确。元数据就是App信息中哪些可编辑的图标及文案信息(要确保 app 的描述、屏幕快照和预览能够准确反映 app 的核心体验,并不断更新,以便保持与新版本相应的最新状态。屏幕快照应展示 app 的使用情况,而非仅显示标题封面、登录页面或初始屏幕。元数据应适合所有受众,所以要确保App 和 App 内购买项目的相关图标、屏幕快照和预览保持在 4+ 年龄分级;即使你的 app 分级是17+,也必须遵从。 如果元数据违反上述要求,审核团队将会以Guideline 2.3.x- Performance - Accurate Metadata拒绝应用,如果是屏幕快照的问题,审核团队还是还会附上图片,此类问题不需要重新打包,只需要编辑好元数据部分再次提交审核即可。这里有个小细节需要注意,屏幕快照一定要按照对应尺寸的iPhone设备头部来设计,如果你用5.5’‘设备的头部效果作为5.8及以上设备的头部效果制作屏幕快照的话,那一定会被拒绝。)
2.App必须遵从的条款
- App 不能包含具有攻击性、不顾及他人感受、令人不安、惹人厌恶或低俗不堪的内容:色情、人身或动物伤害、宗教主义、鼓励犯罪、诽谤歧视、虚假信息。审核团队对于这些内容的判断是主观的,正如审核指南简介里的一条内容所说:“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.(套用最高法院大法官的一句话:“当我看到的时候,我就知道了”。而且,我们相信,当您超出这个范围时,您自己也会意识到。)”。所以在涉及App所展示内容的时候后,要做到更好的控制,无论文字还是图片都可能被审核团队抓住并拒绝。
- 对于包含用户生成内容的 App(例如发帖,评论等),有特定的难题需要解决,比如知识产权侵权、匿名欺凌等。为了避免滥用,包含用户生成内容或社交网络服务的 app 必须满足以下条件:
- 采用相应的方法来过滤令人反感的内容,以免这些内容在 app 中发布
- 制定一个机制,以举报攻击性内容并在出现问题时及时作出回应
- 若用户发布攻击性内容,可以取消其使用服务的资格
- 公布联系信息,以便用户与你联系
- 知识产权,要确保 app 只包含由自己创建或拥有使用许可的内容。如果您已越线并在未经许可的情况下使用了内容,您的 app 可能会被移除。当然,如果他人抄袭了你的App,则他们的 app 也可能会被移除。如果你认为自己的知识产权在 App Store 上受到了其他开发者的侵犯,可以通过App Store Content Dispute来维护权利。这里有一个概念描述的比较模糊就是‘‘拥有使用许可的内容",而这个内容恰恰是很重要的部分,很多应用被拒案例中都有Guideline 5.2.1 - Legal - Intellectual Property,而一但被这条准则拒绝,应用是被盯上了,除了下架这类业务和提供获取的许可之外,没有更好的办法,如果你没有足够的条款和信息依据来说明这是一次审核上的误判,那盲目的尝试去跟审核团队申诉往往得不偿失。这类遇到的被拒案例很多,有需要提供网文运营许可、拍卖经营许可、金融产品许可、医疗机构许可等等。
- 隐私条款,在 Apple 生态体系中,保护用户隐私总是第一要务。要在处理个人数据时小心谨慎,以确保遵守了隐私保护最佳做法、所销售区域的法律。尤其是在数据收集和存储、数据使用和共享、健康和健康研究、儿童的个人信息、定位服务方面更要阅读和研究审核指南给出的协议和条款
3.设计
- 不能抄袭现有AppSotre应用。请拿出你自己的想法,不要简单照搬 App Store 上的热门 app,或只是细微修改其他 app 的 UI,就将其挪为己用。这么做不但有引发知识产权侵权索赔的风险,而且如果因为这条审核被拒,除了大篇幅的整改,是没有其他出路的。
- App 应包含功能、内容和 UI,不要简单的做一个外壳包装一个网站,这样的应用也会被拒绝
- 不要试图开发和AppStore类似的应用来推广其他App,这是死路一条。
4.应用中包含游戏、抽奖类活动(如转盘,老虎机等)的提交审核要非要注意和谨慎,即使抽奖的筹码是赠送的或是虚拟币、积分等,必须要在正式规则中注明,并且必须明确表示 Apple 不是赞助者,也没有以任何形式参与活动。
5.热更新,此处无需多言,最好不要使用。如果非要使用,需要做好混淆,而且能确保审核不被发现。这类的被拒条款对应Guideline 2.5.2,遇到这种被拒的反馈,不要再去尝试重新提交,需要删除掉引入的热更新框架,并检查其他第三方的框架是否有使用热更新,彻底解决之后再提交审核。
6.IPV6的问题。审核团队是在 IPv6 网络上进行审核。如果你的 app 无法与 IPv6 寻址功能兼容,则可能无法通过审核。
7.内购问题。这是一个令人头疼的问题,审核团队对于接入苹果内购的功能和描述审核非常严格,非常多涉及到消费支付、充值的的应用因为这个问题,审核被卡数周甚至数月,简直惨不忍睹。我在这里也将着重的讲一下。
虚拟物品、虚拟服务、消耗型物品。按照苹果的规定,必须使用IAP(in-App Purchase)支付、否则审核将会被拒绝。熟悉的人应该知道,苹果的IAP支付,操作起来支付结果回调的速度远比微信/支付宝等第三方支付慢的多,其次是虚拟物品的定价必须贴合苹果的规定,还有就是必须支付30%的分成给苹果,所以如果不是苹果的审核要求,基本不会有应用会选择对接IAP支付。面对这么苛刻的要求,很多应用通过跳转到H5调起支付,或者动态入口等方式避开接入IAP支付,但是一旦审核出来,审核会被拒,甚至收到苹果的应用下架通知。那么虚拟物品大致有哪些种类的呢?我们看下苹果给出的分类:
- 消耗型项目。就是随着使用不断的减少。例如你买了网易新闻的钻石,然后将钻石打赏给某些人群或者主播,这就是一个消耗过程,很明显这类的项目就属于消耗型项目
- 非可消耗型项目。这个不难理解,就是通过一次购买,便拥有了使用权,可以一直使用,最常见的就是AppSotre购买应用、微信里的付费表情包等类型消费项目
- 自动续订订阅。这个和非可消耗型项目不同的是有失效时间。比如你在QQ音乐或者腾讯视频购买了一个月的会员,在这种模式下,会员用户可以享受到非会员用户享受不到的服务,会员快过期是,会自动续费,前提是获取了用户同意的。
- 免费订阅。免费订阅是开发人员在“报刊杂志”中推广期内容的绝佳方式。用户注册免费订阅后,此订阅内容在与该用户AppleID相关联的所有设备上可用。免费订阅不会过期,并且只能在位于“报刊杂志”类别的App中提供。
- 非续订订阅。非续订订阅允许有时限性的营销服务,对于App内购买项目中的限时访问内容,就需使用费续订订阅。例如,腾讯视频的一月订阅,一年订阅等类似项目
大家在实际的应用提审中可能都会碰到不是虚拟物品也被要求接入内购,这种情况就需要跟审核团队去申诉,当然申诉也是一条艰难的路,你需要准备好你的支付业务完整的介绍和展示以及证明不是虚拟物品的关键信息。
在这个问题上苹果是不妥协的,所以不要抱着侥幸去用第三方的支付的方式购买虚拟服务。即使你侥幸逃过了审核,也可能会突然收到苹果的因为你的App没有接入IAP支付而给你的通知邮件,如果你不做整改,那你的下次提审一定是被拒绝的,这个是一个小伙伴真是案例。那大家熟知的社交App微信也在一直积极配合苹果对虚拟支付的规则,并寻求解决方法。苹果一出政策,微信就会调整。在小程序诞生之初,微信就在《微信小程序平台运营规范》里明确表示:iOS系统下,微信小程序暂不得为虚拟物品购买提供支付功能。去年5月,更是发布明确公告:“除小游戏类目的安卓内购功能,小程序暂不支持虚拟支付。”
诸如“腾讯视频”这样的官方小程序也一样暂停了iOS端小程序的虚拟支付功能,一视同仁,没有例外。
事实上,这次规则调整早就有所预示,去年7月下旬,微信就关闭了iOS虚拟支付的接口, 从产品层面截断了虚拟支付的路径,充分遵守了苹果相关规则。
8.权限的获取。app需要使用诸如:定位、通讯录、拍照、相册、麦克风等功能时要通过配置文件去设置Privacy来获取权限,这种弹窗式的交互,能有效告知用户获取某种功能的权限。但是提醒的文案要写的足够清晰明白,否则同样面临审核被拒的风险。具体的文案可以参考一些大型线上App的权限提醒描述。
9.Apple产品的禁忌。不要将Apple产品作为App中某个活动或者竞赛的奖品,否则应用审核会被拒绝。
10.引导下载的问题。App中不能出现引导安装第三方应用的功能或者描述,例如:App在没有安装微信的设备上,进行微信登录,如果提示需要安装微信,或者去安装微信等描述,应用会被拒绝。由于微信SDK有提供时候安装微信的方法,所以现在通常的方式基本都是在没安装微信的设备上,你的App是不展示微信登录入口的。其他的场景也可参考这种方式
11.iOS13之后的sign in with Apple。如果 app 专门使用第三方或社交登录服务 (如微信、QQ等) 那你的app 必须同时提供“通过 Apple 登录”作为等效选项。对于一般业务系统来说,App都是通过第三方登录之后再通过绑定手机号来实现自己用户体系的登录。同样要留意的是:sign in with Apple的UI设计也必须按照苹果的设计规范
一些总结
上面列出的是我参与App应用提交以来,遇到过的审核被拒的一些案例分析,当然通过整改App最后都通过了审核,也结合了一些业内小伙伴应用被拒的案例。通过分析这些案例和最后的解决方式,结合审核指南,可以得到下面一些结论:
- 无论App开发还是产品,都应该认真阅读审核指南,并记住重要条款。
- 遇到审核被拒了,一定先要明确被拒原因,确认是违反了条款,要进行修改,同时也排查app中是否还存在类似问题,修改完成后,再进行提交。
- 应用在集成第三方的SDK或框架时,一样要对第三方SDK中是包含违反审核条款的功能及代码进行排查确认。犯错的可能不是你,但苹果不会因此原谅你。
- 审核时间长短可能因 app 而异。正常提交的app,50% 的会在 24 小时内完成审核,超过 90% 的 app 会在 48 小时内完成审核(该数据来自苹果官方)。多次因同一个条款被拒绝是最大的禁忌,你的App审核时间会更久,从而失去对App发布时间的控制。
- 在遇到紧急情况的时候,需要申请加急审核,需要注意以下问题:如果你是为了修复严重错误而提交了加急审核申请,要在申请中注明在你当前版本的 app 中重现错误的步骤。对于与活动相关的 app,建议在 App Store Connect 中规划并安排 app 的发布。但是,如果你的 app 仍处于审核阶段,而安排的活动迫在眉睫,可以申请加急 app 审核。提交请求时,请务必提供活动事项、活动日期以及与相应 app 之间的关联。这一点非常重要。
- 如果你认为应用被拒是审核团队对 app 的某项功能或技术实现理解有误,可以就 app 遭拒的情况向 App Review 委员会提出申诉。可以向 App Review 委员会提交更多详细信息,以帮助他们确定是否应重新审核 app。
为什么写
首先要说的是应用审核被拒,是很正常的。即使你完全遵照了审核指南的条款,但是Apple持续更新审核指南以及审核时对很多内容判断的主观性,都会造成应用被拒绝。就连腾讯在成立iOS预审团队之前,iOS月审核通过率也只有35%。遇到被拒不可怕,只要做好完善的排查和问题定位,做好预审,再进行针对性的修改和申诉,相信问题都会迎刃而解。希望这篇分享能帮助大家更快的分析定位问题和未雨绸缪,从而更大程度的降低业务上线的风险。