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

iOS审核一直是每款移动产品上架苹果商店时面对的一座大山,每次提审都像是一次漫长而又悲壮的旅行,经常被苹果拒之门外,无比煎熬。那么问题来了,我们有没有什么办法准确把握苹果审核准则,从而提升审核的通过率呢?答案是肯定的,腾讯预审团队从以下两方面做了探索,经过近一年的推行和数据监控, iOS审核月通过率从过往的35%提升到85%+

1.分析过往提审被拒的案例,并结合《苹果应用商店审核指南》的条款,整理成可执行的审查条目;

2.抽离出可以自动化的方法,提升审核的效率;

接下来我们将带你一起走进苹果审核,揭秘iOS审核的真相。本篇作为引子,分三个层面给大家简单介绍iOS审核相关内容:

一、iOS审核探秘之审核设备篇

二、iOS审核被拒纬度剖析

三、腾讯预审团队的iOS预审验收维度


一、iOS审核探秘之审核设备篇

苹果的产品从07年推出后,逐步推陈出新,外部市场上也已经有比较多的产品硬件版本和系统版本。如此多的系统版本,我们怎么去保证提审版本的质量,是一直困惑测试和产品团队的点。

往往苹果突然发布了新的系统,我们怎么应对这些风险呢?

【经典案例】

14年底,由于iOS新版本8.1.1系统的发布,做了一些系统底层Bug的修复,导致了游戏产品支付不成功、webview登录失败。

【关键举措】

1、与苹果关注同样的验收版本:

推测苹果审核团队设备验收选型也会遵循原则:验收最新发布的两个系统版本,两个硬件版本。保证游戏可以在市场占有率最高的两个系统版本及硬件配置上可以流畅运行。

因此腾讯预审团队会根据当前版本发布的节奏采购设备,升级系统,保证能覆盖到以上的系统版本和硬件版本。目前验收的机器列表及型号:

 

2、关注beta版本:

苹果在新版本上线前会发布beta版本做少量测试,此时需要跟进beta版本,可以提前发现问题,避免突然版本发布造成措手不及。

二、iOS审核被拒纬度剖析

为了探究更深层次的被拒情况,我们做了细化的分析,通过往年的提审数据统计,看看都是因为哪些原因被拒吧!

三、预审业务验收的维度

根据2014年的数据统计情况,并结合《苹果应用商店审核指南》,预审组通过细分将预审工作划为3大模块:客户端资源检查、应用内容检查和提审资源检查:

客户端资源检查

确保客户端内Plist等配置符合苹果要求,不存在多余的Key值enable;

应用内容检查

对应用的内容进行审查,确认无涉及色情、庸俗、暴力、枪支等内容;并对公告文字等筛查,无苹果禁止的字眼等;应用内不包含cdkey兑换,好友邀请及炫耀等苹果最新禁止的内容;

提审资源检查

确保提交的游戏截图、视频符合苹果要求,且截图及视频中没有敏感信息;同时视频截图等均符合苹果的技术要求,帧率分辨率达标.

本文先简介下苹果审核的相关内容,后续会依据业务验收的维度,给大家逐一介绍验收的要点、曾经遇到的坑和那些让人不淡定的被拒案例。

我们先从客户端检查开始介绍

客户端检查的主要目的是通过客户端配置检查来保证客户端符合苹果的开发者规范以及其他更新的要求,包括存储系统、配置文件、网络连接(VPN)、icon检查、私有API检查,提审前的审核会覆盖这几个部分的各个测试点。

1、存储系统检查

苹果官方对用户数据存储有严格的规范,以往有很多被拒案例都是关于存储的。因此,我们需要掌握苹果官方数据存储指引的相关内容:

【经典案例】

【案例1】《项目A》x.x.0版本,因App启动后在用户的iCloud存储有22.17MB的数据(通常是不能超过1MB),不符合 iOS数据存储准则被拒。

解决办法:因增量更新累积文件过大,经过修复后通过审核。

