当我们开发完一个应用,就到了发布到市场的时候,Android的打包比较简单,签名之后可以放在我们自己的服务器上,让用户扫描二维码来下载,而苹果的就比较麻烦了,如果内测可以通过蒲公英等内测分发平台,但是这个时候使用的证书是开发证书,只有在profile里注册过uuid的设备才可以安装。如果想让所有使用苹果的用户都可以安装我们的APP,只有发布到App Store。
发布ionic应用到App Store的步骤:

1:打开Mac电脑的Xcode,注意beta版的Xcode是不能上传应用到app store的。
登录你的apple id开发者账号。如果是企业账号($99),最后的发布只能使用角色为agent的企业账户来发布。如果是个人账户,个人即为agent,team也就是个人的名字。一个开发者账户可以是多个企业账户team的开发人员,同样一个企业账户的team可以有多个角色为admin的开发人员,admin没有agent的权限多。
其实apple的证书并不复杂,就这么几种:identify certificates是带有钥匙串的唯一性证书,provisioning profile是包含identify和app id,device这些信息在一起生成的一个综合信息证书,app id是app的唯一标识。
如果只是发布,打开Xcode的preferences\account,登录agent账户,点击manage certificates,点击+号,选择app store,会自动生成production版本的identify certificates,keychain也会自动生成。

之后在苹果开发者中心网站创建app id:

这个explicit app id应该和你的ionic 项目config.xml文件里的id一致。
然后去生成provisioning profile,非常简单,选择一下app id 和identify certificates,生成之后点击下载,双击下载之后的文件,就会自动打开Xcode,这时候证书就全部在Xcode里面了,或者点击preferences\account的download all profiles也可以自动将证书在Xcode里下载好。

2:在你的ionic项目执行:ionic cordova build iOS –release,如果失败,可以先build一个普通版本,到xcode里把证书选上,之后再回来build。
成功之后在xcode里打开你的项目路径下面的platforms\ios\xxxxx.xcodeproj文件:

Bundle Id应该和你的ionic项目的id一致。
Signing选项下面会自动出现Xcode里面所有可用的profile文件,选择好你刚才创建的那个用于发布的profiles,xcode会自动的找到这个profile对应的signing certificate。
这些信息都填好没有错误之后,点击product\scheme\edit scheme选择release:

然后点击Product\Archive生成.ipa文件:

生成成功之后,选择export,导出.ipa文件到你的mac。在Xcode\Open Developer Tool\Application Loader里登录开发者账号(和你在ITunes Connect里登录的一致),点击Deliver Your App打开这个ipa文件:
这里注意,如果不是发布,而是想在蒲公英等内测分发平台发布,用来内测,将这个.ipa文件上传到蒲公英你的账号就可以了。不过export的时候注意不要选择App Store 模式,而要选择 Ad Hoc模式。而且你在生成开发证书profile选择设备的时候要将声明过udid的设备选择进来才能在这些设备安装内测版本的app。

然后就可以开始上传你的app 到App Store了,大概需要半个小时的时间。

3:在开发者中心(developer.apple.com)登陆开发者账号,选择iTunes Connect,这个iTunes Connect是用来管理app store的app信息和提交,更新,分析的地方
进入之后,选择My Apps

点击+号,新建一个APP,填上所有需要的信息,如果刚才使用Application Loader上传的app成功了的话,你可以在活动里看到你构建版本的记录:

如果这里没有记录,说明上传没有成功。注意在ios10因为苹果加强了用户权限管理,你需要在plist文件里声明你需要用到的camera,contacts,bluetooth等等,最好把基础的全部声明,防止上传失败。

如果有记录,在ios准备提交的页面,构建版本旁边会有+号,点击选择你上传的版本,会出现图标和上传时间。

之后把所有的信息填好,点击存储,提交进入审核就可以进入审核阶段了。

