苹果的官文档(AppStore审核条款)相信做iOS开发之还应看了此处就不摆了。这样才无会见于iOS系统活动清理掉。

举行iOS开发近乎5年了,提交了的品类大大小小也发十几二十独了,每次交版本及App
Store审核时还如当心,如履薄冰,甚至还要祈求乔老大显灵顺利经过。但不料连续在所难免的,一不小心就见面掉进坑里。

此文刚刚达成了CocoaChina的首页:那些年提交AppStore审核踩了的坑 
欢迎围观,谢谢大家支持。

//add by 云峰小罗,2016.08.04

苹果的合法文档(AppStore审核条款)相信做iOS开发的且该看了此虽未列支了,大家来未晓得的哪怕错过度娘或者翻墙谷歌。在大部分底App中实际上若大家不举行有很受挫大暴力,和现实赌博有关的使或娱乐的语都能得手通过查处的。今天本身根本想以自身之亲身经历跟大家回想一下这些年自己提交AppStore审核时踩过的坑,并且对如何避免让来有tips供大家参考。

做iOS开发近乎5年了,每次交版本时不可谓无小心,如履薄冰,但是要不免踩到了有坑。苹果之官方文档(AppStore审核条款)这里就是不摆了,太长繁琐了,而且大部分凡一般app都无见面触碰的顶之,今天自我第一想为温馨的亲身经历,跟大家回顾一下这些年本身提交AppStore审核时踩过的坑,并且针对如何避免让闹有些tips供大家参考。大神请忽略,专家呼吁轻拍。

遇了之各种坑

1、未遵守苹果iOS APP数据存储指导方针。

1、与苹果利益冲突

当时漫长应该是最好惨重的,任何工作触犯了和睦自的便宜都是碰头抵制的。除了是超市或打东西的App,一些急需购置虚拟道具的都要利用苹果之内购,不可知以其他的付出平台。但现稍App会在核查的早晚屏蔽其他开销办法,一旦经过后以绽放其他的支出平台。

做成与App
Store一样的行使下充斥功能,可能大家会发现前的过多限免App现在早已不见踪影了,这是坐跟苹果之以市场一样,与苹果利益矛盾了,所以苹果一刀封杀,把拥有App全部结果。

故而重重App在出前使考虑好做下的效能是否与苹果利益产生冲突,不然到最终也徒劳无功无功。

假若你的App有离线数据下充斥功能,尤其要关爱当下一点。因为离线数据貌似占存储空间比较特别,可以被再下载和重建,但是用户往往想系统存储空间紧时为仍然能妥妥的在在,不见面给IOS系统自动清理掉。所以无克放在/Library/Caches
目录下(该目录在网空间紧张时或许会见让iOS系统清除)。 那就算只能放在主目录/Documents
 或
主目录/Library/自定义文件夹下,这样才免会见受iOS系统活动清理掉。但是这些数量也许会见死死,如果放在
主目录/Documents  或
主目录/Library/自定义的文本夹下,会为iCoud自动同步,那么用户需要以共同消耗很多流量,苹果可能会见用驳回你的行使上架。所以用在次中受于定义之目设置“do
not backup”属性。

2、未遵守苹果iOS App数据存储指导方针

倘您的App有离线数据下充斥功能,尤其要关注当下一点。因为离线数据一般占存储空间比较大,可以让再度下载和重建,但是用户往往愿意系统存储空间紧时也依旧会妥妥的有着,不会见为IOS系统活动清理掉。所以无克放在/Library/Caches
目录下(该目录在系统空间不足时或许会见受iOS系统活动清除)。
那就不得不放在主目录/Documents  或
主目录/Library/自定义文件夹下,这样才免会见为iOS系统自动清理掉。但是这些多少或许会见异常充分,如果身处
主目录/Documents  或
主目录/Library/自定义之文件夹下,会被iCoud自动同步,那么用户需为一道消耗过多流量,苹果或许会见为此拒绝你的应用上架。所以待以先后中吃从定义的目录设置“do
not backup”属性。