【案例2】 《项目B》x.x.5版本,因没有遵循iOS的数据存储准则被拒,在应用的documents目录下存储了资源文件,苹果不允许非用户生成的文件放在这个目录下,因为此目录会被同步到iCloud。

解决办法:将需要存在的本地的资源文件修改到了library/cache下。

 2、配置文件(Info.plist)检查

Info.plist是一种结构化的文本文件,通常所说的 “属性列表”,iOS的app都使用Info.plist文件来存储元信息,用来实现决定bundle所显示的icon,当前app支持打开的文档类型,服务声明等等。关于此部分的检查,我们通常关注如下方面的内容:

【经典案例】

《项目C》x.x1版本,曾因Info.plist设置问题被拒,即应用程序不需要的文件共享功能,但在Info.plist中的UIFileSharingEnabled键被设置为true了。

解决方法:Info.plist UIFileSharingEnabled键设置为false。

3、网络连接(VPN)

大多数App的审核服务器是部署在中国,然而苹果的iOS审核团队却又是在美国,他们进行审核时,使用的是美国网络,这样跨洲际的网络连接,难免会出现时延大、抖动、丢包等网络问题,为了提前验证App后台服务器基于此场景下的反应,预审团队采用美国VPN方式来模拟苹果审核团队的访问网络环境(应用从美国VPN网络中访问后台服务器)。

【经典案例】

《项目D》曾因美国IP不能登录被拒。通过美国VPN连接,开发进行定位并修复后重新提审,并通过审核。

4、Icon检查

苹果官方对iPhone、iPad、iPod等应用程序的icon有明确的要求:要求ipa包中必须包含180x180,120x120,76x76,152x152尺寸的PNG格式的icon(详见下表),并且不同尺寸的icon内容要一致。

关于App icon的检查,腾讯预审团队采用自动化方法实现自动解压ipa包,并逐一核实icon图标是否存在并满足要求,对于不满足要求的ipa包,给出告警提示:

【经典案例】

《项目E》x.x.x版本预审,未提供相关icon图片资源,如果按此版本正式提审,等待苹果的审核结果,只会是被拒。

5、私有API检查

私有API(Private API)是指放在PrivateFrameworks框架中的API,因调用私有API而在审核中遭到拒绝的现象并不少见,近日,苹果便下架了包括《爸爸去哪儿2》、《找你妹》在内的256款APP,原因是调用私有API,很明显,苹果明确不允许App使用这类API。

未公开的API(Non-publicAPI)虽然放在Frameworks框架中,但是却没有在苹果的官方文档中有使用说明、代码介绍等。按苹果的说法,未公开的API是还不够成熟,可能还会变动的API,等完全成型了后会变成公开的API,但是目前不对其提供承诺,就是系统版本升级后可能会失效。对于non-public API,苹果iOS审核指南第2.5条款,同样明确,如APP使用时,将会被拒绝(2.5 Apps that use non-public APIs will be reject)。

关于私有API的检查,采用自动化工具扫描来实现,实现原理如下:

① 获取未公开库:基于iOS的SDK,dump出全库,全库减去私有库和公开库后,得到未公开库(non-public API);

② 获取头文件方法和成员的列表:使用Otool等工具,对ipa的可执行文件进行反编译解析,获取头文件中方法和成员的列表;

③ 与未公开库、私有库进行匹配:将列表中的方法和成员,分别与私有库和未公开库进行匹配,如未有匹配成功项,则扫描通过,如有匹配成功项,则扫描不通过(给出告警和API名称)。

四、总结

1、实际上存储系统的检查是一套规范,遵循同系列理念,比如用户本地存储空间与苹果iCloud服务器存储的合理使用,节约空间;

2、Info.plist文件检查实际上是xml文件的键值检查,并且值检查关系是并列的。通过存储文件、plist用例的检查,基本避免了因该类原因被拒的情况;

3、私有API检查则通过自动化工具扫描来实现。

本文已获作者授权,转载自 “腾讯大讲堂”微信公众号。下期将会介绍“应用内容、提审资源检查方法”,精彩内容,不容错过!

 


