iOS app提交给Apple审核,总是会遇到很多审核不通过的忧伤情况,专门收集了网上大家及我的项目中提交APP至app store被拒的原因.
首先我们要认真阅读官方的APP Store审核指南
App Store审核指南 https://developer.apple.com/app-store/review/guidelines/
主要错误 :
1.元数据错误
2.程序有重大bug
3.应用审核存在较明显的测试数据
4.更新版本
5.VIP 会员 绕过苹果的付费渠道
6.应用评级与内容不符
7.启动页报错
8.浏览网页
9.技术支持地址
10.关于对js交互问题
11.关于ipv6问题
12.项目无iPad 适配问题(2.4性能:硬件兼容性)
13.项目无注册问题(2.1性能:应用程序完整性)
14.项目原本没问题但是苹果拒了,可以添加视频操作网址
15.90174问题, 缺配置文件或者设置问题.
16.u选项必须具有非空值。 The u option must have a non-empty value.
17.应用程序不符合使用苹果商标和版权的指南 5. 2.5 Legal: Intellectual Property - Apple Products
18.Logo、副标题及关键词不可出现商品定价相关的词汇
19.App的是否有付费内容或服务
20.公司同类产品Guideline-4.3
21.使用App内购以外的支付机制解锁APP内的功能
22.定位、相机等权限描述问题
23.数据收集和存储
24.可接受的商业模式
25.SNS类型的APP,缺少举报、拉黑、投诉功能
26.应用开启了后台权限但审核时未发现运用到
27.应用内涉及抽奖功能被拒
28.敏感词问题
29.应用预览图与应用内容不符
30.其他大致被拒原因
三十. 其他大致被拒原因
以下这些类,基本也就只能放弃该二进制包了,重新修改功能及页面重新上线一个新APP了。
1)1.1.6 内容虚假,错误,不当内容,内容包含诱导用户的内容
2)2.5.4 app使用位置后台模式,用于其预期目的
3)3.2.2 商业模式不符合,业务模式不可接受
4)4.1 侵权
5)4.2 app太简单/功能和苹果的相冲突
二十九. 应用预览图与应用内容不符
主要是APPStore预览图与APP内容不符
** 解决方案:**
更换相关图片,图片内容必须包含应用内内容(一般是1.0版本遇到较多)。
二十八. 敏感词问题
主要是涉及敏感词
解决方案:
当上传的IPA包中,内容存在相关收录的敏感词时,需全部清除所涉敏感词,例如黄、赌、毒等。
二十七. 应用内涉及抽奖功能被拒
主要是未申明活动与苹果官方无关。
解决方案:
应用内有抽奖的运营活动功能时,奖品不要包含评估相关产品,且声明活动与苹果官方无关。
二十六. 应用开启了后台权限但审核时未发现运用到
2.3.1 app包含隐藏、休眠或未记录的功能,包括可重定向到赌博或彩票网站的隐藏“开关”
解决方案:
如应用后台开启了音乐、定位等功能,但是审核时审核人员未发现应用内用到相关功能,此时需要修改或者提供说明该功能所用之处。
二十五. SNS类型的APP,缺少举报、拉黑、投诉功能
有审核不通过的概率
解决方案:
一旦审核被拒最佳方案是APP端添加一个跳转入口在JS网页去处理,实际功能可以不做,但是要有相关功能入口;重新上传新包再次提交审核,告知举报功能位置即可。
二十四. 可接受的商业模式
5.2.1 app或者app中的某个功能,公司不具有这个资质;
主要是没有资质。
解决方案:
最佳方案是拿到资质,如果实在没有资质,建议大家尽可能多的把自己公司合规的证据资料发给苹果,而套壳、换新账号碰运气上架等操作,不得已的话可以尝试。
二十三. 数据收集和存储
主要是App强制用户注册,且基于不需要用户信息的功能之上、暗中采集/共享用户的个人信息。
解决方案:
先与用户协商,让用户同意后注册,有“强登陆”功能的一定要修改为提示登陆的版本。
二十二. 定位、相机等权限描述问题
主要是 App 未得到允许,与第三方共享收集的用户数据,且并未说明使用目的等,例:定位、相机、蓝牙等权限。
解决方案:
如果要采取用户数据信息,需要给予用户提示,并得到用户的允许,或设置为可选,并且明确告知苹果采集用户数据信息的使用目的。
总的来说就是要弹出提示说明使用这个权限做什么用,写清楚即可。
二十一. 使用App内购以外的支付机制解锁APP内的功能
3.1.1-Use payment mechanisms other than in-app purchase to unlock features or functionality in the app
解决方案:
建议邮件回复我们App内都是使用的苹果支付,并没有使用任何第三方支付。(一般游戏App虚拟产品遇到较多)
二十. 公司同类产品Guideline-4.3
就是经典的 Guideline 4.3 - Design , 说我们已经有相同功能的 App 啦,认为我们复制了其内容或功能会造成混乱,会降低终端用户的整体体验的。
—> 一般公司项目里同类产品会遇到该问题。
解决方案:
策略可并行两条路子:
1、继续和苹果邮件交流,告诉他们我们的产品是不一样的,销售的地区也不一样,目前也得到回复的。
2、申请另一个苹果账号,通过修改应用名字BundleID、主icon、换肤、主色调、代码混淆等解决,必要时可通过增加其他无用内容,过审后隐藏。
PS: 发现类似 Guideline 2.1 - Information Needed 这种以后还是要在备注说明中也写下的,防止不是上次审核人员的,然后隔一次以相同理由被拒的。
十九. App的是否有付费内容或服务
—> 项目中遇到:
- Does your app access any paid content or services?
- What are the paid content or services?
- Do individual customers pay for the content or services?
- If no, does a company or organization pay for the content or services?
- Where do they pay, and what's the payment method?
- If users create an account to use your app, are there fees involved?
- How do users obtain an account?
解决方案:
建议回复邮件,也其实可以在上传审核时就在备注里根据产品大大提供的文案添加:
- 你的应用程序可以访问任何付费内容或服务么?
答:可以,我们的APP主要服务包括:XXX。用户使用App可以访问任何付费内容或非虚拟服务。 - 付费内容或服务是什么?
答: APP的付费内容为:XXX。内容包括XXX等。由XXX提供,非虚拟服务。 - 个人用户是否为内容或服务付费?
答:个人用户需要为内容或非虚拟服务付费。个人用户产生使用AppXXX需求时,同样需要为内容或非虚拟服务付费,方可使用非虚拟服务。 - 如果用户创建了一个账户来使用您的应用,是否需要付费?
答:如果用户创建了一个账户来使用我们APP,用户可根据自我意愿进行选择性付费。我们App无强制性付费内容。 - 用户如何获得账户?
答:客户是通过手机号获取验证码注册登录的。
十八. Logo、副标题及关键词不可出现商品定价相关的词汇
2.3.7 在应用程序商店中不适用于在应用程序名称或副标题中提及您的引用程序或其提供的服务的价格。
项目中遇到:
Logo及副标题中均有“免费3个月”,后又改成“试用3个月”,苹果均认为都含有商品定价信息。
解决方案:
从应用的字幕中删除所有对定价的引用。如果您想宣传对应用服务价格的更改,请考虑在应用说明中包含此信息。
十七. 应用程序不符合使用苹果商标和版权的指南
5.2.5 Legal: Intellectual Property - Apple Products
您不得在或与网站、产品、包装、手册、促销/广告材料有关的情况下使用Apple徽标或其他Apple所有的图形符号、徽标或图标,或用于任何其他目的,但根据Apple的明确书面商标许可(如转售协议)除外。
解决方案:
logo等相关内容不得采用iPhone——苹果商标,图像或相似的应用程序图标
十六.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是铁定是新版本的
十五. 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再重新装描述文件应该就能解决了.
十四. 项目原本没问题但是苹果拒了,可以添加视频操作网址
其实我们引导页没有明确的点击进入按钮, 但是我们又全屏的手势点击进入 APP, 但是苹果审核并不值得,很奇葩的拒了!
邮件上说:2.1性能:应用程序完整性, 我们发现你的应用程序的一个或多个错误,当回顾在 iPhone运行 iOS 10.3.3WiFi连接到IPV6网络上. 具体来说, 你的应用程序在最初的屏幕启动后没有采取任何行动,我们无法继续,无法继续.
建议:添加视频操作网址链接
回复邮件: 告知这个 APP 是在引导页后直接全屏点击 手势点击进入 APP 的. 是可以屏幕任意地方点击进入的. 并且让后台上传视频操作, 然后邮件添加网址链接即可.
十三. 项目无注册问题(2.1性能:应用程序完整性)
苹果那边会发来邮件通知, 根据2.1性能:应用程序完整性, 提出产品缺陷不完整问题.
此外,请提供下列问题的资料,供我们继续进行审查:
-谁是你的应用程序的目标受众?
-这个应用程序只针对一家公司的内部员工吗?如果是的话,公司的名称是什么?
-用户如何接收用户名/密码?
建议:回复邮件, 也其实可以在上传审核时就在备注里添加:
1.谁是你的应用程序的目标受众?
————(回答你们的目标受众)
2.这个应用程序只针对一家公司的内部员工吗?如果是的话,公司的名称是什么?
————不是
3.用户如何接收用户名/密码?
————通过邮件方式
4.该APP无外链,采数据
十二. 项目无iPad 适配问题(2.4性能:硬件兼容性)
一般我们 APP 仅仅支持 iPhone, 并未适配 iPad, 这个时候被拒,即使我们发邮件告知并不支持 iPad 也没用, 听我苹果还是会回复邮件: 对于2.4.1问题,请注意,即使你的应用程序是专门为iPhone用户仍然可以使用您的应用程序在iPad上.
建议:
针对苹果截图发来的界面 适配即可.
十一. 关于ipv6问题
目前协议上并未强制要求使用 ipv6, https如果目前暂未使用, 就需要把一些第三方的使用全部更新到能支持 ipv6的版本.
一般像有友盟和第三方解析图片的框架SDWebImage这块使用的话一定要更新到支持ipv6的版本.
建议:还是尽快使用 ipv6,毕竟后面还是躲不过的, 需要后台配置证书了.
十. 关于对js交互问题
现在对js交互审核比较严,虽然没有明确提出,但是遇到就给你发开发者协议2.5.2和3.3.2
建议:尽量不要有 h5交互, JavaScriptCore.framework这个库尽量删掉
九. 技术支持地址
- 不要写微博这种地址
原因是:不能将需要登陆才能访问的网址作为技术支持地址。 - 技术支持网址打不开
原因:苹果打不开,邮件Service Unavailable. HTTP Error 503. The service is unavailable.
八. 浏览网页
浏览网页,必须使用iOS WebKit框架和WebKit JavaScript
七.启动页报错
这个时候需要先检查图片尺寸是否正确,接着清空 Launch Screen File ,上面 Launch Image Sourc里 不再选择Brand Assets.
注意: 当未设置default页,启动画面为黑屏,也有一定概率被拒绝。
六. 应用评级与内容不符
之前一个朋友做过一个app是婚恋类型的 更适合成人观众。年龄设置太低,说是有成人内容,被拒.修改内容后上线.
上架失败,邮件回复:您选择的评级,4 +,与您的应用程序的内容不一致。由于你的应用程序主要是一个约会应用程序,它更适合成人观众。因此,你必须选择一个“刺激”设置为“成熟/暗示性主题”在iTunes Connect。
解决方案:
合理调整评级,对相关敏感内容进行清理整改,一定不能故意降低评级。
五. VIP 会员 绕过苹果的付费渠道
绕过苹果的付费渠道,我们目前项目里的有个vip功能涉嫌应用内收费, 但仅仅是微信支付和支付宝支付, 并未使用苹果支付,直接被拒,返回邮件就是会员界面截图.
解决方案:
和更新版本思路一样:线上打开,审核期间去屏蔽相对应线上版本的. 需要接口提供一个字段,审核的时候是0,上线后是1.
四. 更新版本及强制更新
--> 4.1 更新这是敏感字眼,苹果审核可谓见光必杀,那我们的产品大大要求必须和安卓一致需要这些功能.
解决方案:
等待审核及审核期间,相对应版本审核的时候是0,上线后修改状态为1。
--> 4.2 更新存在引导用户更新应用被拒。
解决方案:
当应用中存在更新提示弹窗时,需设置开关,审核过后放出,否则被认定为引诱用户更新。
三. 应用审核存在较明显的测试数据
注意:
任何数据同样不要有“试用”,“演示”,“试用”,或“测试”版本 字眼,一定要跟数据相关同事说好,上线时候正式库的数据、测试字眼英语单词哪怕拼音最好也不要出现,会被拒的。
二. 程序有重大bug
程序不能启动,或者中途退出。程序若有crash被拒.修改bug后重新上线即可.千万避免这种情况,上架前都要测试 OK.
一. 元数据错误
- 测试账号压根登录不上去,这就坑啥了! so, 提前和 server 同事说好,不要删除测试账号 或者 上线审核过程中务必不要正式数据库崩溃!
- 当截图仅仅是启动页或者引导页(欢迎页)截图时,苹果会认为 APP 截图展现没有充分反映您的应用程序使用。
请修改您的截图,以确保他们准确地反映在使用的应用程序。 - 2.3.3错误提示, 采用屏幕预览或者截图时, iPhone X (5.8寸)的一定要与5.5寸的相同一致的,否则就会提示您为 iPhone 5.8提交的截屏没有准确反映该设备上运行的应用程序. (目前 iPhone X 的可选填是否上传截图).
注意:因为你的iTunes Connect状态是元数据的拒绝,不需要一个新的二进制。只需要重新100%的 command + S 去模拟器截图 APP 内容.
更多APP被苹果拒绝的原因,待收集补充。