APP快速通过苹果AppStore审核九大诀窍
【IT168技术】对于移动应用开发者来说, 最令人沮丧的可能莫过于辛辛苦苦开发的应用, 没能通过苹果AppStore的审核,或者在应用更新时遭遇下架。苹果的AppStore的审核流程和标准, 一向不透明, 而且申诉起来也非常的麻烦。 VentureBeat的专栏作者, Xamarin 的创始人及CEO Nat Friedman根据Xamarin移动开发框架的22万开发者的经验, 给大家总结了App被苹果AppStore下架的9大原因。 编译供大家参考:
第一, 采用“Beta”或者其他可能让苹果认为你的应用还未开发完成的名称
由于Google的很多产品采用“Beta”来发布, IT业内也有一种把最终产品命名加上“Beta”的潮流。 而苹果对此非常严格。任何带有类似字眼的产品会被认为尚未完成。 我们就见到过不少如“Beta版”,“预览版”或者“Version 0.9”的产品没能通过AppStore审核
第二, 加载时间过长
所有的移动操作系统(iOS, Android甚至Windows),都对应用的最大加载时间又限制。 对iOS来说, 大约是15秒,如果你的应用在15秒内未能启动, 操作系统就会杀进程。
即便你的应用在这段时间内启动了,网络连接速度, 硬件等环境的不同, 也可能导致你的应用在审核期间加载时间过长。 因此, 不要仅仅依赖于iOS的模拟器,一定要在真实网络和真实硬件环境下进行测试, 而且最好保留一些旧版的手机以确保所有用户都能体验到相对较快的加载速度。
第三, 链接到第三方支付系统
苹果要求所有的数字内容都要在通过iTunes内置的应用内购买来完成。 包括一次性购买或者注册付费等方式。 如果你的应用提供其他的购买方式, 你的应用肯定会被下架。这也就是为什么Kindle的应用不让用户直接从应用购买新书的原因。
甚至对应用通过网页提供第三方支付链接也不行。 Dropbox的应用被苹果拒绝就是一个例子。 Dropbox的应用在登录界面提供了一个购买更多存储空间的链接而未能通过苹果的审核。这不仅仅对Dropbox的App有影响, 甚至对所有采用Dropbox API的应用都有影响。
因此,一定要好好检查一下你的应用开发流程, 确保所有的数字内容的购买都是通过用户的iTunes账户完成的。 注意, 苹果只对数字内容才做出此限制,这也就是为什么一些旅游应用能够通过App预订酒店和机票的原因。
第四, 不要提对其他平台的支持
不光是苹果。没有那个市场愿意你提到竞争对手名字的。 因此, 如果你的应用已经在Android上或者Windows上跑了, 在你自己的网站上说吧, 不要在App的描述里提。
第五, 本地化的一些问题
你的App用户可能来自世界各地, 即便你不提供多语言版本, 在应用内购买的时候把日元符号写成欧元也表明你是一个不成熟的开发者。
因此,要利用类似 asNSNumberFormatter或Invariant Culture这样的组件以及模拟器来测试在不同地区下的用户体验, 确保如日期之类的格式符合用户本地的格式要求。
我们曾经见过一个欧洲的应用开发商的应用,因为没有正确处理负的经纬度而被苹果AppStore拒绝(注:苹果总部的经度是 -122.03)。 因此, 一定要好好检查你的应用在地图上任何经纬度都能跑。 特别要注意经过本初子午线的正负经度变化以及经过赤道正负纬度变化。
第六, 对存储和文件系统的不正确使用
在iOS5.1推出后, 苹果曾经下架了一款应用的升级因为开发者把一个2MB大小的数据库从应用备份到了文件系统,违反了iCloud关于只备份用户产生内容的规定。
对任何静态的或者应用自带的或者很容易从远程服务器下载的所谓“可再生的数据”都不需要备份。 对于非用户数据, 可以选择缓存位置或者选择“不需要备份”属性。
第七, 在用户拒绝权限请求时崩溃
在iOS6, 用户对试图访问地址本, 照片集, 地理位置, 日历, 提醒, 蓝牙, Twitter和Facebook账户的应用, 必须提升权限申请。 如果用户拒绝应用的权限申请, 苹果要求App依然能够继续工作。
这一点在审核时会自动测试,如果不能正常工作, 则会被自动拒绝。 因此, 一定要仔细测试应用使用数据时的所有的“允许”“拒绝”组合, 同时也包括用户开始允许权限后来又拒绝的情况。
第八, 对图标和按钮的不正确使用
很多iOS App被拒绝不是因为性能或者功能的原因, 仅仅就是因为一些小的UI方面的问题。开发者要确保应用在采用内置的苹果的图标和按钮时在外观和功能上一致性。 可以采用UIButtonBarSystemItem来进行测试。另外, 要熟悉苹果的“人机交互指南”
比如说,除了创建新内容, 你不能用苹果的“Compose” 图标代表任何其他的用途。苹果的工程师希望App的行为尽量可预测。 因此对内置图标和按钮的使用方面格外严格。
第九, 商标和Logo的错误使用
在你的应用的图像上,不要使用他人的商标或者苹果图标。 也不要使用带有iPhone图样的图标。 我们见过在关键字中含有商标被拒绝的例子。
另一方面,你的应用还需要在内置地图中明确属性信息(比如Google地图或者诺基亚的地图)等, 否则也会被拒绝。
当然, 如果你的应用被拒绝了或者下架了, 也不要着急, 找出问题来再次提交就是了。 此外, 苹果还提供一种紧急审核的机制, 用来进行重要Bug或者安全问题的修复。 不过, 开发者如果过度使用紧急审核机制, 可能会在今后被禁止使用。
当然最好还是争取一次就通过审核。 所以,最根本的当然是, 开发者仔细阅读苹果的《提交指南》并且提供高质量的应用。
最后,我们再补充一条:注意规避“黄色”图片。
APP快速通过苹果AppStore审核九大诀窍的更多相关文章
- 上线---苹果AppStore审核注意事项,Guideline 1.2 - Safety - User Generated Content,2.1等条例(苹果审核六次拒绝)
前段时间上线app,和战友一起撸了那么久的代码,上线是最激动的.然而安卓各大平台上线了半个月了,苹果却给了六次拒绝. 刚开始等苹果等的焦头烂额,现在内心毫无波澜,目前还在审核中...... 六次的拒绝 ...
- 【详解】苹果AppStore审核被拒,原因终逃不过这些!
近日,相信很多开发者都留意到了: 苹果针对应用标题的审核确有明显的变严趋势!我们在<惊!苹果再次加强审核力度,众App纷纷止步应用标题>中也对该现象进行了详细的分析,并给出了相应的解决方案 ...
- 苹果应用商店AppStore审核规则指南
http://www.zesmob.com/blog/40161.html 新应用上架苹果AppStore或重大版本更新时,往往会被拒多次,造成审核不通过的原因,主要是因为对苹果应用商店AppStor ...
- App提交Appstore审核流程
原文: https://www.douban.com/note/461351420/ 这是一个app提交到iTunces Connect被拒了4次摸索出来的经验,说多了都是泪,先让我擦擦...好了,话 ...
- App提交Appstore审核流程【转】
这是一个app提交到iTunces Connect被拒了4次摸索出来的经验,说多了都是泪,先让我擦擦...好了,话不多说,为了让中国的app不再那么容易被拒,或者被拒了不知道该咋办,我把我的小经验在这 ...
- APP被苹果APPStore拒绝的各种原因
APP被苹果APPStore拒绝的各种原因 1.程序有重大bug,程序不能启动,或者中途退出.2.绕过苹果的付费渠道,我们之前游戏里的用兑换码兑换金币.3.游戏里有实物奖励的话,一定要说清楚,奖励由本 ...
- APP被苹果APPStore拒绝的各种原因 分类: ios相关 app相关 2015-06-25 17:27 200人阅读 评论(0) 收藏
APP被苹果APPStore拒绝的各种原因 1.程序有重大bug,程序不能启动,或者中途退出. 2.绕过苹果的付费渠道,我们之前游戏里的用兑换码兑换金币. 3.游戏里有实物奖励的话,一定要说清楚,奖励 ...
- SNF快速开发平台3.0之BS页面展示和九大优点-部分页面显示效果-Asp.net+MVC4.0+WebAPI+EasyUI+Knockout
一)经过多年的实践不断优化.精心维护.运行稳定.功能完善: 能经得起不同实施策略下客户的折腾,能满足各种情况下客户的复杂需求. 二)编码实现简单易懂.符合设计模式等理念: 上手快,见效快.方便维护,能 ...
- [苹果]苹果AppStore应用审核标准
[苹果]苹果AppStore应用审核标准 http://wenku.baidu.com/view/a9152d2c647d27284b7351a1.html 苹果app审核指南 http://we ...
随机推荐
- iframe和frame的区别
在同时有frame和Iframe的一个窗口里frame最大可以做个frameset的儿子,Iframe最大也只能做到frameset的孙子.frame的布局限于几种,Iframe想放哪里放哪里.fra ...
- 非阻塞式socket的select()用法
Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只 是习惯写诸如 connect.accept.recv或recvfrom这样的阻塞程 ...
- Hadoop学习笔记(7) ——高级编程
Hadoop学习笔记(7) ——高级编程 从前面的学习中,我们了解到了MapReduce整个过程需要经过以下几个步骤: 1.输入(input):将输入数据分成一个个split,并将split进一步拆成 ...
- 桶排序-Node.js
, , , , ]; var a = [], i; ; i < b.length; i++) { var num = b[i]; a[num] = a[num]||; a[num] ++; nu ...
- poj 1004 Financial Management
求平均数,记得之前在杭电oj上做过一个求平均数的题目,结果因为题目是英文的,我就懵逼了 #include <stdio.h> int main() { ; double num; int ...
- oracle不用tsname文件的时候着怎么办
oracle\product\10.2.0\client_2\odp.net\PublisherPolicy\Policy.9.2.Oracle.DataAccess.config 找到newVers ...
- iOS Framework lipo报错 lipo: can't map input file
fatal error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ ...
- Python之函数进阶
本节内容 上一篇中介绍了Python中函数的定义.函数的调用.函数的参数以及变量的作用域等内容,现在来说下函数的一些高级特性: 递归函数 嵌套函数与闭包 匿名函数 高阶函数 内置函数 总结 一.递归函 ...
- Castle IOC容器构建配置详解(一)
主要内容 1.配置什么 2.几种配置方式 3.Include 介绍 4.Properties介绍 5.条件状态 一.配置什么 Castle IOC中并不像Spring.net那样贯穿着一个思想就是一切 ...
- 文件字符读写函数fscanf()和 fgets() 比较
一. 文件格式化读入函数 fscanf() int fscanf(文件指针,格式化字符串,输入列表); 返回值: 整形,输入列表中定义字符串的个数. 1, 例如读取字符串: char str1[ ...