【腾讯WeTest iOS预审工具】

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

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

iOS预审工具分四步进行预审服务

【一键扫描】只需提供ipa包、审核图片、审核视频、应用描述,即可在4小时内拿到一份完整的检测报告,定位问题的同时提供解决方案,助您成功通过审核。

【案例分享】集结iOS审核失败常见原因,丰富案例为您提供参考依据。

【专家服务】腾讯专家团队为您分析各种疑难杂症,提出最优解决方案。

【ASO优化】专业优化AppStore内关键字搜索结果,让产品离用户更近一步。希望App/手游在预审验收保证下,都可以快快乐乐过审,开开心心赚钱。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/17137.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Centos7快速安装Kibana并连接ES使用

Elasticsearch 提供了一个名为 Kibana 的官方可视化界面。Kibana 是一个开源的数据可视化和管理工具,用于 Elasticsearch。它提供了丰富的功能,如仪表板、图表、地图等,帮助您更好地理解、搜索和可视化存储在 Elasticsearch 中的数据。 在 C…

【软考备战·希赛网每日一练】2023年5月5日

文章目录 一、今日成绩二、错题总结第一题 三、知识查缺 题目及解析来源:2023年05月05日软件设计师每日一练 一、今日成绩 二、错题总结 第一题 解析: 有返回消息的就是同步消息;不需要等待返回消息就可以去做其他事情的请求消息就是异步消息…

从零基础到网络安全专家:全网最全的网络安全学习路线

前言 网络安全知识体系非常广泛,涉及的领域也非常复杂,有时候即使有想法和热情,也不知道从何入手。 为了帮助那些想要进入网络安全行业的小伙伴们更快、更系统地学习网络安全知识,我制定了这份学习路线。本路线覆盖了网络安全的…

网络协议与攻击模拟-03-ARP协议

ARP 协议(地址解析协议) 一、 ARP 协议 将一个已知的 IP 地址解析为 MAC 地址,从而进行二层数据交互 是一个三层的协议,但是工作在二层,是一个2.5层协议 二、工作流程 1、两个阶段 ARP 请求 ARP 相应 2、 ARP 协议…

Java 基础入门篇(三)—— 数组的定义与内存分配

文章目录 一、数组的定义1.1 静态初始化数组1.2 动态初始化数组1.3 数组的访问 二、数组的遍历三、数组的内存图 ★3.1 Java 的内存分配3.2 数组的内存图3.3 两个数组变量指向同一个数组对象 四、数组使用的常见问题补充:随机数 Random 类 一、数组的定义 数组就是…

黑盒测试过程中【测试方法】详解2-正交实验

在黑盒测试过程中,有9种常用的方法:1.等价类划分 2.边界值分析 3.判定表法 4.正交实验法 5.流程图分析 6.因果图法 7.输入域覆盖法 8.输出域覆盖法 9.猜错法 前面我们已经讲解过了等价类划分、边界值、判定表。 可以参考我之前的文章&#xff…

MySQL 常用命令

#--------------------------- #----cmd命令行连接MySql--------- cd C:\Program Files\MySQL\MySQL Server 5.5\bin # 启动mysql服务器 net start mysql # 关闭mysql服务器 net stop mysql # 进入mysql命令行 mysql -h localhost -u root -p 或mysql -u root -p #---------…

SPSS如何进行回归分析之案例实训?

文章目录 0.引言1.线性回归分析2.曲线回归分析3.非线性回归分析4.Logistic回归分析5.有序回归分析6.概率回归分析7.加权回归分析 0.引言 因科研等多场景需要进行数据统计分析,笔者对SPSS进行了学习,本文通过《SPSS统计分析从入门到精通》及其配套素材结合…

璞华助力“数字人社”,为成都市人社数字化建设提供多方位的产品与技术支持!

新的时期,人力资源和社会保障事业进入新一轮的制度创新和加快发展阶段。把对各项人力资源和社会保障业务的支持和服务纳入信息化建设,通过 “数字人社”信息化建设项目,是充分利用新一代信息技术,有效整合各类信息资源&#xff0c…

