马甲包指南 - 攻克 App Store 4.3 条款
4.3 重复 App
请不要为同一个 app 创建多个套装 ID。如果您的 app 针对特定位置、运动队、大学等存在不同版本,请考虑提交单个 app,并提供 App 内购买项目以提供不同的功能。同时,请避免继续在已有大量类似 app 的类别下进行开发;App Store 上已经有太多模拟放屁、打嗝声音的 app,以及手电筒和爱经 app。上传大量相似版本 app 的开发者会遭到 Apple Developer Program 的除名。
有过向 App Store 提交 App 被拒经历的人,大概都听说过这个恐怖的 4.3 条款,下面做一个详细的介绍:
- 【马甲包】指的是内容几乎一样,只是主题色或者是名称等不重要信息略有改动的雷同 App。
- 【4.3 条款主要针对谁】一方面源于很多大公司希望批量产出类似 App 进行 A/B 测试;另一方面源于很多小产品希望通过对相同的产品用不同的关键词来进行宣传,获取更多的流量(同一个 App,上 10 个马甲包,收入增 10 倍);这些行为破坏了 App Store 的生态,导致苹果会用非常严格的手段来进行打击。
- 【4.3 条款麻烦在哪】第一点在于这个条款宁可错杀也不放过,就算你什么错都没犯,也很可能被误伤。 第二点在于,简单的修改是不足以绕过这个条款的,一旦遭遇它,后面无论你怎么修改,再次重新提交也几乎没有通过审核的可能。
- 【4.3 条款并不是完全搞不定】如今上架马甲包已经变成了很多公司的一个常规性业务,只要手段合适,是可以进行一定的规避的。
- 【什么情况可能导致遭遇 4.3 条款】提交 App 给人工审核之前,会先经过一次机器审核,基本上就是个反编译的过程。如果项目里面大量复用了其他 App Store 上线项目的代码,会被机器审核回绝;如果产品形态和其他现有 App 几乎一致,会被人工审核拒绝。
判定拒绝来源
首先,搞清楚你是被人工审核拒绝,还是机器审核拒绝的。
你的应用进入审核(In Review)的时候,你会收到一封邮件,之后被拒绝(Rejected)的时候又会收到一封邮件。如果这两封邮件的时间差非常小,比如小于半小时,那么基本上就是被机审拒绝了,否则大概率是人工审核拒绝。另外如果你的项目里面复用了其他项目的代码,你自己心里也应该有数,
如果是被人工审核拒绝了,由于每次审核你的 App 的人可能不一样,可以直接尝试换个 BundleID 再次提交,如果屡次被拒,可能你不得不考虑一下更改一下 App 的 UI,包括但不限于导航方式、主题色、页面结构等等,或者干脆加点功能、砍点功能。
工程混淆
对于机审被拒,首先要做的一步是代码混淆。这个工作不是专门针对 4.3 条款的,项目本身为了防止被别有用心的人反编译,也是常常需要进行加固处理的。
对于纯代码层面的混淆,直接推荐你看这篇博客:https://blog.csdn.net/yiyaaixuexi/article/details/29201699,不同的手段所做的工作都差不多,难度也不高,无非就是让反编译出来的函数名、类名、变量名都显示为随机字符串。这篇博客里面的内容我已经实际使用、并提交 App Store 试过,亲测有效。
对于工程层面的混淆,要做以下几个工作:
- 项目里面的文件目录、子文件夹排列等,尽可能改动要大,完全打乱最好
- 所有图片、音频资源文件名,建议批量修改,为了便于批量处理,可以加上较长的前缀,比如“CodeExampleTest_123.mp3”
- 类名、变量名也建议批量重构,Xcode 自带了 Refactor - Rename 的重命名功能,直接加上前缀处理起来很快
- BundleID 一定要换,作为一个新 App 重新提交,并且最好和之前的 BundleID 差别较大
App Store Connect 清理工作
1. 清理二进制文件
前往你的应用的 AppStoreConnect 页面,在 TestFlight 栏目下,找到你之前提交过的构建版本,点击“将构建版本设置为过期”,这一步是必须要做的
2. 清理 App 信息
之前填写过的关键词、开发者网站链接、App 名称、App 图标,全部换成无意义的随机内容,和你的真正内容不要有关联。如图,这种空置的 App 我已经有好多个了。
3. 换账号
如果有条件的话,建议购买多个 App Store 开发者账号,使用空账号提交马甲包,避免在苹果那边沾染上不良记录,保证自己的主力盈利的账号不要被封号。
或者可以和其他同样被 4.3 条款折腾的开发者一起购买空闲账号,专门用来处理马甲包。
分阶段测试审核
不确定自己的应用能不能通过 4.3 审核的时候,可以不用急着一次上线全部内容。
-
内容上
在内容上只上线最最核心的东西,第一次提交,能不要的东西都可以不要,比如设置页什么的。这样万一你后续提交的都被拒,那么这一版可能成为你相当长时间无法更新、甚至永远都无法更新的一个版本,你要保证它起作用。 -
信息上
一开始的版本,除了要把 ASO 的关键词写好之外,截图、App Store 描述可以都只放最最基本的内容,争取先把第一关过了,后面更新再改这些内容,哪怕代码不动,直接通过发版来更新这些内容也行。 -
地区上
一开始上线,想碰审核的时候,上线地区可以不要选择所有地区,可以只随便选择一个地区,尽量保证过审。这个地区在你的 App 上架之后是可以随便改的,所以你一开始不妨就让它在一个语言不通的小国家上线,反正也不会有人用。
等通过审核之后,考虑到,你下次提交不一定还能过审,通过审核的应用一定不要“取消发布”,而是要让它在一个小地方先上线。等你确定你之后的更新要失败了,你没办法改代码了,再通过勾选地区的方式,让你的应用在其他地区上线。就算发一版,总比什么都没有要强。
最后
不要迷信苹果,不要自我怀疑。上架 App 是商业行为,App Store 拒绝你上架不能说明任何问题。苹果公司能力极强,但是 App Store 的审核团队并不神圣。
不服就干,App Store 让你上架,你就是合理的;App Store 不让你上架,说明你能力不够,搞赢 4.3 条款,你就是赢家,千万不要因为被拒就觉得问题出在你自身,上有政策,下就有对策。