作者:Jamie,专项技术测试工程师,在iOS预审和ASO优化领域从事专项测试相关工作,为腾讯游戏近100个产品提供专项服务。

WeTest 导读

在App上架苹果应用商店的过程中,相信大多数iOS开发者往往都有过这样的经历:辛苦开发出来的产品,测试验收也通过了,满怀期待的提交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、元数据(应用描述等) 
苹果审核也是围绕以上4方面来开展的,如果提审App出现被拒,无非就是如上某些内容不满足苹果要求导致,接下来一起看看腾讯手游过去所踩过的一些坑吧。

1、App信息被拒的案例 
【案例1】游戏A的副标题包含明显关键词和宣传活动描述: 

【案例2】游戏B提交的IAP档位,审核人员无法在游戏内找到对应的档位: 

【案例3】游戏C提交的体验账号,密码错误,审核人员无法通过该账号体验游戏: 
 

2、ipa被拒的案例 
【案例4】游戏D因存在调用私有API或non-public API导致被拒: 

【案例5】游戏E因使用违规的第三方SDK导致被拒: 

【案例6】游戏F因使用后台服务(位置)但未在info.plist进行声明,导致被拒: 
 

【案例7】游戏G弹出的公告中,出现测试、删档等字眼(苹果认为是测试版本)导致被拒: 

【案例8】游戏H弹出的公告中,出现错误的苹果产品的英文拼写”IOS“(正确的格式:iOS),导致被拒: 

【案例9】游戏I,IAP支付功能异常,导致被拒。 

3、宣传素材被拒的案例 
【案例10】游戏J,提交的图片/视频中有“萝莉”“御姐”等低俗词语,导致被拒。 

【案例11】游戏K,提交的图片/视频不能体现游戏真实内容(只显示了游戏角色,不能反应游戏真实场景),导致被拒。 
 

【案例12】游戏L,提交的图片/视频内容是在安卓机上截取的,导致被拒。 
 

【腾讯预审团队的应对策略】

通过上面的被拒案例,大致可以感受到,手游提审被拒的原因是五花八门的,稍有不慎便会被拒,腾讯预审团队对过往一段时间的提审数据,进行归类,详情如下: 

看似不可把控的苹果审核,开发者们有没有什么办法去准确和系统的去把握呢?对此,腾讯预审团队从2014年前便开始尝试一系列的探索和积累: 
1.分析《苹果应用商店审核指南》的条款,结合过往提审被拒的案例,进行系统的测试设计,并输出成可落地的测试用例; 
2.在以上步骤的基础上,进行自动化分析,抽离出可自动化的模块(开发对应的自动扫描工具); 
3.将剩余的部分用例,组建专项的测试人员来进行验收; 
4.App每次版本提审,通过以上测试验收后,才会正式提交给苹果审核; 
根据以上工作思路,腾讯预审团队对审核对象进行模块的划分,主要包含ipa包、提审资源以及应用内容和功能3大模块(一共整合了150+个测试点及测试用例,其中自动化扫描项70+个):

ipa包的检查 
主要是确保ipa中info.plist、包/文件大小、icon规格、私有API、第三方SDK、64位等内容符合苹果要求,此部分的验收,腾讯预审团队已开发出自动化工具,通过自动扫描来完成;

提审资源的检查 
主要是确保提交的应用截图、视频、AppIcon、应用描述等资源是符合苹果要求的,其中资源规格属性的验收,预审团队已开发出自动化工具,通过自动扫描来完成;但资源的内容、文案等部分内容的验收,还需要人工来审查;

应用内容和功能的检查 
确保应用的内容满足苹果审核审核指南中安全、性能、设计、法律等章节的条款,通常需要覆盖安装、登录、IAP支付、公告、活动、邮件、icloud文件存储、美国VPN网络连通性、IPv6网络连通性等应用场景内容和功能,此部分的验收,全需要人工来审查;

【腾讯预审团队的工作成效】

预审团队通过实时跟进苹果审核动态,依此来不断的更新和完善验收方案,持续保障产品的提审通过率,得到越来越多产品的认可,截止到今年7月,服务App产品已累计100+个,每月完成的转测次数120+次。在2016上半年的提审数据统计可见,尽管有IPv6、提审图片/视频、名称/副标题等政策变更的冲击,提审通过率仍旧保持在85%以上,体现了预审方案的工作成效: 
各模块被拒的占比,详情如下图: 

在以上被拒的数据统计中,可以发现,更多的是在游戏功能、内容和提审材料的内容,而ipa包和提审资源规格部分被拒的次数占比很少,自动化工具带来的质量和保障也得以体现。

【腾讯WeTest iOS预审工具】 
为了提高IEG苹果审核通过率,腾讯专门成立了苹果审核测试团队,打造出iOS预审工具这款产品。经过1年半的内部运营,腾讯内部应用的iOS审核通过率从平均35%提升到90%+。

现将腾讯内部产品的过审经验,以线上工具的形式共享给各位。在WeTest腾讯质量开放平台上可以在线使用。点击链接http://wetest.qq.com/ios即可立即体验!

iOS预审工具分四步进行预审服务 
【一键扫描】只需提供ipa包、审核图片、审核视频、应用描述,即可在4小时内拿到一份完整的检测报告,定位问题的同时提供解决方案,助您成功通过审核。 
【案例分享】集结iOS审核失败常见原因,丰富案例为您提供参考依据。 
【专家服务】腾讯专家团队为您分析各种疑难杂症,提出最优解决方案。 
【ASO优化】 
专业优化AppStore内关键字搜索结果,让产品离用户更近一步。希望App/手游在预审验收保证下,都可以快快乐乐过审,开开心心赚钱。

