iOS App Store上架被拒case

2,377 阅读8分钟

前言

  • 本篇文章记录了我们上架App Store过程中遇到的被拒case,以及对应的原因分析、解决方案,涉及上传被拒、审核被拒。
  • 我们会不定期将遇到的case更新在此文章,有需要的朋友,可以持续关注。
  • 读者收益:提前规避类似问题;加深对App Store审核指南的理解;遇到类似问题的解决方案。

一、审核被拒

Guideline 2.1 - Performance - App Completeness

  1. 被拒邮件

Guideline 2.1 - Performance - App Completeness

We discovered one or more bugs in your app. Specifically, required to verify the image indefinitely upon sign-in and unable to skip. Please review the details below and complete the next steps.

  1. 原因分析

APP一定要包含了完整的功能,审核人员需要流畅审核全流程。

  1. case描述

    1. 登录失败,比如:运维禁用了海外IP 、登录命中风控图形验证无法通过。
    2. 需要提交一些资料审核的才能进入下一步,阻塞了审核。
    3. 包含未完成的功能,比如点击按钮提示"敬请期待"。
  2. 解决方案:

    1. 保证登录账号密码正确,登录接口正常。
    2. 对于阻塞审核流程的业务,可以后台设置开关,审核的时候关闭,或者直接将审核账号设置白名单,跳过阻塞业务。
    3. 半成品功能不要展示,直接隐藏。

Guideline 2.1 - Information Needed

  1. 拒审邮件

Guideline 2.1 - Information Needed

We're looking forward to completing our review of your app, but we need more information to continue. Specifically, we noticed that your binary includes the PassKit framework for implementing Apple Pay, but we were unable to verify any integration of Apple Pay within your app.

Apple Pay is a mobile payment technology that provides an easy and secure way for users to pay for physical goods and real-world services in apps and on the web.

  1. 原因分析

没有使用的库,就不要集成,比如CoreBluetooth、EventKit、HomeKit、PassKit等。

  1. case描述

工程中集成了 PassKit框架,但是审核人员没有找到 apple pay入口。

  1. 解决方案:

删除没有使用的库。

Guideline 5.1.1 - Legal - Privacy - Data Collection and Storage

  1. 原因分析

涉及隐私相关,需要指明 App/服务所收集的数据 (若有)、收集数据的方式,以及这些数据的所有用途。

  1. case描述

    1. 没有填写App Tracking Transparency 隐私描述。
    2. 获取隐私文案描述不明确。

  1. 解决方案

    1. 在info.plist文件中添加Privacy - Tracking Usage Description描述获取设备信息的用途。
    2. 明确说明获取该权限的具体目的, 比如:“访问相册获取照片用于意见反馈、在线客服沟通时上传图片和保存图片到相册”。

Guideline 1.4.1 - Safety - Physical Harm

  1. 被拒邮件

Guideline 1.4.1 - Safety - Physical Harm

Your app provides health or medical recommendations, calculations, references, wellness reports, or diagnoses without including the sources of the medical information.

Specifically, we found the health information in the xxxx without clickable reference source links. Please note the reference source has to include clickable official health sources(e.g, WHO, CDC or local equivalent).

All apps with medical and health information should include links to sources for the information. This helps ensure that App Store users are being provided accurate information.

  1. 原因分析

App 必须清楚地披露相关数据和方法,用于佐证声明的健康测量准确度;

我们这里没有给出能佐证我们的消毒剂使用是准确的,需要有一个可点击的参考源链接,参考来源必须包括可点击的官方卫生来源(如世卫组织、CDC或当地同等机构)。

  1. case描述

H5疫情防控课程,有关于消毒剂使用的指导被认为是健康信息;内容只有图片,没有可点击的参考源链接。

  1. 解决方案

在课程介绍里加上了可点击的链接;

只添加了卫健委和疾控中心的官方链接,不再添加人民日报等链接,避免来源中还有来源。

Guideline 2.5.13 - Software Requirements

  1. case描述

注册人脸识别环节,使用了第三方人脸识别来验证身份证,和苹果审核电话沟通,对方表示只要使用了人脸识别,就要支持系统的Face ID。

  1. 原因分析

使用人脸识别进行帐户验证的 App 必须使用 LocalAuthentication (英文) (而非 ARKit 或其他人脸识别技术),且必须对未满 13 岁的用户使用备用身份验证方式。

ps: 我们这里不是进行账户验证,而是注册时进行身份证验证,这里感觉是苹果的误判,电话沟通后苹果还是坚持说有用到人脸的地方就要用face id,这种情况就只能认命了,再沟通也是浪费时间。

  1. 解决方案

