记一次 App 上架审核的经历

作为一个 iOS 开发,不管如何最后都避不开把 App 上架到苹果的应用商店,而 App Store 的审核有时候又比较玄学,网上也能看到开发者吐槽各种各样被拒的经历,我前段时间也把公司的 App 提交到应用商店审核,在多次被拒之后终于在六一儿童节的早上审核通过上线了,本文就记录一下这段上架应用商店的经历

先祭出苹果官方的 App Store 审核指南,审核指南内容不多,但是包含的东西还是非常多的,建议开放、上架 App 之前仔细的看完,至少保证自己的应用上架的时候里面不包含指南里明显禁止的内容

审核之前的打包、上传到iTunes Connect、在iTunes Connect 里面提交审核就不解释了,直接从 App 进入待审核开始

第一次审核被拒,解决方案中心(Resolution Center)给出的理由是:

Guideline 2.1 - Performance - App Completeness
We are unable to complete the review of your app because one or more of your in-app purchase products have not been submitted for review.

还有另外一条:

Guideline 3.1.4 - Business - Payments - Content Codes
Your app unlocks or enables additional functionality with mechanisms such as promo codes, data transfer codes, license keys, augmented reality markers, or QR codes, which is not appropriate for the App Store.

这两个被拒的原因其实是和我们公司的业务有关,App 用到了内购的功能,但是iOS 内购的定价是固定的价格等级,这样就导致内购商品促销的时候不够灵活,公司想到的办法是:新建多个内购商品,一部分作为正常价格销售的内购商品,另一部分作为以后价格促销时候的内购商品,公司希望通过自己的优惠码可以使促销价格的内购商品展示给不同的用户

第一条被拒的理由就是说我们提交审核的内购商品的数量和App内的内购商品数量不一样(当然不一样,因为促销价格的商品我们暂时是隐藏的),第二条被拒的理由是 App 不得使用自身机制来解锁内容或功能,如许可证密钥、增强现实标记、二维码等,这里苹果审核人员认为我们提供的填写优惠码的界面是利用自身机制解锁内容和功能(虽然我们是利用优惠码让不同的用户看到促销价格的内购商品,但是某种程度应该也算是利用自身机制解锁内容)

好吧,既然苹果说的这么明白了,说明公司这种促销方案行不通,于是在 iTunes Connect 里去掉促销的内购商品,只保留正常价格的内购商品,并且在App里隐藏了提交优惠码的界面,再次把内购商品和 App 提交审核(有内购的 App 第一次上架需要把两者同时提交审核)

第二次被拒,被拒理由如下:

Guideline 2.1 - Performance - App Completeness
Your app crashed on iPhone running iOS 11.3.1 connected to an IPv6 network when we:
tap on the referral button.
We have attached detailed crash logs to help troubleshoot this issue.

另一条理由

Guideline 2.1 - Performance - App Completeness
We found that while you have submitted in-app purchase products for your app, the in-app purchase functionality is not present in your binary.

第一条理由说 App 里面有遇到点击某个按钮crash的情况,并把 crash 日志放在了附件中,检查之后发现问题出在后台返回的结果上面,后台同事直接修复了,但是第二条理由就很扯了,审核人员说找不到内购功能在哪里!为啥第一个第一次的审核人员就能找到,这个审核人员却找不到!于是在解决方案中心回复审核人员表示闪退问题修复了,并且上传了内购界面的截图指引审核人员找到内购的购买页面

第三次被拒,被拒理由:

Guideline 3.0 - Business
We began the review of your app, but we are not able to continue because we need additional information about your app.
Please reply to this message in Resolution Center to confirm that the price of your
VIP月费服务, 74.99, VIP季费服务, 209.99, VIP年费服务, 799.99, is the intended price. If you have additional information about your app, please include it in your response as well.
Once we receive your confirmation, we will continue with the review of your app.

另一条理由:

Guideline 3.1.1 - Business - Payments - In-App Purchase
We noticed that your in-app purchase product is set to an incorrect product type.
VIP月费服务,VIP季费服务,VIP年费服务 is set to consumable.