有关数据存储需要小心的触发,总结在脚:

要数据

情节:用户创建的数据文件,无法在剔除后自行还创设

路径:主目录/Documents

管理:iOS系统就是经常遇到存储空间欠缺之情况下,也无见面消除,同时会备份到iTunes或iCloud中

缓存数据

内容:可用于离线环境,可让再度下载重复生成,即使在距线时缺少失,应用本身吗可以正常运转

路径:主目录/Library/Caches

管制:在存储空间不足的状态下,会清空,
并且不会见受活动备份到iTunes和iCloud中

现数据

情:应用运行时,为完成有内部操作临时变卦的公文

路径:主目录/tmp

管制:随时可能受iOS系统清除,且无见面活动备份到iTunes和iCloud,尽量以文书不再采取时,应用自己清空,避免对用户设备空间的荒废

离线数据

内容:与缓存数据类似,可以给另行下载和重建,但是用户往往想这些数据就在蕴藏紧张时为无见面受网活动删除

目录:主目录/Documents  或 主目录/Library/自定义之文书夹

治本:与主要数据类,即使在囤空间欠缺之景象下吧无见面给扫除,应用自己该破除已经不复采取的公文,以免浪费用户设备空间
。需要设置”不备份到iCoud” ,否则会审查可。

有关数据存储需要专注的触发,总结在脚:

要害数据

内容:用户创建的数据文件,无法在剔除后自行重新创设

路径:主目录/Documents

管理:iOS系统即经常遇上存储空间欠缺的情景下,也无见面消除,同时会备份到iTunes或iCloud中

缓存数据

情:可用以离线环境,可吃重新下载重复生成,即使以距离线时不够失,应用本身也足以正常运转

路径:主目录/Library/Caches

管住:在仓储空间不足之情事下,会清空,
并且不会见吃自动备份到iTunes和iCloud中

现数据

情:应用运行时,为好有内部操作临时变更的文件

路径:主目录/tmp

管制:随时可能为iOS系统清除,且无会见活动备份到iTunes和iCloud,尽量在文件不再动用时,应用自己清空,避免对用户设备空间的浪费

离线数据

内容:与缓存数据类似,可以叫还下载和重建,但是用户往往想这些数据就是在存储紧张时也未会见为网自动删除

目:主目录/Documents  或 主目录/Library/自定义之文本夹

管理:与根本数据类,即使以储存空间欠缺的状态下吧无见面让扫除,应用自己相应排除已经不再动用的文件,以免浪费用户设备空间
。需要设置”不备份到iCoud” ,否则会按可。

3、未供测试账号及树立好的账户体系

假若你的App有有机能要登录才能够用,那么你要以交付对时,勾选演示账户,并提供相应信息账号名和密码。

今昔广大App都好用微博、微信和QQ来授权登录到温馨的App,但苹果本之方针修改,需要出协调的如出一辙效账号体系才得以查处通过,不然将会让拒。还有一对App为了重新方便快捷,都采取手机号+验证码的措施来报到,这样的话就从不办法吃苹果提供示范账户了,除非账户体系后台做修改提供支撑。这种景象,就未待勾选演示账户了,但是只要在备考信息里与苹果可以解释一下,说咱们为是为着提升用户体验的,所以对账户体系做了改良,用户发生手机便能够登录,不需登记之。

2、未提供测试账号

4、内容污秽、含有不文明语言,攻击性言语

是于召开一些资讯或者UGC的App需要小心,还有部分足评的功能,最好对情节开展复核或过滤。可能现在苹果对那边招了有的中国人来查处,现在片国语的无文明字眼,他们若看到了为是会见直接拒绝的。这个吧是要于营业的下差不多加小心,因为审查通过后叫用户采取,而用户乱作东西被上为盯上了啊非是一样件善事。

