苹果虐我千百遍,我待苹果如初恋
虽说苹果审核相对安卓而言严格一些、条条框框多一些,但是其实入行到现在,经手的APP说多不多说少不少也有几个了,审核经历都还是蛮顺利的,即使偶尔被拒,也能很清晰的知道问题出现在什么地方。但是两个月前换工作之后,接手目前公司的APP,1.0版本的提交审核经历真滴是让我吐了,历经了一个半月,被拒了十几次,一个半月的工作状态就是当日提交审核、次日被拒、被拒当天再次提审、再次日接着被拒,如此循环,几乎让我打算打退堂鼓了。
终于1.0成功上线之后,我就开始了这篇审核趟雷笔记,但是越来越忙,便只有个开头搁置了,今天抽了个空完成它,刚好也想随便写些东西。
APP的类型是在线教育的,包含了付费课程购买,所以很清晰的知道是要走内购的,但是毕竟30%的内购抽成,公司还是不太乐意承担的,于是尝试支付宝、微信,不出意外的被拒了3.1 PAYMENT。
初次被拒之后,为了先把APP上线(历史原因,已经比安卓晚了一两个月),并没有直接接入内购,而是隐藏付费内容/付费UI,于是APP成了一个不包含付费课程的APP,提交审核,再次被拒。
于是正式接入内购,但是接入内购的出发点并不单纯。我们发现市场同类型的APP依然在使用支付宝、微信,猜测是在1.0版本走了内购(相对而言1.0版本审核较严),后续版本再换回支付宝、微信。于是我们打算带着这种想法接入内购,为了日后方便切换回支付宝、微信,我们在APP中保留了支付宝、微信的SDK和支付逻辑,提交审核被拒,同时又触犯了2.3.1 Don’t include any hidden or undocumented features in your app。苹果发现了我们的行径,隐藏功能在苹果看来是很严重的,尤其是支付相关的,绕过苹果内购毕竟直接侵犯了苹果利益,接入一些审核群发现这样做绕过苹果内购的,很多被苹果给了2.1大礼包,延期审核(听他们反馈延期半年的都有),更为严重的直接14天通知封号了。现在想想,虽然此次被拒了,但是并没有给我们这些严厉处罚,也没有延期审核,依然是当天提交审核、次日被拒的高反馈效率 😑 很无奈。
我们删除了支付宝、微信的支付逻辑,提交审核,再次被拒,反馈同样是违反了上述两个规则,当时就比较奇怪了,明明已经把发起支付宝、微信的逻辑都去掉了,换成了内购的逻辑,怎么还说我们企图隐藏第三方支付、绕过苹果内购呢,后来想到可能是SDK的问题,于是删除了支付宝的SDK,由于有微信分享,所以认为微信的SDK应该没问题。为了避免因为同样的原因被拒绝,我删除了项目中所有支付宝字样,和微信SDK的.h文件中的支付字样,提交审核,终于苹果认为我们不再违反上述的两条规则,但是结果还是被拒。
此次被拒和接下来的一次被拒就是常见的bug问题,违反了2.1 App Completeness,都发生在充值页面,先是在一定条件下loading不能消失掉,接下来的一次就是纯属自作聪明、搬起石头砸自己的脚,因为有些内购项目金额是比较大的,万元左右的,而这些内购项目必须手动一个一个加入到iTunes connect,于是我在获取请求内购商品信息的之后,加了一步和APP服务器价格比对的过程,如果价格不对的话,就提示价格异常,这个在我测试的时候是完全正常的、走得通的逻辑,但是审核给的反馈是点击所有的内购项目,都会出现价格异常的提示,懵了!!!难道的是苹果审核时候获取的价格是美元单位的?于是我把手机的地区、语言都设置成美国的,依旧没复现这种情况,真是实打实的自作聪明、搬起石头砸自己的脚。
有一次被拒是因为提交审核的一张应用市场图包含了免费字样。
一次拒绝是APP的介绍中包含了支付的外部链接,实际说的是我们的官网,我们在APP的介绍中加入了官网地址,违反了内购相关的规则,修改过之后,接下来两次拒绝还是同样理由,起初是怎么都找不到,就在审核备注中写实在找不到官网链接,让审核人员告诉我们在哪个地方发现的,隔天审核人员打来电话,才知道iTunes connect中的APP介绍加了多语言,我们只去除了中文的,好吧,运营的锅!!!
一次拒绝反馈是:APP有些页面并不是基于用户账号的,而APP在入口近强制了用户登录,于是做了游客使用。
接下来的一次拒绝反馈是:内购不能强制用户登录,这真的让人无语了,因为自然而然的观点是没有账号你买个🐔儿啊,而且有些APP是内购强制登录的,好吧,苹果是爸爸!!我们又做了游客购买。
最后一次拒绝也是最胆战心惊的一次,在这次提交审核当天的下午我突然发现一些HTML页面会偶然出现赌博、贷款、彩票的内容,而不是本该出现的内容,出现这种情况的原因是用了小厂的短地址服务,服务厂商篡改了页面地址。于是赶紧让运营删这些东西,结果运营没当回事儿,次日公司年会的时候,结结实实的收到了2.1大礼包,洋洋洒洒列举了十条怀疑我们违规的地方,苹果认为我们的APP是一个马甲包,大家应该会知道苹果对马甲包的扼杀力度有多大吧,心凉凉,赶紧直接把有HTML相关功能的模块直接干掉,然后承认出现此次问题的原因(强调并非我们本意),重新提交审核,进入延期审核状态,加了一些马甲包的群,很多人的基本观点是2.1基本没救了,账号都可能保不住了,延期审核几个月都有可能,彻底心凉凉,等了将近一周,本打算再不进入审核状态就在下周一毛线换bundle id重写提交,还好在周五进入了审核状态,周六通过了审核。
至此苦逼的心惊胆战的1.0审核之路结束,到目前两三个月的时间又提交了5次更新,终于恢复正常状态:当天下午提交、次日早上通过。
其实本来并没有写这篇笔记的必要,因为这些被拒的内容发生一次就基本不会忘记了,但是想想还是写写吧,算是一篇日记,记录下自己的心情。