当我们开发完一个应用,就到了发布到市场的时候,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. 20145236《网络对抗》Exp9 web安全基础实践

    20145236<网络对抗>Exp9 web安全基础实践 一.基础问题回答: SQL注入攻击原理,如何防御 SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或 ...

  2. P1823 [COI2007] Patrik 音乐会的等待 单调栈 洛谷luogu

    题目描述 N个人正在排队进入一个音乐会.人们等得很无聊,于是他们开始转来转去,想在队伍里寻找自己的熟人.队列中任意两个人A和B,如果他们是相邻或他们之间没有人比A或B高,那么他们是可以互相看得见的. ...

  3. [04] JSP标准动作

    1.概述 JSP规范中定义了一系列的标准动作,Web容器按照规范进行了实现,可以解析并执行标准动作.而标准动作使用的是标准的xml语法,看上去也比较直观易懂,下面来看一个结构例子: <jsp:a ...

  4. [01] MyBatis概述

    传统的JDBC来做DAO层,做了下面这几件事: 加载驱动 获取连接 执行SQL语句 获取操作结果封装信息 返回操作结果 而实际上DAO层最关心的是什么呢,就是后面三点就完事,JDBC显得太繁琐: 执行 ...

  5. php RSA加密传输代码示例

    涉及敏感数据的传输,双方最好约定使用加密解密.那RSA非对称加密就大有作为了. 服务端可以保留自己的私钥,发给客户端对应的公钥.这样就可以互相加解密了.php中rsa加解密实现: 首先要生成一对公钥私 ...

  6. 浅析单点登录,以及不同二级域名下的SSO实现

    一家公司有多个产品线,就可能要有多个子域名,下头以baidu域名为例,a.baidu.com, b.baidu.com.com 是顶级域名,baidu 就是一个二级域名,a和b就是子域名. 当用户在a ...

  7. [Python]Python Class 中的 函数定义中的 self

    In [80]: class MyClass001: ....: def selfDemo(self): ....: print 'My Demo' ....: In [81]: p = MyClas ...

  8. c#通用配置文件读写类与格式转换(xml,ini,json)

    .NET下编写程序的时候经常会使用到配置文件.配置文件格式通常有xml.ini.json等几种,操作不同类型配置文件需要使用不同的方法,操作较为麻烦.特别是针对同时应用不同格式配置文件的时候,很容易引 ...

  9. JS_各种排序方法

    排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存. 我们这里说说八大排序就是内部排序. 当n较大,则应采 ...

  10. 开发CMDB系统

    背景: 在现网环境中服务器多了每天服务器的配置 情况我们很难记住,当某台服务器硬件配置变化后可以第一时间了解,某台服务器出现问题时可以快速定位机架位置,之前都是excel文档,要查某项数据时极不方便. ...