苹果审核一直是APP上架时要面对的一座大山,很多iOSer同样也有过这么一段痛苦的经历。

在App上架苹果应用商店的过程中,相信大多数iOSer往往都有过这样的经历:辛苦开发出来的产品,测试验收也通过了,满怀期待的提交App给苹果审核,结果经常被苹果各种理由拒之门外,苦不堪言。

苹果为了给开发者和用户创造一个良性、公平、健康、安全的应用商店环境,同时也为保障苹果自身利益,因此制定了一系列的应用商店条款《App Store Review Guidelines》,所有开发者必须遵循这些条款,才能获得App上架的资格。不可否认,App审核在一定程度上保证了应用商店中的App品质,然而iOS提审对众多开发者来说,往往会有谈虎色变的感觉!

确实如此,很多手游同样也有过这么一段痛苦的经历,早在2015年之前,苹果审核一直是手游上架时要面对的一座大山,无论是首个版本还是更新版本的提审,都是一段忐忑甚至是悲壮的旅程,经常性被拒,无比煎熬。

大家都知道,过去苹果响应App提审(提交完成从正在等待审核“Waiting for Review”变成正在审核 “In Review”,如下图)等待时间是非常漫长的,少则几天,多则十几天,审核被拒就意味着手游版本要整改、测试验收和重新提审排队,将大大延长版本过审时间,从而影响了上架的节奏和运营活动的计划,甚至是手游的流水!

为了提高手游产品的苹果审核通过率,公司成立了苹果审核的测试团队,将苹果审核条款以及各种被拒理由整理成可测试的验收条目,并对验收项进行可自动化分析,开发出ipa包、图片/视频、应用描述等自动化扫描工具,力求高效地暴露App的提审风险,全面保障App的提审通过率。经过近2年的运行,iOS审核通过率从最早的平均35%提升到目前的90%+,本篇文章将会与大家分享预审项目的一些真实案例。

iOS提审需面对的压力

上节我们已经大概了解了开发者们在提审过程中遇到的重大阻力,为什么过审会是如此的艰难?不外乎如此:

1. 更细致、更苛刻的审核条款

2016年6月,苹果在官网更新了审核条款《App Store Review Guidelines》,通篇6000多英文单词,分5大章节,一共100+条款,涉及安全、业务、性能、设计和法律领域,让人眼花缭乱,开发者们如没有系统的、全面的把控,稍有不慎便会触犯其中条款,一旦触犯便有可能被拒。

2. 苹果半自动半人工的审核机制

苹果审核是采用半自动半人工的审核方式,不同审核人员对条款理解程度和执法力度往往会因人而异,所以时常会出现开发者们遇到的如下情况:上次提审通过,但下一版本更新时便被拒了,审核人员出现遗漏或者审核人员发生了变更。总之,不同时间段,审核结果可能会不一样,这些人为因素造成的结果,对开发者来说,容易产生困扰和不解。

3. APP数量激增,审核任务巨大,审核人力不足

据苹果官方统计,应用商店App的数量当前已经有200万+,平均每周有上万款新App上线,5万+款App更新(每个App存在重复审核的可能)。对于苹果审核团队来说,要处理如此巨大的审核任务(具体数据,笔者无从考据),难免会出现精力不足, App功能的访问路径稍微深一点、实现逻辑稍微复杂一点,文字描述稍微有含糊,便有可能会被拒绝。有开发者曾吐槽过,提交的一款娱乐类应用,被拒的原因是:苹果觉得应用并不具有娱乐性,让人举手无措!

我们产品踩到的坑

每个App上架苹果应用商店时,需要提交给苹果进行审核的内容,基本上可以归类为以下几方面:

1. App信息

App信息(名称/副标题、类型等) 评级信息(年龄、暴力、赌博、色情等内容程度) 定价相关内购信息(IAP配置) 审核信息(体验账号)

2. ipa包(ipa规格属性、App内容)

ipa包规格属性(检查项很多,篇幅受限,不一一罗列了):

私有API和Non-public API的调用 64位支持 Info.plist键值的设置 第三方违规SDK的使用 Icon资源 …..

App内容:(检查项很多,篇幅受限,不一一罗列了)

违规字样:测试字样、苹果产品英文拼写错误、色情/暴力/诽谤言论等 抽奖活动内容 IAP充值功能 QQ会员专属福利 未开放的功能占位符 ……

3. 宣传素材(预览图片、视频、Large App Icon)

图片

图片内容 图片规格属性

视频

视频内容 视频规格属性

Large App Icon

Icon内容 Icon规格属性

4. 元数据(应用描述等)

苹果审核也是围绕以上四方面来开展的,如果提审App出现被拒,无非就是如上某些内容不满足苹果要求导致。接下来一起看看腾讯手游过去所踩过的一些坑吧

4.1 App信息被拒的案例

【案例1】游戏A的副标题包含明显关键词和宣传活动描述: 【案例2】游戏B提交的IAP档位,审核人员无法在游戏内找到对应的档位: 【案例3】游戏C提交的体验账号,密码错误,审核人员无法通过该账号体验游戏:

4.2 ipa被拒的案例

【案例4】游戏D因存在调用私有API或non-public API导致被拒: 【案例5】游戏E因使用违规的第三方SDK导致被拒: 【案例6】游戏F因使用后台服务(位置)但未在info.plist进行声明,导致被拒: 【案例7】游戏G弹出的公告中,出现测试、删档等字眼(苹果认为是测试版本)导致被拒: 【案例8】游戏H弹出的公告中,出现错误的苹果产品的英文拼写”IOS“(正确的格式:iOS),导致被拒: 【案例9】游戏I,IAP支付功能异常,导致被拒。