情节标题等字不可知包含有Android的单词,因为马上是竞争关系,所以自然不可以出现的。

UGC的口舌还要长举报作用,这样才会顺畅经过。

假定您的App有一部分机能要报到才能够以,那么你得重交付对时,勾选演示账户,并提供相应信息,如下图:

5、权限隐私开通说明

当iOS9之后我们出那么些之权杖开通都亟待了解用户,不可以冒然打开,如果我们没了解的话语也是会给驳回的。例如相机、相册和定位功能。

测试账号填写

6、上传的屏幕快照跟App具体以截屏相差太远

偶我们会将截图做得死去活来华丽甚至略夸张,远远和今天底App界面有点不同,一旦苹果看到吗是会见直接拒绝。还有一些越来越要不设于截图中起Android的手机还是Android系统特有的界面。有一致软就是是为截图上的状态栏是Android的样式而给驳回了。

现游人如织app为了还方便快捷,防止用户忘记密码,都使手机号+验证码的道,这样的话就从未主意让苹果提供示范账户了,除非账户体系后台做修改提供支撑。这种景象,就不需要勾选演示账户了,但是要是于备注信息里及苹果好解释一下,说我们呢是以提升用户体验的,所以本着账户体系召开了改良,用户产生部手机就是能登录,不欲注册什么的,如下图。如果您吗也未说的语,那就算乖乖等正为拒吧。

7、直接采用webview

一直动用webview做成一个App,这或许是会尽便捷增加建筑一个App并且于晚不用发版可以直接修改内容的方法,但苹果显然表示这样的App是休可以的,建议直接做成html5的就得了。但我们或可以在App中上加有原生的界面,这样便可以万事大吉查处通过了。

测试账号说明

8、其他给拒理由

因为受拒绝的理实在是无与伦比多矣,这样尽管可大多详细说明,我简单列清楚转,大家可以当评价上添不同的说辞。

动未明的API被察觉

莫安定,容易崩溃

犯版权未沾授权

App内发出检测更新

引发用户到App Store评价

与手游相关的引荐下载

百货公司、活动奖励和奖页面没说明与苹果无关

界面兼容性问题

运了IDFA和广告SDK但没有于交审查的时候勾选,或者以界面及没有看到相应的广告banner

App内容及勾选的动等不符

App描述和App无关或者功能不符

App的名字后长了比多无关的辞藻

3、跟相关硬件配合使用的app,未供示范视频。

哪避免这些坑?

咱们说了如此多踩了之坑,或者差点踩过的坑,无非就是想当随后App开发中尽量的避免。这里介绍我的有经验总结,供大家参考。

此指的硬件是不欲MFi认证的,通过BLE(低功耗蓝牙)或者WiFi连接的硬件。直接以备考里提供相关力量的以身作则视频即可,如下图。

1、预防在先

针对产品经理规划之效应,首先需要判定是否在技术上可以兑现,或者说于非应用非公开API的前提下实现。因为众多上,即使你通过函数叫动态拼接等技术手段在付给审查时躲了API扫描。或者在审批时经过网获取配置与动用热更新技术,但也难免给苹果打成效上发现或吃竞争对手举报。然后对相互设计与UI效果图需要发出投机的论断,界面不能够尽可恨,交互不克太复杂,不克用和系统最过同样的Icon。

下虽得考虑将开发的App的效应是否有效,在市面上发生没发生类似的制品成功达成丝了。

硬件连接演示视频

2、发版前过checklist

每个品种都亟需沉淀发版前的checklist,把前踩过之坑进行备忘,也可经过网消息等招数了解最近日为拒的组成部分第一原因,把可能和自己APP相关的有些开展备注,然后于发版前逐条检查一通。

演示视频需要拿整的连续过程操作以及连接硬件之后和硬件相关的法力演示都蕴涵在内。从截图可以看来自身之“裤宝”演示视频我是直接在优酷上了。所以并无像传闻被那样,需要翻墙放到YouTube上,直接放大优酷土豆或者百度网盘都执行。也无欲用英文,用中文即可。

