iOS app提交给Apple审核,总是会遇到很多审核不通过的忧伤情况,今天上班第一天来不是很忙,就专门收集了网上大家提交APP至app store被拒的原因.
首先我们要认真阅读官方的APP Store审核指南 App Store审核指南 https://developer.apple.com/app-store/review/guidelines/
主要错误
- 元数据错误
- 程序有重大bug
- 审核状态中属于正式环境,不要有测试数据
- 更新版本
- VIP会员 绕过苹果的付费渠道
- 正确选择评级
- 启动页报错
- 浏览网页
- 技术支持地址
- 关于对js交互问题
- 关于ipv6问题
- 项目无iPad 适配问题(2.4性能:硬件兼容性)
- 项目无注册问题(2.1性能:应用程序完整性)
- 项目原本没问题但是苹果拒了,可以添加视频操作网址
- 90174问题, 缺配置文件或者设置问题.
- u选项必须具有非空值。 The u option must have a non-empty value.
一. 元数据错误
- 测试账号压根登录不上去,这就坑啥了! so, 提前和 server 同事说好,不要删除测试账号 或者 上线审核过程中务必不要正式数据库崩溃!
- 当截图仅仅是启动页或者引导页(欢迎页)截图时,苹果会认为 APP 截图展现没有充分反映您的应用程序使用。 请修改您的截图,以确保他们准确地反映在使用的应用程序。
- 2.3.3错误提示, 采用屏幕预览或者截图时, iPhone X (5.8寸)的一定要与5.5寸的相同一致的,否则就会提示您为 iPhone 5.8提交的截屏没有准确反映该设备上运行的应用程序. (目前 iPhone X 的可选填是否上传截图).
注意: 因为你的iTunes Connect状态是元数据的拒绝,不需要一个新的二进制。只需要重新100%的 command + S去模拟器截图 APP 内容.
二. 程序有重大bug
程序不能启动,或者中途退出。程序若有crash被拒.修改bug后重新上线即可.千万避免这种情况,上架前都要测试 OK.
三. 审核状态中属于正式环境,不要有测试数据
注意: 任何数据同样不要有“试用”,“演示”,“试用”,或“测试”版本 字眼,一定要跟服务器同事说好,上线时候正式库的数据、测试字眼英语单词哪怕拼音最好也不要出现,会被拒的。
##四. 更新版本 更新这是敏感字眼,苹果审核可谓见光必杀,那我们的产品大大必须要求和安卓一致需要这些功能.
解决方案: 我的逻辑是,线上打开,审核期间去屏蔽相对应线上版本的. 需要后台给我一个字段,审核的时候是0,上线后是1.
五. VIP 会员 绕过苹果的付费渠道
绕过苹果的付费渠道,我们目前项目里的有个vip功能涉嫌应用内收费, 但仅仅是微信支付和支付宝支付, 并未使用苹果支付,直接被拒,返回邮件就是会员界面截图.
解决方案: 和更新版本思路一样:线上打开,审核期间去屏蔽相对应线上版本的. 需要后台给我一个字段,审核的时候是0,上线后是1.
六. 正确选择评级
一个朋友之前做过一个app是婚恋类型的 更适合成人观众。年龄设置太低,说是有成人内容,被拒.修改内容后上线.
上架失败,邮件回复:您选择的评级,4 +,与您的应用程序的内容不一致。由于你的应用程序主要是一个约会应用程序,它更适合成人观众。因此,你必须选择一个“刺激”设置为“成熟/暗示性主题”在iTunes Connect。
七.启动页报错
这个时候需要先检查图片尺寸是否正确,接着清空 Launch Screen File ,上面 Launch Image Sourc里 不再选择Brand Assets.
注意: 当未设置default页,启动画面为黑屏,也有一定概率被拒绝。
八. 浏览网页
浏览网页,必须使用iOS WebKit框架和WebKit JavaScript
九. 技术支持地址
- 不要写微博这种地址 原因是:不能将需要登陆才能访问的网址作为技术支持地址。
- 技术支持网址打不开 原因:苹果打不开,邮件Service Unavailable. HTTP Error 503. The service is unavailable.
十. 关于对js交互问题
现在对js交互审核比较严,虽然没有明确提出,但是遇到就给你发开发者协议2.5.2和3.3.2
建议: 尽量不要有 h5交互, JavaScriptCore.framework这个库尽量删掉
十一. 关于ipv6问题
目前协议上并未强制要求使用 ipv6, https如果目前暂未使用, 就需要把一些第三方的使用全部更新到能支持 ipv6的版本. 一般像有友盟和第三方解析图片的框架SDWebImage这块使用的话一定要更新到支持ipv6的版本.
建议: 还是尽快使用 ipv6,毕竟后面还是躲不过的, 需要后台配置证书了.
十二. 项目无iPad 适配问题(2.4性能:硬件兼容性)
一般我们 APP 仅仅支持 iPhone, 并未适配 iPad, 这个时候被拒,即使我们发邮件告知并不支持 iPad 也没用, 听我苹果还是会回复邮件: 对于2.4.1问题,请注意,即使你的应用程序是专门为iPhone用户仍然可以使用您的应用程序在iPad上.
建议: 针对苹果截图发来的界面 适配即可.
十三. 项目无注册问题(2.1性能:应用程序完整性)
苹果那边会发来邮件通知, 根据2.1性能:应用程序完整性, 提出产品缺陷不完整问题. 此外,请提供下列问题的资料,供我们继续进行审查: -谁是你的应用程序的目标受众? -这个应用程序只针对一家公司的内部员工吗?如果是的话,公司的名称是什么? -用户如何接收用户名/密码?
建议:回复邮件, 也其实可以在上传审核时就在备注里添加: 1.谁是你的应用程序的目标受众? ————(回答你们的目标受众) 2.这个应用程序只针对一家公司的内部员工吗?如果是的话,公司的名称是什么? ————不是 3.用户如何接收用户名/密码? ————通过邮件方式 4.该APP无外链,采数据
十四. 项目原本没问题但是苹果拒了,可以添加视频操作网址
其实我们引导页没有明确的点击进入按钮, 但是我们又全屏的手势点击进入 APP, 但是苹果审核并不值得,很奇葩的拒了! 邮件上说:2.1性能:应用程序完整性, 我们发现你的应用程序的一个或多个错误,当回顾在 iPhone运行 iOS 10.3.3WiFi连接到IPV6网络上. 具体来说, 你的应用程序在最初的屏幕启动后没有采取任何行动,我们无法继续,无法继续.
建议:添加视频操作网址链接
回复邮件: 告知这个 APP 是在引导页后直接全屏点击 手势点击进入 APP 的. 是可以屏幕任意地方点击进入的. 并且让后台上传视频操作, 然后邮件添加网址链接即可.
十五. App90174问题, 缺配置文件或者设置问题.
ERROR ITMS-90174: "Missing Provisioning Profile - Apps must contain a provisioning profile in a file named embedded.mobileprovision."
解决方案:
- 查看证书是否过期, 在keychains里选择login,然后点选Certificates,在这个界面,选择工具栏的View -> Show Expired Certificates,删除过期的“WWDR Certificate”(Apple Worldwide Developer Relations Certification Authority); 在System的那一栏也要删除过期的“WWDR Certificate”。不出意外你的证书那里从 “This certificate has an invalid issuer”(此证书的签发者无效)变成了 “This certificate is valid”了.
- 新建发布证书ios_distribution.cer和描述文件Distribution.mobileprovision,准备好这两个文件后就到Xcode选取设置.
- 如果还是不行的话, 就去这个路径下把所有描述文件全删了
~/Library/MobileDevice/Provisioning Profiles
, 然后重启xcode再重新装描述文件应该就能解决了.
十六.u选项必须具有非空值。 The u option must have a non-empty value.
今天更新迭代上传APP时用application loader上传到AppStore上去,打包之后上传的时候报错,用的是Xcode9.0,如下:
1.the u option must have a non-empty value
2.the password must have a non-empty value
复制代码
解决方案:
1.去iTunes connect更新application loader的dmg 2.更新Xcode9.0升级到9.1的版本,9.1附带的application loader是铁定是新版本的
更多APP被苹果拒绝的原因,待收集补充。