转《发布ionic应用到App Store的完整步骤 》的更多相关文章

  1. 转《在浏览器中使用tensorflow.js进行人脸识别的JavaScript API》

    作者 | Vincent Mühle 编译 | 姗姗 出品 | 人工智能头条(公众号ID:AI_Thinker) [导读]随着深度学习方法的应用,浏览器调用人脸识别技术已经得到了更广泛的应用与提升.在 ...

  2. face-api.js:一个在浏览器中进行人脸识别的 JavaScript 接口

    Mark! 本文将为大家介绍一个建立在「tensorflow.js」内核上的 javascript API——「face-api.js」,它实现了三种卷积神经网络架构,用于完成人脸检测.识别和特征点检 ...

  3. TensorFlow.js之安装与核心概念

    TensorFlow.js是通过WebGL加速.基于浏览器的机器学习js框架.通过tensorflow.js,我们可以在浏览器中开发机器学习.运行现有的模型或者重新训练现有的模型. 一.安装     ...

  4. 在Java中直接调用js代码(转载)

    http://blog.csdn.net/xzyxuanyuan/article/details/8062887 JDK1.6版添加了新的ScriptEngine类,允许用户直接执行js代码. 在Ja ...

  5. 第十一章:WEB浏览器中的javascript

    客户端javascript涵盖在本系列的第二部分第10章,主要讲解javascript是如何在web浏览器中实现的,这些章节介绍了大量的脚本宿主对象,这些对象可以表示浏览器窗口.文档树的内容.这些章节 ...

  6. 在Java中直接调用js代码

    JDK1.6版添加了新的ScriptEngine类,允许用户直接执行js代码. 在Java中直接调用js代码 不能调用浏览器中定义的js函数,会抛出异常提示ReferenceError: “alert ...

  7. TensorFlow.js入门(一)一维向量的学习

    TensorFlow的介绍   TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理.Tensor(张量)意味着N维数组,Flow(流)意味着 ...

  8. JavaScript权威指南--WEB浏览器中的javascript

    知识要点 1.客户端javascript window对象是所有客户端javascript特性和API的主要接入点.它表示web浏览器的一个窗口或窗体,并且可以用window表示来引用它.window ...

  9. 解决webkit浏览器中js方法中使用window.event提示未定义的问题

    这实际上是一个浏览器兼容性问题,根源百度中一大堆,简要说就是ie中event对象是全局变量,所以哪里都能使用到,但是webkit内核的浏览器中却不存在这个全局变量event,而是以一个隐式的局部变量的 ...

  10. JS Date当前时间:获取日期时间方法在各浏览器中的差异

    转自:http://www.feiesoft.com/00047/<script type="text/javascript"> // JS Date当前时间获取方法在 ...

随机推荐

  1. day04流程控制之while

    while语法: while 条件:  缩进的循环体 # 如果条件为真,那么循环体则执行,执行完毕后再次循环,重新判断条件. # 如果条件为假,那么循环体不执行,循环终止 示例一: "&qu ...

  2. leetcode 51. N-Queens 、52. N-Queens II

    51. N-Queens 使用isValid判断当前的位置是否合法 每次遍历一行,使用queenCol记录之前行的存储位置,一方面是用于判断合法,另一方面可以根据存储结果输出最终的结果 class S ...

  3. centos 7 安装python3.5.1

    系统: [root@localhost ~]# cat /etc/centos-release CentOS Linux release 7.2.1511 (Core) 内核: [root@local ...

  4. JDBC使用MYSQL的LOAD DATA LOACAL INFILE和LOAD DATA INFILE

    MYSQL的LOAD方法都必须建立在mysql服务允许使用该命令的情况下: 开启该命令的方法: 1.在实例对应的my.cnf(windows为my.ini)中添加一行local-infile=1(默认 ...

  5. samba服务,连接远程开发机

    到了新环境,自己的开发机需要通过跳板机连,每次登录跳板机都需要RSA动态密码.一开始让我迷惑的是,这有个跳板机,那怎么让本地代码和开发机代码同步呢.以前公司的情况,一个是不需要跳板机,在phpstor ...

  6. MiniProfiler工具介绍(监控EF生成的SQL语句)--EF,迷你监控器,哈哈哈

    十年河东,十年河西,莫欺少年穷... 今天是抄袭的别人的博客,不过我感觉蛮好,挺有用,特别是老板让你优化EF项目SQL耗时的情况下,你可以采用这种方式来优化你的LINQ. 时间很宝贵,废话还是不多说, ...

  7. Luogu P1514 引水入城

    我承认我有点懒(洛谷已经发过题解了,但我发誓要坚持写博客) 这道题坑了我3天…… 首先一看就与染色问题类似,果断BFS(写DFS炸了) 先将最上面(靠近水)的一行全部扔进队列里,做一遍BFS 再对最下 ...

  8. 汇编 指令lodsb,lodsw,lodsd

    知识点: 汇编指令 lodsb,lodsw,lodsd 一.汇编指令LODSB //scasb scasw scasd //stosb stosw stosd 1. __asm lodsb //作用 ...

  9. 【C++】std::是什么?

    引例: #include<iostream> int main() { std::cout<<"我喜欢C++";//输出一句话 std::cout<& ...

  10. 线程池ThreadPoolExecutor整理

    项目用到线程池,但是其实很多人对原理并不熟悉 ,这里只是整理一下 ThreadPoolExecutor java.uitl.concurrent.ThreadPoolExecutor类是线程池中最核心 ...