3、预提交AppStore审核

预防措施做好了,发版前也过了checklist,但是有时还是不免百密一疏有所遗漏,特别是初成效于多之版。这里自己只要要推介的就是是预提交AppStore审核。在列开支基本形成的当儿,我们可交一个版及AppStore去审批,可以把版本号设置成于要发布之科班版本低,反正版本号后面的数字可以直接增长去,不占用产品通过理定的版本号就尽。并且要将查处通过后是否释放该版及AppStore也要安装成手动哦,不然设成自动把本本发出去就麻烦了。预提交审核有什么好处也?

(1)帮助暴露秘密的题目

其一版本可能付出了有的初效能,然后稍地方可能无设想到审查相关的高风险。如果等待项目都如结正式发版时才爆出出来,那可能拖延正式颁布之年月,一些营业或推广以丁震慑。

(2)可以试苹果的条条框框

苹果对条款其实过多时刻是从未有过一个量化标准的,比如屏幕快照不克跟App具体使用时的截屏相差太远,拿到设计师为的屏幕快照时,我们有时为尚无辙确定到底是否真的适合苹果的正规化,但是从未涉及,我们先行交由一个本子尝试一跃跃欲试就明白了;还有复依前段时间,苹果要求6月1如泣如诉以后提交的App都如支持IPV6-Only之网。但是出于历史由来,项目遭到微微效果因此的凡第三正在的SDK,他们从未主意于咱们发版前提供新的支持IPV6的本子。这时候就可能碰到尴尬境地是换掉SDK或者砍掉功能,还是持续发表为?其实我们即便可由此预发布的计来试一下是否有效。也有的在今年头要使执行的运用https,但苹果可推迟了,所以一旦我们提前提交版本也可测试一下服务器是否管用。有时候为恐怕是为有些略作用的题目要影响及无可知通过查处,那立上咱们好透过砍掉功能来经。

4、跟相关硬件配合使用的app,未供PPID.(Product Plan ID )

4、关于AppStore加急审核

假若经过前的鼎力,你还是于驳回了,或者App的昭示要遇见某个时间运营节点,但是由各种缘由造成预留给App审核的时空最好少了。这个时你需要用到苹果的急审核通道。

当今吗来部分人数专程负责加急审核,只待以某宝上查找的语虽足以搜到平等雅堆,但自我前为问问过一下价少则2、3宏观几近尽管5、6宏观随即对于普通的商店吧不是千篇一律笔小之钱,并且他们吧恐怕无做什么工作,只是认识了苹果的内部人员说几句。其实只要需要迫切的言语自己操作简简单就就足以就,但万一解明了,苹果可是说而付了紧急就于你急的,如果大家都这么去开那么不是还跟凡一样,并且也发出限制次数的,网络传闻是平年2糟糕,但实则情形或者也是准你账号里之App数量以及下载量来支配的。而设如何去加急也,这里虽大概说一下。

在iTunes
Connect根可以找到联系我们的tag点击它。然后选取以下的挑选项。

下一场点击Request Expedited Review就见面跨去新的页面,填写相关的音。

骨子里都是平看便亮填写的内容了。然后Explanation里面纵使填充您的说辞了,最好就算是遭遇花都写及这么好象征你的红心。这里的讲话给自己回忆了写了“再未按通过我们商家虽设关张了”这些话语,总之可以发多紧迫多严重就是描写多严重,保证非用1、2龙就好给苹果对了。

此还有的就是是如出部分崩溃问题是必现的,修复提交版本后也足以在此地加急,填好必现的步调,只要苹果会复出那必然会让你紧通过之,因为她俩也未思发生题目的App影响用户体验的。

骨子里自从今年上半年始于,app审核时大大缩短了,通常2、3龙好过审了,所以一般的话都非需为此到这个职能了。