为什么说网络安全行业是IT行业最后的红利?

前言 2023年网络安全行业的前景看起来非常乐观。根据当前的趋势和发展,一些趋势和发展可能对2023年网络安全行业产生影响: 5G技术的广泛应用:5G技术的普及将会使互联网的速度更快,同时也将带来更多的网络威胁和安全挑战。网络安全…

石头科技2022年营收实现双位数增长,以技术实力打响创新价值战

近日,石头科技披露了2022年度财务报告,报告显示,在在较大内外部压力下,石头科技2022年营收依然实现双位数增长,且境内外销售收入平稳增长。 该公司在近年来不断完善其产品矩阵,目前已推出手持无线吸尘、商…

想回西安

五一假期结束了,开始营业总结下跟读者们的交流。 特别感谢大家让我在自己的技术号里面写一些和生活相关的事情,现在正常营业,回复下读者的问题。 问题 发哥,我现在有个疑惑能麻烦帮我解答下嘛。 我已经工作一年多了,但…

Java基础(二十一):集合源码

Java基础系列文章 Java基础(一):语言概述 Java基础(二):原码、反码、补码及进制之间的运算 Java基础(三):数据类型与进制 Java基础(四):逻辑运算符和位运算符 Java基础(五):流程控制语句 Java基础(六)&#xff1…

第十九章 观察者模式

文章目录 前言普通方式解决问题CurrentConditions 显示当前天气情况WeatherData 管理第三方Clint 测试 一、观察者模式(Observer)原理完整代码SubjectObserverWeatherData implements SubjectCurrentConditions implements ObserverBaiduSite implements ObserverClint 前言 普…

python人工智能【隔空手势控制鼠标】“解放双手“

大家好,我是csdn的博主:lqj_本人 这是我的个人博客主页: lqj_本人的博客_CSDN博客-微信小程序,前端,python领域博主lqj_本人擅长微信小程序,前端,python,等方面的知识https://blog.csdn.net/lbcyllqj?spm1011.2415.3001.5343哔哩哔哩欢迎关注…

SSL证书支持IP改成https地址

我们都知道SSL证书能为域名加密,那么IP地址可以实现https加密吗?答案当然是肯定的。为IP地址进行https加密不仅能保护IP服务器与客户端之间数据传输安全,还能对IP服务器进行身份验证,确保用户信息安全,增强用户对IP地址…

编译一个魔兽世界开源服务端Windows需要安装什么环境

编译一个魔兽世界开源服务端Windows需要安装什么环境 大家好我是艾西,去年十月份左右wy和bx发布了在停服的公告。当时不少小伙伴都在担心如果停服了怎么办,魔兽这游戏伴随着我们渡过了太多的时光。但已经发生的事情我们只能顺其自然的等待GF的消息就好了…

平均情况时间复杂度

// n表示数组array的长度 int find(int[] array, int n, int x) {int i 0;int pos -1;for (; i < n; i) {if (array[i] x){ pos i; break;}}return pos; } 通过以上代码&#xff0c;我们分析一下平均情况时间复杂度。 以上代码要查找的变量 x 在数组中的位置&#xff…

2023哪款蓝牙耳机性价比高?200左右高性价比蓝牙耳机推荐

现如今的蓝牙耳机越来越多&#xff0c;人们在选择时不免纠结&#xff0c;不知道选什么蓝牙耳机比较好&#xff1f;针对这个问题&#xff0c;我来给大家推荐几款性价比高的蓝牙耳机&#xff0c;一起来看看吧。 一、南卡小音舱Lite2蓝牙耳机 参考价&#xff1a;299 蓝牙版本&am…

【文件描述符|重定向|缓冲区】

1 C语言文件操作的回顾 这块博主在讲解C语言时就已经做了很详细的讲解&#xff0c;这里就不详细讲了&#xff0c;直接给出代码。 写操作&#xff1a; #include<stdio.h> #include<stdlib.h> #include<errno.h> #define LOG "log.txt" …