iOS审核这些坑,腾讯游戏也踩过的更多相关文章

  1. iOS审核总被拒?腾讯教你提升iOS审核通过率!

    作者:Jamie,腾讯开发工程师,在iOS预审和ASO优化领域从事专项测试相关工作,为腾讯游戏近100个产品提供专项服务. 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. WeTest ...

  2. 告别被拒,如何提升iOS审核通过率(上篇)

    iOS审核一直是每款移动产品上架苹果商店时面对的一座大山,每次提审都像是一次漫长而又悲壮的旅行,经常被苹果拒之门外,无比煎熬.那么问题来了,我们有没有什么办法准确把握苹果审核准则,从而提升审核的通过率 ...

  3. iOS审核秘籍】提审资源检查大法

    iOS审核秘籍]提审资源检查大法 2015/11/27 阅读(752) 评论(1) 收藏(6) 加入人人都是产品经理[起点学院]产品经理实战训练营,BAT产品总监手把手带你学产品点此查看详情! 本篇主 ...

  4. 三步走起 提升 iOS 审核通过率 上篇

    <ignore_js_op> Bugly 技术干货系列内容主要涉及移动开发方向,是由 Bugly 邀请腾讯内部各位技术大咖,通过日常工作经验的总结以及感悟撰写而成,内容均属原创,转载请标明 ...

  5. 告别被拒,如何提升iOS审核通过率(下篇)——应用内容检查大法与提审资源检查大法

    WeTest 导读 之前的<告别被拒,如何提升iOS审核通过率(上篇)>分享了客户端检查的相关要点,本篇会给大家介绍有关应用内容的检查项和提审资源相关检查项要点. 应用内容检查大法 苹果对 ...

  6. 提升iOS审核通过率之“IPv6兼容测试”

    作者:jingle 腾讯系统测试工程师 商业转载请联系腾讯WeTest授权,非商业转载请注明出处. 原文链接:http://wetest.qq.com/lab/view/285.html 一.背景 在 ...

  7. 聚焦小游戏技术生态,腾讯游戏云GAME-TECH落地厦门

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯游戏云 发表于云+社区专栏 2018迎来了小游戏元年,据<2018年小游戏行业白皮书>显示:2018年小游戏市场规模预 ...

  8. fir.im Weekly - 可能是 iOS 审核最全面的解决方案

    ipv6 被拒绝,后台定位被拒绝--让很多国内 iOS 开发者心力交瘁.这是一份关于 iOS 审核的终极免费方案,作者iOSWang对最近iOS 审核被拒问题给出了比较全面的方案:Solve-App- ...

  9. 腾讯游戏DBA团队的发展自白

    BA这个岗位跟仓管员很像,就是每天给别人发点货,别人在你这儿放点货,DBA工作就是把货尽快给送出去或者让人家尽快放进来.当然,还有一份重要的工作,就是让仓库里摆放的货物尽可能整齐,这也是仓管员的本职工 ...

随机推荐

  1. TypeScript: Angular 2 的秘密武器(译)

    本文整理自Dan Wahlin在ng-conf上的talk.原视频地址: https://www.youtube.com/watch?v=e3djIqAGqZo 开场白 开场白主要分为三部分: 感谢了 ...

  2. 【组织级项目管理】P2 MSP P3O

    组织级项目管理--有你,有我,有大家 在过去的2年,无论对于企业来讲,还是对于我们个人都有很多大脑的冲击,有几个词大家应该特别耳熟能详:转型,变革,敏捷,互联网+,组织的项目化管理等.就是这些让我们的 ...

  3. 80 端口被占用 pid=4

    80端口被pid=4的系统进程给占用的解决方法: 一般开发的时候我们都会安装sqlserver ,也会把Sql server Reporting Services 安装上去.原因就是这个服务占用了80 ...

  4. Mysql基础代码(不断完善中)

    Mysql基础代码,不断完善中~ /* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限 ...

  5. jQuery标准的AJAX模板

    $('#saveInformationTemplate_button').on('click', function(){ if(isEmpty($("#name").val())) ...

  6. 用C++实现Linux中shell的ls功能

    实现输出当前目录下的文件名 ls功能: 方法一: #include <iostream> #include <algorithm> #include <stdio.h&g ...

  7. js常用工具类.

    一些js的工具类 复制代码 /** * Created by sevennight on 15-1-31. * js常用工具类 */ /** * 方法作用:[格式化时间] * 使用方法 * 示例: * ...

  8. 初探java中this的用法

    一般this在各类语言中都表示“调用当前函数的对象”,java中也存在这种用法: public class Leaf { int i = 0; Leaf increment(){ i++; retur ...

  9. mono for android学习过程系列教程(5)

    这一讲主要需要了解的安卓UI元素是Spinner.这个元素类似我们 winform和webform里面的下拉选项. 首先我们先建立一个新的项目,命名为SpinnerExample. 然后在Layout ...

  10. ReactNative入门 —— 动画篇(上)

    在不使用任何RN动画相关API的时候,我们会想到一种非常粗暴的方式来实现我们希望的动画效果——通过修改state来不断得改变视图上的样式. 我们来个简单的示例: var AwesomeProject ...