【客户端检查篇】告别被拒,提升iOS审核通过率(二)

作者:互娱iOS预审团队,隶属于互娱研发部品质管理中心,致力于互娱产品的iOS审核前的验收工作。

通过细分将iOS预审工作划为3大块:客户端资源检查、应用内容检查和提审资源检查,接下来我们先从客户端检查开始介绍。

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

1存储系统检查

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

验收思路

1、只有用户生成的文档等数据才能放在<Application_Home>/Documents路径下,这些数据文件将会自动的通过iCloud备份。2、可以重新下载或者重新创建的数据应当保存在<Application_Home>/Library/Caches 目录内。你可以把数据库缓存文件或者可下载的内容如杂志、报纸、地图应用的数据等放入缓存目录里(Caches directory)3、临时需要的数据应该保存在<Application_Home>/tmp 目录内。尽管这些文件不会备份到iCloud里,但是要在不再需要它们时立即删除掉这些文件,避免浪费存储空间4、共享的文件必须放在<Application_Home>/Documents路径下

审核依据

iOS Data Storage Guidelines

【经典案例】

【案例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支持打开的文档类型,服务声明等等。关于此部分的检查,我们通常关注如下方面的内容:

验收思路

1、 UIBackgroundModes键:这是一个声明后台服务的键,声明的后台功能必须实现。可设置的值有audio、location、voip、fetch、remote-notification、bluetooth-centra、等;2、 UIDeviceFamily键:这是一个支持设备类型的键,需在iPhone、iPod上运行时需设置1,iPad需要设置2;3、 UIRequiredDeviceCapabilities键:声明的属性必须实现。可设置的值有telephony、wifi、accelerometer、sms、still-camera等;4、 UIFileSharingEnabled键:声明文件共享,如存在且设置为true,则必须实现可通过iTunes文件共享功能。

审核依据

Information Property List Key Reference

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

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

3网络连接(VPN)

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

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

4Icon检查

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

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

【案例5】《项目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的检查,采用自动化工具扫描来实现,实现原理如下:

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

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

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

总结

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

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

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

原文发布于微信公众号 - 腾讯大讲堂(TX_DJT)

原文发表时间:2015-11-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏魏琼东

基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET平台开发指南 - 分布式应用

分布式系统         分布式系统(distributed system)是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透...

193100
来自专栏安恒网络空间安全讲武堂

WIFI干扰器制作

WIFI干扰器制作 ? emmmm 不能瞎玩啊 被隔壁邻居举报了我不负责的 Esp8266的工作原理 Esp8266的工作原理,知乎有位大佬的回答: 解析一键配...

4.1K90
来自专栏phodal

\b深入浅出全栈工程师: 提高效率的工具

节选自《Growth: 深入浅出全栈工程师》 在提交效率的N种方法里:有一个很重要的方法是使用快捷键。熟练掌握快捷键可以让我们随着自己的感觉编写程序——有时候如...

20660
来自专栏杨建荣的学习笔记

datapump跨平台升级迁移的对比测试和优化 (r8笔记第81天)

目前计划对跨平台的数据库环境进行迁移,一来降低运维成本,二来更加可控。其实对于很多机器来说,如果机器跑了很多年,一直没有重启过,那么时间长了,一 个直...

375110
来自专栏互联网杂技

在网页里点击链接,直接打开app的方法

通俗点说,就是url地址栏; 输入 http:…. 打开的是网页; 输入 qqdl:…… 如果你安装了腾讯的旋风下载工具,系统会自动启动旋风下载; 输入 thu...

78570
来自专栏即时通讯技术

知乎技术分享:从单机到2000万QPS并发的Redis高性能缓存实践之路

知乎存储平台团队基于开源Redis 组件打造的知乎 Redis 平台,经过不断的研发迭代,目前已经形成了一整套完整自动化运维服务体系,提供很多强大的功能。本文作...

69920
来自专栏bboysoul

种子下载工具cloud-torrent搭建和使用

最近在下几个种子,原本是放在电脑上下载的,但是你知道的,我的电脑不可能24小时在线的,而且作为一个有强迫症的人,你能忍受你玩电脑的时候后台总有一个下载工具在运行...

88730
来自专栏Golang语言社区

用Go语言写一个Windows的外挂(上)

本人在一家互联网金融公司上班,对于一家互联网金融公司,最基本的功能就是客户入金和出金,而出金的稳定性是很重要的,出金不畅容易导致投资人恐慌,本文讲的是出金,出金...

88120
来自专栏技术沉淀

Mac必备软件

原文见Mac必备软件 - yongle 。Mac上有很多优秀的软件,可以极大地提升效率和工作体验。

1.9K40
来自专栏我和未来有约会

Silverlight 2.0细节

平台/浏览器/设备: --支持Linux(将由Novell提供) --支持FireFox --支持移动设备 兼容性: --Silverlight 2...

20290

扫码关注云+社区

领取腾讯云代金券