4.3 宣传素材被拒的案例

【案例10】游戏J,提交的图片/视频中有“萝莉”“御姐”等低俗词语,导致被拒。 【案例11】游戏K,提交的图片/视频不能体现游戏真实内容(只显示了游戏角色,不能反应游戏真实场景),导致被拒。 【案例12】游戏L,提交的图片/视频内容是在安卓机上截取的,导致被拒。

通过上面的被拒案例,大致可以感受到,提审被拒的原因是五花八门的,稍有不慎便会被拒,对过往一段时间的提审数据,进行归类,详情如下: 现在我们自己写了个iOS代码混淆工具,每次上架前都混淆下源码,上包通过率目前达到了85%

本文本人首发www.zfjobslib.com。 【iOS代码混淆工具】版本:ZFJObsLib 1.7.2

苹果审核的这些坑,我踩过现在写出来让你避坑相关推荐

  1. python避坑指南_Linux下Python3.6的安装及避坑指南

    Python3的安装 1.安装依赖环境 Python3在安装的过程中可能会用到各种依赖库,所以在正式安装 Python 3之前,需要将这些依赖库先行安装好. yum -y install zlib-d ...

  2. 凌恩生物资讯|细菌完成图,坑多专家少——请收下这份避坑指南

    尝试做细菌完成图的你是不是有很多疑问 这份避坑指南请收好! 小坑1."1 +X Contig,0 Gap"代表什么? 答:"1 Contig,0 Gap"的承诺 ...

  3. iphone避坑指南

    写在前面: 避坑的重要前提是宽裕的时间.详细检查需要充足的时间. 首要的是时刻警觉被骗的风险. 采购渠道 验机 截屏 序列号 IMEI号,GSX查售后记录 爱思报告,沙漏报告 确认无误后,让卖家发货 ...

  4. 虹软开发心得---多线程实战开发避坑分享(C#)

    前言 多线程一直是后端开发一个回避不了的话题.凡是大型项目,对高并发要求一般不低.除去利用docker,k8s等框架进行负载均衡,动态扩容之外,多线程也是增强程序/系统并行处理能力的有效手段.恰巧虹软 ...

  5. Linux重定向和管道符使用避坑指南

    本文就分享一下我在实践中使用重定向和管道符遇到的一些坑,搞明白一些底层原理,写脚本的效率能提升不少. 我很喜欢 Linux 系统,尤其是 Linux 的一些设计很漂亮,比如可以将一些复杂的问题分解成若 ...

  6. Android 避坑指南:Gson 又搞了个坑!

    这是我之前项目同学遇到的一个问题,现实代码比较复杂,现在我将尽可能简单的描述这个问题,并且内容重心会放在预防阶段. 一.问题的起源 先看一个非常简单的model类Boy: public class B ...

  7. 新房装修材料避坑分享

    第一次装修怕被坑,雅静说选哪些品牌的材料才能避坑 1,水管选伟星,日丰,联塑,因为水管的核心是质保, 要选水管管件和人工焊接点,双重质保的 2,电线选正泰,德力西,公牛,熊猫,一定要选国际带有3C认证 ...

  8. iOS - 苹果审核被拒3.2(f)

    最近公司App提交审核被拒了,理由是3.2(f),上网查了一下最近好像很多开发者都收到这个被拒的理由了,而且个别开发者账号被直接封号,一年后才能重新使用. 一年后?意味着这个账号出局了,如果收到这个邮 ...

  9. Map 集合的坑你踩过几个?

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | 公众号「程序通事」 上一篇 List 踩坑文章 ...

最新文章

  1. 关于linux安装前规划分区二三事
  2. Python学习笔记.OS学习笔记 OS操作系统(operating system)(二)程序和进程 输出进程号,工作目录最有用!
  3. JavaSE学习笔记(三)——运算符与控制语句
  4. 图解Ubuntu 9.10 Alpha 6
  5. 【hdu 1043】Eight
  6. vs2012 error c4996: 'fopen': This function or variable may be unsafe
  7. linux mysql无符号整型_Mysql基础
  8. 352. Data Stream as Disjoint Intervals
  9. 南京大学计算机学院宋教授,宋曰钦教授
  10. Mavin build中隐藏的SAP UI5 JavaScript merge任务
  11. 玩转oracle 11g(20):ora-00604和ora-00018
  12. 非正弦周期电流电路和信号的频谱
  13. ES6语法---let和var的不同
  14. UML建模之时序图(Sequence Diagram)转
  15. 5分钟带你入门vuex(vue状态管理)
  16. Txt格式的电子书解析
  17. 什么是弱网测试?为什么要进行弱网测试?怎么进行弱网测试?
  18. 不花冤枉钱就能回家 --- 程序员教你如何高效抢票
  19. Doug Lea是谁?谁知道
  20. redis 全量复制条件

热门文章

  1. 2020湖湘杯MISC全解-writeup
  2. Python 图形界面框架 PySide6 使用及避坑指南
  3. STM32_HAL库_常用函数库
  4. 【科创人独家】Worktile王涛:创业那些坑很难避免,要磨练在坑里吸取营养的能力
  5. 计算机专业如何进单位编制,事业单位招考,进去是什么编制?
  6. java 计算当前日期所在的星期一到星期日
  7. linux复合函数算数表达式,突然发现,原来管道就是复合函数
  8. 【金猿人物展】MobTech袤博科技CEO兰旭:大数据应用应“懂行”又“懂数”
  9. 一次因时区引发的血案
  10. SocketTools.NET 11.0 Crack