IOS个人开发常用技术收集账号

那些年提交AppStore审核踩过无数的坑

2017-01-19  本文已影响1791人  晨风说产品

做iOS开发近5年了,提交过的项目大大小小也有十几二十个了,每次提交版本到App Store审核时都要小心翼翼,如履薄冰,甚至还要祈求乔老大显灵顺利通过。但意外总是难免的,一不小心就会掉进坑里。

苹果的官方文档(AppStore审核条款)相信做iOS开发的都应该看过这里就不罗列了,大家有不知道的就去度娘或者翻墙谷歌。在大部分的App中其实如果大家不做一些很黄很暴力,和现实赌博相关的应用或游戏的话都能够顺利通过审核的。今天我主要想以自身的亲身经历跟大家回顾一下这些年我提交AppStore审核时踩过的坑,并且针对如何避免给出一些tips供大家参考。

遇到过的各种坑

1、与苹果利益冲突

这条应该是最严重的,任何事情触犯了自己本身的利益都是会抗拒的。除了是商城或者购买实物的App,一些需要购买虚拟道具的都要使用苹果的内购,不能使用其他的支付平台。但现在有些App会在审核的时候屏蔽其他支付方式,一旦通过后将开放其他的支付平台。

做成与App Store一样的应用下载功能,可能大家会发现之前的很多限免App现在已经销声匿迹了,这是因为与苹果的应用商场一样,与苹果利益抵触了,所以苹果一刀封杀,把所有App全部干掉。

所以很多App在开发前要考虑好做出来的功能是否与苹果利益有冲突,不然到最后却徒劳无功。

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” ,否则会审核不过。

3、未提供测试账号和建立自己的账户体系

如果你的App有部分功能需要登录才能使用,那么你需要在提交审核时,勾选演示账户,并提供对应信息账号名和密码。

现在很多App都喜欢使用微博、微信和QQ来授权登录到自己的App,但苹果现在的政策修改,需要有自己的一套账号系统才可以审核通过,不然将会被拒。还有一些App为了更方便快捷,都采用手机号+验证码的方式来登录,这样的话就没有办法给苹果提供演示账户了,除非账户系统后台做修改提供支持。这种情况,就不需要勾选演示账户了,但是要在备注信息里跟苹果好好解释一下,说我们也是为了提升用户体验的,所以对账户系统做了改进,用户有手机就能登录,不需要注册的。

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

这个在做一些资讯或者UGC的App需要注意,还有一些可以评论的功能,最好对内容进行审核或者过滤。可能现在苹果审核那边招了一些华人来审核,现在一些中文的不文明字眼,他们一旦看到了也是会直接拒绝的。这个也是要在运营的时候多加注意,因为审核通过后被用户使用,而用户乱发东西被天朝盯上了也不是一件好事。

内容标题等文字不能包含有Android的字眼,因为这是竞争关系,所以肯定不可以出现的。

UGC的话还要加上举报功能,这样才能顺利通过。

5、权限隐私开通说明

当iOS9之后我们有许多的权限开通都需要询问用户,不可以冒然打开,如果我们没有询问的话也是会被拒的。例如相机、相册和定位功能。

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

有时候我们会把截图做得很华丽甚至有点夸张,远远和现在的App界面有点不同,一旦苹果看到也是会直接拒绝。还有一点尤其重要不要在截图中出现Android的手机或者Android系统特有的界面。有一次就是因为截图上的状态栏是Android的样式而被拒绝了。

7、直接使用webview

直接使用webview做成一个App,这可能是能够最快速搭建一个App并且在后期不用发版可以直接修改内容的方法,但苹果明确表示这样的App是不可以的,建议直接做成html5的就可以了。但我们还是可以在App中添加一些原生的界面,这样就可以顺利审核通过了。

8、其他被拒理由

因被拒的理由实在是太多了,这样就不过多详细说明,我简单列明一下,大家可以在评论上补充不同的理由。

使用未公开的API被发现

不稳定,容易崩溃

侵犯版权未获得授权

App内有检测更新

诱惑用户到App Store评价

与手游相关的推荐下载

商城、活动奖励和奖品页面没说明与苹果无关

界面兼容性问题

使用了IDFA和广告SDK但没有在提交审核的时候勾选,或者在界面上没有看到相应的广告banner

App内容和勾选的应用等级不符

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

App的名字后面加上了较多无关的词语

如何避免这些坑?

我们说了这么多踩过的坑,或者差点踩过的坑,无非就是想在以后App开发中尽可能的避免。这里介绍本人的一些经验总结,供大家参考。

1、预防在先

对产品经理规划的功能,首先需要判断是否在技术上可以实现,或者说在不使用非公开API的前提下实现。因为很多时候,即使你通过函数名动态拼接等技术手段在提交审核时躲过API扫描。或者在审核时通过网络获取配置和使用热更新技术,但也难免被苹果从功能上发现或者被竞争对手举报。然后对交互设计和UI效果图需要有自己的判断,界面不能太丑,交互不能太复杂,不能使用跟系统太过雷同的Icon。

之后就是可以考虑即将开发的App的功能是否可行,在市面上有没有类似的产品成功上线了。

2、发版前过checklist

每个项目都需要沉淀发版前的checklist,把之前踩过的坑进行备忘,也可以通过网络资讯等手段了解最近时间被拒的一些主要原因,把可能跟自己APP相关的部分进行备注,然后在发版前逐条检查一遍。

3、预提交AppStore审核

预防措施做好了,发版前也过了checklist,但是有时候还是难免百密一疏有所遗漏,特别是新功能较多的版本。这里我要重点推荐的就是预提交AppStore审核。在项目开发基本完成的时候,我们可以提交一个版本到AppStore去审核,可以把版本号设置成比要发布的正式版本低,反正版本号后面的数字可以一直加上去,不占用产品经理定的版本号就行。并且需要把审核通过后是否释放该版本到AppStore也要设置成手动哦,不然设成自动把版本发出去就麻烦了。预提交审核有什么好处呢?

(1)帮助暴露潜在的问题

这个版本可能开发了一些新功能,然后有些地方可能没有考虑到审核相关的风险。如果等待项目都要结束正式发版时才暴露出来,那可能拖延正式发布的时间,一些运营或者推广将受到影响。

(2)可以试探苹果的规则

苹果审核条款其实很多时候是没有一个量化标准的,比如屏幕快照不能跟App具体使用时的截屏相差太远,拿到设计师给的屏幕快照时,我们有时候也没有办法确定到底是否真的符合苹果的规范,但是没有关系,我们先提交一个版本试一试就知道了;还有再比如前段时间,苹果要求6月1号以后提交的App都要支持IPV6-Only的网络。但是由于历史原因,项目中有些功能用的是第三方的SDK,他们没有办法在我们发版前提供新的支持IPV6的版本。这时候就可能遇到两难境地是换掉SDK或者砍掉功能,还是继续发布呢?其实我们就可以通过预发布的方式来试探一下是否可行。也有的在今年头必须要实行的使用https,但苹果却推迟了,所以如果我们提前提交版本也可以测试一下服务器是否可行。有时候也可能是因为一些小功能的问题而影响到不能通过审核,那这时候我们可以通过砍掉功能来通过。

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后放到网上供用户下载就行。所以在发布前大家多准备无妨。

上一篇下一篇

猜你喜欢

热点阅读