App上架流程 & 上架被拒10大原因
上架前预热
先登陆自己的开发者账号(自己提前注册好 iOS 开发者账号,这里假设你已经拥有了一个 iOS 开发者账号),进入这个页面:https://developer.apple.com/account/overview.action
由于我提交上架的是iOS Apps,因此进入最左边这一栏:
一开始,看着这几个“Certificates、Identifiers、Devices、Provisioning Profiles”,感觉没什么的,但是到实际用起来,特么的我就蒙圈了。下面解释一下这几个到底是什么鬼,揭开它们的庐山真面目。
- Certificates: 证书,常用的证书类型有4种:真机调试证书、推送调试证书,发布证书、推送生产证书。
- Identifiers: App ID,跟项目工程的 Bundle Identifier(就是下图红箭头指向的me.angelen.Ganker)匹配,如下图所示:
- 需要支持推送、Game Center 等功能的 App ID 不能包含通配符* (下图就是在新建App ID时,选择App ID的后缀)。
- Devices: iOS设备在真机调试、AdHoc发布时都需要包含设备的UDID才可以安装。
- Provisioning Profiles: 配置文件(描述文件),不同类型的开发者账号都包含 Development、AdHoc 这两种 Profile,不同的是个人、公司开发者账号有发布到 AppStore 的 Profile,而企业开发者账号则是 InHouse 企业内发布的 Profile。
看到我又乱了,不怕,慢慢来解释。
开始上架之路
1. 申请App ID
选中Identifiers的App IDs,点击右上角的“+”号填写相应信息来申请App ID。
注意:这个App ID Description的Name是用来描述你的App Id,这个随便填,没有什么限制,最好是项目名称,这样方便自己辨识(不允许中文喔)。
注意:App ID Suffix,这是你 App Id 的后缀,这个需要仔细。因为这个内容和你的程序直接相关,后面很多地方要用到,最好是com.yourcompany.yourappname的格式,我用的是项目中的 Bundle Identifier(反正这样是最保险的,上面有提到什么是 Bundle Identifier )。
注意:App Services,默认会选择2项,不能修改,只需要选择上自己需要的服务即可,不知道在哪里看到说是必须要选上推送,否则后面就没有办法修改了,但是我自己测试的是可以修改的。
如果不放心的程序员,可以选上喔,然后点击Continue。
确认没有错的话直接点击 Submit 后点击 Done 即完成 App ID 的创建,如下图所示:
2. 创建证书(Certificates)
2.1 创建证书请求文件
先创建一个证书请求文件。在 Mac 上的应用程序找到“钥匙串访问”,如下图这个图标:
打开后,选择 钥匙串访问–证书助理–从证书颁发机构请求证书,如下图所示:
填写好证书信息,保存该证书。
注意:用户邮件地址填写开发者的邮件,常用名称是证书中密钥的名字,CA 电子邮件地址不用填。
点击“继续”,选择存储该证书的位置,即可生成证书请求文件,如下图所示:
2.2 开始创建证书
证书有两大类,开发证书(Development,也称为调试证书)和发布证书(Production)。
常用的有以下几种:
① iOS App Development:真机调试证书。
② Apple Push Notification service SSL (Sandbox):推送调试证书,直接用 Xcode 调试到设备的 App 需要调试证书推送通知。
③ App Store and Ad Hoc:发布证书,App Store、In-House(之前是有这个的,不过我现在看不到,先不管)、Ad Hoc 发布方式都需要这个证书来签名。
④ Apple Push Notification service SSL (Sandbox & Production):推送正式证书,AppStore、In-House、AdHoc 都需要用正式推送证书推送通知。
注意:这几种证书的创建都是需要上传CSR文件(就是刚刚创建好的 CertificateSigningRequest.certSigningRequest文件)。
发布证书和开发者证书需要操作两次,分别创建,开发者证书用于真机调试,发布证书用于提交到 App Store。
比如先勾选 iOS App Development,点击 Continue,它会提示你需要一个 CSR 文件。
机智如我早就已经创建好了,就是那个上面说的 CertificateSigningRequest.certSigningRequest文件。
好,继续 Continue。
选择那个 CSR 文件,点击 Generate。
可以把他下载到 Mac 找个地方放着。
同样的,App Store and Ad Hoc 也是一样的方法来创建即可。
哎呀,还可以,知道我已经创建了 iOS App Development,给我变灰不可以点击了。
到了最后一步,跟创建 iOS App Development 差不多:
不过跟 iOS App Development 的证书的Name有点不同。一个是 iOS Development: Microlen Yan(我的),另一个是 iOS Distribution: Y..S.. Technology Co., Ltd.(公司的)。也下载到电脑以后,你 Mac 上有了以下这两个文件:
在开发者中心也可以看到:
这两个证书都是有效期1年。
双击这两个 cer 证书文件,就可以安装好了这两个证书。(如果安装不上,可以直接将证书文件拖拽到钥匙串访问的列表中)
安装完成之后应该是这样子的:
3. 创建配置文件(描述文件Provisioning Profile)
点击右上角的“+”号,分别创建开发用的 Provisioning Profile 和发布到 App Store 用的 Provisioning Profile:
以iOS App Development为例。
选择之前已经创建好的App ID,下一步:
选择证书,这个也是刚刚创建好的证书。继续下一步:
注意:开发的 Provisioning Profile 需要真机调试,所以这里要绑定一个或以上的真机,这里我是之前添加过真机了,所以可以直接勾选;如果没有的话,需要将真机的 UUID 复制出来在此添加(方法:使用手机 Safari 访问http://fir.im/udid )。还有就是,在发布的 Provisioning Profile 中,是没有这一步的,道理我们都懂!(不懂也不要问度娘)
好,勾选了之后,直接 Continue:
填写好了 Profile Name 之后,点击 Generate 生成:
下载下来吧,骚年!然后去创建发布用的 Provisioning Profile,步骤和以上的差不多。
在选择证书的时候有一点点不同:
同样完成以后,下载下来。现在就多了两个 Provisioning Profile:
双击就添加到 Xcode 中,这样在真机调试或者发布时,就可以分别有不同的 Provisioning Profile 与其对应。不过,其实可以不用下载保存,因为可以在Xcode那里下载的(具体操作下面有,我也是后来才听说的,原谅我没有好好读书)。
4. 项目配置(在 Xcode 进行)
在 Xcode 中,选择 Xcode–Preference 以下界面,选择 Accounts 选项卡:
选中那个 Admin 的,然后点击 View Details…
在这里可以下载你的 Provisioning Profile(Xcode做得还可以的是不是)。
配置以下项目 PROJECT 的 Provisioning Profile 属性:
然后用真机打包:Product–Archive(如果不是连真机,好像 Archive 这个菜单项是灰色不可以点击的)
为了保险起见、让苹果审核顺利一点,先点击“Validate…”来验证一下:
验证验证着就出现以下这个问题了:
看来是这个 iTunes Connect 的问题,那就先去 iTunes Connect 去注册一个该 app 的信息吧。
https://itunesconnect.apple.com/WebObjects/iTunesConnect.woa/ra/ng/
我试了好多次才进去的,apple 这个坑爹货。点击“我的 App”,新建一个 App 吧。
点击创建之后
填写完相应信息,点击“1.0 准备提交”。
把要填的信息包括:版本信息、App 综合信息、Game Center(我的暂时没有用到)、App 审核信息、额外信息,填写完毕之后存储一下(建议每填一下存储一下,iTunes Connect 经常网络搞飞机的)。
对了,还有一个“构建版本”,这个把代码打包成 ipa 文件而已。构建版本(下面有构建方法)完成之后,再来这个 iTunes Connect 里填写“构建版本”
构建版本的方法有两种,一种是使用 Xcode,另一种就是下载一个叫 Application Loader 这个软件:
- Xcode 构建版本:
用真机打包:Product–Archive 之后进入以下页面(或者已经 Archive 了的话就可以通过 Window–Organizer 进入):
看到蓝色背景的按钮没有,Upload to App Store…之后按照提示操作吧。
我建议使用 Application Loader 的。
- Application Loader 构建版本:
如上图,点击“Export…”,导出一个 ipa 文件(其实这个时候就可以点击“Validate…”,但是我懒)。
然后打开 Application Loader 这个软件,双击“交付您的应用程序”:
它会验证你的 app,如果这里上传完毕没有报错的话,那么 10 分钟左右等 apple 那边处理完这个版本,就可以到 iTunes Connect 里的“构建版本”选择刚刚上传好的这个版本。
填好就像这样子啦:
好,信息都填写完毕了。iTunes Connect 右上角提交审核吧!
另外:
苹果刚刚发布了iOS应用遭拒的十大原因,帮助开发者更好地设计符合苹果要求的应用。
在苹果列出的十大原因中,占比最高的是“信息提交不全”,达到14%。属于这一原因的有可能是应用描述不够完善,也有可能是用户忘记包含支持页的链接。但这一理由的涵盖范围非常广泛,或许缺乏指导意义。
除此之外,排名第三的“不遵守《开发者项目授权协议》”同样过于宽泛。其他8条虽然较为具体,但所谓的“漏洞”同样包含很多情况。
这十大原因在遭拒应用中的合并占比达到60%。
以下为详细原因列表以及所占比例:
1、信息提交不全(14%)
2、应用存在漏洞(8%)
3、不遵守《开发者项目授权协议》(6%)
4、用户界面太复杂或不够好(6%)
5、名称、描述、截屏与应用内容或功能不相关(5%)
6、包含错误、欺诈或误导性内容,或者使用与其他应用相似的的名称或图标(5%)
7、iTunes Connect中的应用名与设备上显示的应用名不相似,引发困扰(4%)
8、包含占位文本(4%)
9、评级不合适(3%)
10、beta、demo、trail或test版软件也会被拒
App上架流程 & 上架被拒10大原因的更多相关文章
- 精华阅读第 12 期 | 最新 App Store 审核指南与10大被拒理由?
很多时候,我们对技术的追求是没有止境的,我们需要不断的学习,进步,再学习,再进步!本文系移动精英开发俱乐部的第12期文章推荐阅读整理,其中涉及到了 Android 数据库框架,架构设计中的循环引用,同 ...
- 最新App Store审核指南与10大被拒理由
最近,苹果在官网给出了截至2015年2月份应用被拒绝的十大理由,其中50%以上的应用被拒绝都是因为这10个原因,其中7个理由和2014年相同,其中排名前三的原因分别是:需要补充更多信息.存在明显的bu ...
- Xcode8之后,苹果列出了最新App被拒十大原因
开发者在开发应用程序之前,熟悉苹果审核应用的技术.内容以及设计准则是非常重要的,可以大大降低应用审核被拒的可能性. 最近,苹果通过一个专门的页面给出了截止2016年10月10日应用提交审核被拒的十大原 ...
- 面试题: MySQL 索引失效的10大原因
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 1.建表: CREATE TABLE staffs ( id INT PRIMARY KEY AUTO_ ...
- app开发流程有哪些
app开发流程是需求方和供求方相互协调的过程,一般分为需求分析.功能设计.功能实现.项目测试.上线等几个步骤,下面我们就来一起看看ytkah团队进行app开发各个流程主要做哪些事情,让您对app开发设 ...
- iOS APP提交上架流程
转载自CocoaChina,链接地址:http://www.cocoachina.com/bbs/read.php?tid=330302 后面问题我也遇到了,参考该文章解决的 转自http://blo ...
- 2018最新苹果APP上架App Store流程(超详细)
本文转发:https://blog.csdn.net/xxw888/article/details/73618837 2018最新整理iOS app上架app详细教程 上架iOS需要一个付费688的开 ...
- iOS App上架流程(2016详细版)
iOS App上架流程(2016详细版) 原文地址:http://www.jianshu.com/p/b1b77d804254 感谢大神整理的这么详细 一.前言: 作为一名iOSer,把开发出来的Ap ...
- app上架流程的整理
app的上架流程 一.准备工作 首先需要有开发者账号,企业级的账号是299$,个人开发者账号是99$,没有的话可以登录http://developer.apple.com/自行申请 假如你已经有账号了 ...
随机推荐
- svn无法显示日期和作者
当遇到这种情况,只要把这个read改为none就可以显示了 亲测绝对管用
- 诊断:Goldengate OGG-01163 Bad column length
故障现象: OGG- Bad column length () specified . 原因:源端修改了字段长度.虽然源端和目标端的长度已经通过DDL语句修改到一致,在extract进程未重启的情况下 ...
- Go:内置函数
一.内置函数 close // 主要用来关闭channel len // 用来求长度,比如string.array.slice.map.channel new // 用来分配内存,主要用来分配值类型, ...
- buf.readInt32BE()
buf.readInt32BE(offset[, noAssert]) buf.readInt32LE(offset[, noAssert]) offset {Number} 0 <= offs ...
- LA 3029 City Game
LA 3029 求最大子矩阵问题,主要考虑枚举方法,直接枚举肯定是不行的,因为一个大矩阵的子矩阵个数是指数级的,因此应该考虑先进行枚举前的扫描工作. 使用left,right,up数组分别记录从i,j ...
- PAT 1130 Infix Expression
Given a syntax tree (binary), you are supposed to output the corresponding infix expression, with pa ...
- 3.3.5 boolean类型
boolean(布尔)类型有两个值:false 和 true ,用来判定逻辑条件.与Python不同的是,Java中的boolean值与整型值之间进行互相转换. Python中Tu ...
- 这可能是vue-cli最全的解析了……
题言: 相信很多vue新手,都像我一样,只是知道可以用vue-cli直接生成一个vue项目的架构,并不明白,他究竟是怎么运行的,现在我们一起来研究一下... 一.安装vue-cli,相信你既然会用到v ...
- 九度oj 1179 阶乘
题目1179:阶乘 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:6010 解决:1756 题目描述: 输入n,求y1=1!+3!+...m!(m是小于等于n的最大奇数)y2=2!+4!+ ...
- 用Windows自带DOS命令提示符 制作U盘启动盘
Windows & DOS命令提示符 & U盘 & 启动盘 用Windows自带DOS命令提示符 制作U盘启动盘.docx http://xgqfrms.blog.163.co ...