总归iOS发布版不像Android那样有那基本上市场可以选,还好无用市场好打包apk后置放网上供用户下载就实行。所以在发表前大家基本上备无妨。

假定您的App是急需以及通过MFi认证的硬件进行交互,即采取了EA框架(ExternalAccessory.framework),配置了协和字符串(Supported
external accessory protocols),那么您用以备注信息里提供PPID。

ppid说明

诸多下,我们的App可以同时适配很多型号的硬件,每个型号的硬件对应之PPID不均等。如果AppStore提交审核通过后,又新增了一致缓慢型号硬件支撑怎么惩罚为?是否需要独自发一个版,把相应之PPID增加上去了?
答案是免需要,因为App支持之PPID列表信息是置身备注信息里的,往列表中新增PPID并不需要修改及二进制文件信息,苹果在这里呢正如人性化,可以于不提交新本子的情形下加PPID信息。

5、使用了后台定位服务,但是尚未实际说明原委

前使用后台定位功能的app都是特待在当Info.plist中安排 Required
background modes -App registers for location updates
即可.但是自从2016年之之一时段起苹果突然要求如App要利用一定功能,除了次里召开安排,还索要在界面上显式告诉用户若的后台定位是因此来波及啥的,否则你虽会接收类似下面的邮件。

1.1 – Apps using background location services must provide a reason
that clarifies the purpose of the use, using mechanisms described in
the Human Interface Guidelines.

使改也得以概括,根据你的app需要以info.plist中布局,NSLocationAlwaysUsageDescription或者NSLocationWhenInUseUsageDescription字段说明。如下图

定点目的说明

6、上传的屏幕快照跟App具体以截屏相差太远

AppStore提供的屏幕快照功能是为了用户在不生载时得以直观的垂询这App的意义、界面大概是哪的。所以苹果也同意开发者对屏幕截屏做片加工美化,并不一定要是土生土长截屏。但是此间出只限,就是勿能够离开太远,具体规则苹果没有于出量化标准。
 公司路中发出只要命版及丝了一个于异常的新职能,为了突出宣传这个功能,设计师就再次规划了同等学好Q版的效力演示截图。结果上传后受苹果告知,屏幕快照不符合App本身的效果。

上述这些是自身在AppStore审核时亲自踩了之有坑,当然还有很多坑,我及自身的团伙注意到了为此努力避免了,但是个人认为吧是格外需要留意的,我简单列在下面供大家参考。

以不公开的API被发现

动与系接近的图标

界面最丑 或者相太过复杂

勿平稳,容易崩溃

和用市场上别App太过一样

App内发出检测更新

出现第三方操作系统的名或者图标

测试不充分,某些App声明支持的操作系统版本有兼容性问题

tips

咱们说了这样多踩了之坑,或者差点踩过的坑,无非就是想以随后App开发中尽量的避免。这里介绍自己的片经验总结,供大家参考。

1、预防在先

针对产品经营规划之效果,首先用看清是否在技术上可以实现,或者说在未以非公开API的前提下促成。因为许多时刻,即使你通过函数称作动态拼接等技术手段在交付审查时隐藏了API扫描,但是也在所难免让苹果于效益及发现要给竞争对手举报。然后针对互相设计以及UI效果图需要有谈得来的判定,界面不克太烦人,交互不可知无限复杂,不能够使用及系统最过千篇一律的Icon。

2、发版前过checklist

每个项目都待沉淀发版前之checklist,把之前踩过的坑进行备忘,也得以经过网络情报等招数了解最近工夫为驳回的一些生死攸关由,把可能和自己APP相关的组成部分开展备注,然后以发版前逐条检查一全。

3、预提交AppStore审核