第一条理由是审核人员希望我们再次确定我们的内购商品的定价(可能是觉得定价过高),希望我们可以提供更多关于内购商品定价的信息,第二条理由是我们的内购商品的类型选择的是consumable(消耗型),像这种按月按季度的内购商品应该选择 non-renewable(非续期订阅)类型,关于集成内购功能可以参考我的另一篇文章 iOS 内购(In-App Purchase)总结

根据上面的理由,我回复了如下内容:

Hello,
With reference to our costs and benefits, we confirm that the price of our VIP月费服务, 74.99, VIP季费服务, 209.99, VIP年费服务, 799.99, is the intended price.
In addition, we submitted new in-app purchase product with non-renewable subscription in-app purchase product type.
Please continue with the review of our app, Thank you.

关于内购商品和定价公司觉得没有问题,所以我们回复审核人员表示我们是基于自己的成本和收益定价的,然后创建新的内购商品类型改成 non-renewable(非续期订阅)类型,再次提交审核

第四次被拒,理由如下:

Guideline 2.4.1 - Performance - Hardware Compatibility
We noticed that your app did not run or display as expected when viewed on iPad running iOS 11.3.1. Please see attached screenshots for details.

另一条理由:

Guideline 4.2.3 - Design - Minimum Functionality
We were required to install the QQ and WeChat app before we could log in via QQ and WeChat. Users should be able to log in with QQ and WeChat and access their accounts without having to install any additional apps.

第一条理由审核人员表示虽然我们的 App 是专为 iPhone 开发的但是也要保证 App 可以在 iPad 上面正常使用,并且附上了截图,第二条理由是 App 应该能独立工作,无需安装其他 App,但是发现我们 App 使用 QQ 和微信第三方登录的时候会提示安装第三方 App

这次被拒其实都和 iPad 有关系,因为苹果审核人员会使用 iPad 进行审核,而适用于 iPhone 的 App 在iPad 上是两倍像素显示的,也就是 iPhone 4的尺寸,因为开发过程中并没有使用AutoLayout,导致有些界面的显示不完整影响使用

第二条我在网上查到的原因是 QQ 和微信在 iPad上 调用第三方登录的时候不能跳转到网页登录授权而是提示安装 QQ 或者微信,因为手上并没有iPad测试机,但是模拟器上进行测试发现可以在网页中登录授权并没有提示安装,联系朋友让他使用 iPad 看别的 App 怎么处理第三方登录授权的,最后采用和它们的做法,调整代码判断用户是否安装了相关的第三方 App 而对应显示相应的第三方登录图标,改完之后再次重新提交审核

第五次被拒,理由如下:

Guideline 2.3.7 - Performance - Accurate Metadata
Your app name or subtitle to be displayed on the App Store includes keywords or descriptors, which are not appropriate for use in these metadata items.
Specifically, the following words in your app name or subtitle are considered keywords or descriptors:

这次被拒完全是自己没仔细阅读审核指南了,在提交审核的时候可以为自己应有添加一个副标题,而苹果规定副标题必须遵循他们的标准元数据规则,且不得包含不当内容、提及其他 app 或做出无法证实的产品声明,而我提交的副标题里面包含了应用名称,修改副标题之后,在解决方案中心回复审核人员继续审核

然后迎来了第六次也是最后一次被拒,理由如下:

Guideline 2.1 - Information Needed
We have started the review of your app, but we are not able to continue because we need additional information about your app.

Next Steps
To help us proceed with the review of your app, please provide detailed information to the following questions. The more information you can provide upfront, the sooner we can complete your review.
- What benefits are provided to the user when purchasing the VIP Service within the app?
Once you reply to this message in Resolution Center with the requested information, we can proceed with your review.

这次被拒的原因是审核人员不明白购买我们的内购产品可以给用户提供什么样的服务,我们把内购商品可以给用户提供的详细内容回复给审核人员之后,第二天 App 就通过了审核

以上内容并没有什么技术含量,仅作为一次记录!