4.3 原因:
提交 App 给人工审核之前,会先经过一次机器审核,基本上就是个反编译的过程。如果项目里面大量复用了其他 App Store 上线项目的代码,会被机器审核回绝;如果产品形态和其他现有 App 几乎一致,会被人工审核拒绝。
判定拒绝来源
首先,搞清楚你是被人工审核拒绝,还是机器审核拒绝的。
你的应用进入审核(In Review)的时候,你会收到一封邮件,之后被拒绝(Rejected)的时候又会收到一封邮件。如果这两封邮件的时间差非常小,比如小于半小时,那么基本上就是被机审拒绝了,否则大概率是人工审核拒绝。另外如果你的项目里面复用了其他项目的代码,你自己心里也应该有数,
如果是被人工审核拒绝了,由于每次审核你的 App 的人可能不一样,可以直接尝试换个 BundleID 再次提交,如果屡次被拒,可能你不得不考虑一下更改一下 App 的 UI,包括但不限于导航方式、主题色、页面结构等等,或者干脆加点功能、砍点功能。
工程混淆
对于机审被拒,首先要做的一步是代码混淆。这个工作不是专门针对 4.3 条款的,项目本身为了防止被别有用心的人反编译,也是常常需要进行加固处理的。
对于纯代码层面的混淆,可以谷歌或百度 ,不同的手段所做的工作都差不多,难度也不高,无非就是让反编译出来的函数名、类名、变量名都显示为随机字符串。这篇博客里面的内容我已经实际使用、并提交 App Store 试过,亲测有效。
对于工程层面的混淆,要做以下几个工作:
项目里面的文件目录、子文件夹排列等,尽可能改动要大,完全打乱最好
所有图片、音频资源文件名,建议批量修改,为了便于批量处理,可以加上较长的前缀,比如“pre_xxx.mp3”
类名、变量名也建议批量重构,Xcode 自带了 Refactor – Rename 的重命名功能,直接加上前缀处理起来很快
BundleID 一定要换,作为一个新 App 重新提交,并且最好和之前的 BundleID 差别较大
App Store Connect 清理工作
清理二进制文件
前往你的应用的 AppStoreConnect 页面,在 TestFlight 栏目下,找到你之前提交过的构建版本,点击“将构建版本设置为过期”,这一步是必须要做的
清理 App 信息
之前填写过的关键词、开发者网站链接、App 名称、App 图标,全部换成无意义的随机内容,和你的真正内容不要有关联。如图,这种空置的 App 我已经有好多个了。
多准备几个开发者账号,避免主力账号受影响