新版本审核期间屏蔽了人脸识别环节,过审之后打开。

Guideline 2.3.3 - Performance - Accurate Metadata

  1. 被拒邮件

Guideline 2.3.3 - Performance - Accurate Metadata

We noticed that your screenshots do not sufficiently show your app in use. Specifically, your 12.9-inch iPad Pro, 6.5-inch iPhone, and 5.5-inch iPhone screenshots do not show the current version of the app in use.

To help users understand your app’s functionality and value, your screenshots should highlight your app's core concept. For example, a gaming app should feature screenshots that capture actual gameplay within the app.

  1. 原因分析

顾客在下载或购买您的 App 时,应该知道他们将得到什么,所以请确保您的所有 App 元数据,包括隐私信息、App 描述、截屏和预览,能够准确反映 App 的核心体验;并请记得更新,以保持与新版本相应的最新状态。

  1. case描述

    1. 商店的预览截屏与app提审版本的功能差距太大, app首页改版较大,商店的预览截屏没有及时更新,还是旧版app的样式。
    2. AppStore截图的内容和尺寸不符, 尺寸是5.5寸,内容里面的机型是全面屏。
  2. 解决方案

    1. 将App Store的截图更新为最新UI。

    2. 5.5寸的截图按照对应的机型比例作图。

二、上传被拒

ERROR ITMS-90032: "Invalid Image Path - No image found at the path referenced under key 'CFBundleIcons': 'AppIcon83.5x83.5'"

  1. 原因分析

app icon有全量替换,命名不规范。

  1. 解决方案

将命名中的 _改为 -, 正确的如:icon-20@2x-ipad.png

ERROR ITMS-90165: "Invalid Provisioning Profile Signature. The provisioning profile included in the bundle 'com.xxx.xxx'

  1. 原因分析

  1. 可能是因为苹果更新了官方验证机制,需要重新生成配置文件应用新的文件。
  2. appstoreconnect正在进行例行维护。
  3. 解决方案

  1. 管理后台重新生成 profile文件,替换重新打包。
  2. 等appstoreconnect维护完成后再上传包。

ITMS-90426: Invalid Swift Support - The SwiftSupport folder is missing. Rebuild your app using the current public (GM) version of Xcode and resubmit it.

  1. 被拒邮件

Dear Developer,

We identified one or more issues with a recent delivery for your app, "xxxx" 1.2.20 (1). Please correct the following issues, then upload again.

ITMS-90426: Invalid Swift Support - The SwiftSupport folder is missing. Rebuild your app using the current public (GM) version of Xcode and resubmit it.

Best regards,

The App Store Team

  1. 原因分析

OC和swift混编项目,打包ipa缺少了SwiftSupport文件夹;

ps: 上传过程中不会被拒,上传成功后苹果还会对包进行处理,这时会收到被拒邮件。

  1. 解决方案

将项目的ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES设置为YES;但是扩展的ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES保持为NO。

三、总结

  1. 开发者需要熟悉App Store审核指南,可以提前规避一些问题。

  2. 苹果审核员可能存在误判,这时可以选择申诉,但是一般都是败诉,如果比较着急建议直接解决或规避问题。

  3. “之前跑了很多版本都没有被拒,这次怎么突然被拒了?”,大家可能有这样的疑问,原因可能有几点:

    1. App Store审核指南有更新。
    2. 每个审核员的标准不一样,这次遇到了一个更严格的。
    3. 即使是同一个审核员,可能之前存在疏忽,没注意到。
  4. 当我们需要紧急发布的时候,比如严重crash、账户安全等,这时我们可以选择加急审核,苹果会根据情况来加快审核,现在苹果的审核已经比较快了,正常一到两天,所以没有紧急情况不要使用加急审核,加急审核使用次数多了,苹果会选择忽略。

  5. 最后再推荐大家移动端安装「APP Store Connect」

    1. 有时候苹果的web官网可能打不开,但移动端APP Store Connect可以打开,这时候可以应急使用一些功能,比如TestFlight测试。

    2. 打开各种通知:

      1. Build处理:我们上传包后appstore需要一段时间才可用,一般是半个小时以上(本人有遇到过两个多小时的),这期间如果没有通知,需要我们人工轮询查看处理结果,很不方便,打开Build处理通知,可以第一时间收到处理结果的推送。

      2. 状态更新:可以第一时间收到app审核状态更新的推送,及时上架app。

      3. 评论:可以收到用户在appstore评分的推送,及时了解用户对我们app的评价。