假如也戒了,发版前也过了checklist,但是有时还是不免百密一疏有所遗漏,特别是初效能比较多的本。这里自己若要推荐的饶是预提交AppStore审核。项目的版本都是有发版周期的,一般在发版前一模一样两全左右App版本基本平静,只是还用改部分bug并回归测试。这个时刻完全可以先交付一个本子及AppStore去查处,反正版本号是用非完的,只要非占用产品通过理定的版本号就实行。预提交审核有啊利益呢?

(1)可以辅助暴露秘密的题材。

本条本子可能出了有新力量,然后稍地方可能没有考虑到对有关的风险。如果等待项目还要收正式发版时才爆出出,就追悔莫及了。

(2)在迫不得已的场面下,可以试一下苹果之尽头。

苹果对条款其实过多下是尚未一个量化标准的,比如屏幕快照不克跟App具体应用时之截屏相差太远,拿到UI设计师为到屏幕快照时,我们偶尔为从未辙规定究竟是不是确实适合苹果之规范,但是尚未提到,我们先付给一个本尝试一试试就清楚了;还有复依前段时间,苹果要求6月1号后提交的App都要支持IPV6-Only之纱。但是由历史由来,项目遭到发出个效益因此的凡第三正在的SDK,他们没有主意于咱们发版前提供新的支持IPV6的本。然后我看网上也有人分享说苹果对之要求并无是那个严厉,只待在iOS9产要功能会支撑IPV6就推行了。当然作为项目主任,肯定吗不可知说一直把这个效果砍掉不要了,亦或轻信网友所称忽视风险。怎么收拾也?赶紧先事先提交一个版本尝试一下重开决定。结果是真可由此核查,所以最后版没有砍掉这功效,保证了产品的完整性上线了。

4、关于AppStore加急审核

一旦由此前的卖力,你还是给拒绝了,或者App的宣布要遇见某个时间运营节点,但是出于各种缘由造成预留给App审核的年月最少了。这个时节你需要用及苹果的急审核通道。

卿当百度里搜索iOS加急审核,你晤面发现产生好多声称可扶持你快查处的丁,24小时通过对,审核通过后会,不经过不要钱。如果您不明白苹果有合法的紧急审核功能,你就算老易让这些空白套白狼的人口所诈骗,而且收费还是5000RMB启动。那自己真正蛮怀念对你说,找我吧,给您友情价由5赔。

苹果的紧急审核如何行使啊?
在iTunesconnect页面,点击右侧上斗的“?”图标,在弹出菜单中选择“联系我们”,

联络我们

然后在Contact Us页面,选择“App Review” —> “App Store Review” —>”
Request Expedited Review”,

时不我待审核选项

说到底在表里填充有关信息,其中最要害的勾你用迫切审核的来由。一般是摹写如等到有重大节日运营节点,或者紧急修复某个严重的闪退问题,然后注明闪退现象复现的详尽步骤,就得了。

有关切实加急审核有无来次数限制,次数是跟App相关还是跟出账号相关,苹果并从未法定的说明。但是可以一定之是,网上传闻一样年就生少软急审核的火候是无科学的。不过为让好钢用在刀刃上,还是慎用这职能,以防到时真的产生得紧急审核时也得无交应。

于现年上半年始发,app审核时大大缩短了,一般都不需要用到之作用了。百度CarLife
最近几只版都是3上就透过审批了,尤其是新型的支撑EAP连接的版本V2.1.0,一个夜晚就算对通过了。

通货膨胀主席告诉我们“与天奋斗,其乐无穷!与地拼搏,其乐无穷!与食指奋斗,其乐无穷!”,但是作为iOS开发者,跟苹果奋斗,还是小心谨慎也好。最后领取一词,
如果你懂你的app存在有审核风险,但是透过了苹果对,那么毫不有侥幸心理,请尽早修改。因为毕竟苹果是人工核对,这个本过了说不定是按人员情绪好,并无意味下单本子审核时情绪也这么好。

事实上想想最近的广电总局手游审查新政,对AppStore的审核规则也就是没有底可以埋怨的了。