首先让大家看下我们的APP从提交到上线的版本号信息吧
图片太大可能看不清楚,总之就是我们的APP的新版本从5月23号提交,直到9月27号才上线成功,这中间经历的曲折于困难,让我觉得有必要将这次的上架经历记录下来并分享给众多iOSer。
APP从版本1.0.0开始提交,直到版本2.3.2之前都是没有任何问题的。但是自从5月23号提交版本后,就一直无法上线,这个版本与之前提交的版本相比也并没有什么重大的修改,因此我认为可能是苹果在这个时间段的审核规则变了,并且是变的更加严格了。我认为有可能与之前的JSPATH热更新的时间有原因,当然这只是个人猜测了。下面放上5月23号提交版本后第一次被苹果审核拒绝的原因吧,并且做一下分析。
第一次被拒的根据返回的信息,一上来就说我们的应用违反了3.2f(f)条例,具体原因是说我们的应用包含了一些代码能够在苹果审核完以后,通过外部操作改变APP的功能,本人英文一般大概猜测就是指我们的应用包含了热更新呗。但是我们的应用并没有包含热更新的功能呢,于是上百度搜关于热更新的决绝方法。阅读完几篇关于热更新的文章后,知道应用只要有调用2.5.2说明中的dlopen()这几个方法就可能会被苹果认为包含有热更新功能,这些接口一般都是第三方的框架包含的,于是找到了有使用这些接口的第三方SDK,该更新更新,该删的删,满心欢喜认为这次应该没问题了吧,于是提交了第二个版本。
这是第一次审核被拒,应用被延迟审核处理了,提交第二个版本后,等了约有一周的时间才进入审核。但是这次审核依旧是被拒,苹果返回的信息如下图。
结果是这次审核居然违反的条例更多了。。。。。。。我内心一万头草泥马奔腾而过
这次反馈的信息主要还是说我们的应用有隐藏功能,但是具体是什么隐藏功能苹果那边没有给出任何信息,这就是苹果审核最让人抓狂的地方,审核被拒只会给出你违反了哪个条例,不会给出任何更详细的提示信息。这次我并没有修改我的代码,或者应该说我都不知道代码的哪个部分违反审核条例了,于是在ItunesConnect中的解决方案中心中跟苹果交涉,问他们具体隐藏了什么功能,是不是我们的应用包含了过多的H5页面的问题?但是,结果依旧是非常官方的回答,说我们的应用违反了苹果审核条例的第几第几条,真心想吐槽一下苹果审核人员的傲慢的态度。。。在此万般无奈之下,我只能在此修改代码中我认为有可能违反审核的地方,比如后台控制更新提示功能这些,然后重新提交了第三个版本。然而。。结果依旧是审核被拒,被拒原因如下
这次审核拒绝的原因跟第二次一模一样,这次我直接点击申诉,说明我们的应用没有任何隐藏功能,为什么不能审核通过。申诉过后,大概过了两天收到回复是苹果审核团队那边会通过专人联系我们,要我们留一个联系方式给他们。于是我把自己的手机号码发给他们,过了两天后,收到了审核人员的来电,说到我们的应用中包含了一个HTTP链接,这个链接是不被允许的。我在代码中查了一下,发现这个链接就是一个写死的测试链接,这段代码甚至都没有执行到,难道因为一个HTTP链接就能够认为我们的APP包含了隐藏功能,热更新功能。得到这个答复让我哭笑不得,但是也只能死马当活马医了,将这个链接的相关代码移除后,在此提交审核。忘记跟大家说了,苹果审核被拒的时候,假如应用是被延时审核处理的话,那么一般是第一次延迟一周,第二次延迟两周,第三次延迟4周,以此类推。这就是最让我抓狂的地方,到后面一次提交居然要等一个月才能进入审核。这次提交过后,等了一个月的时间终于再次进入审核了,这次审核终于通过了。
总结一下吧,当应用被拒并且被延迟审核的时候,最好是在提交新版本审核之前跟审核团队有一个详细的交流,能够准确定位到问题为止。如果审核团队的邮件回复是非常官方的,那么这时候应该走申诉渠道,别管应用是否真的有违规,走申诉渠道的时候坚决说明自己的应用没有违反任何条例,这样一般就会得到一次审核人员直接电话跟你联系的机会。审核人员打电话给你的时候,一般都会告知你的应用具体那个部分,哪个功能,或者哪个链接出了问题,虽然这些原因可能是一些无厘头莫名其妙的原因,只要按照他们指示去改,就一般没问题了。