总体流程
提交你的应用到AppStore是一个多步骤的过程:
- 你要登陆到iTunes Connect,然后创建一条App记录并输入一些必要的信息(如果要销售你的App,还需要填写收款相关的信息)。
- 在Xcode里,用你的发布证书打包你的代码并签名。
- 用Xcode或Application Loader上传你的App。
- 用iTunes Connect把你的App提交到AppStore,并且可以跟踪审核状态。
- 等你的App审核通过后,再用iTunes Connect发布(设置用户可以获取的日期)。
苹果开发者计划
苹果开发者计划是为了让个人和组织成为苹果已知的开发者,用来开发并发布App到the App Store, the Apple TV App Store, the Mac App Store, and outside of the Mac App Store。特点:
- 加入费用99美元一年
- 可访问account和iTunes Connect
- 最大UUID支持数:100
- 该计划的开发者分为个人和公司两种:
- 个人(Individual):协作人数为1人(开发者自己)。“个人”开发者可以申请升级“公司”,可以通过拨打客服电话(400 6701 855)来咨询和办理。
- 公司(Company):协作人数为多人(允许多个开发者进行协作开发,比个人多一些帐号管理的设置,可设置多个Apple ID,分4种管理级别的权限)。申请时需要填写公司的邓白氏编码(DUNS Number),这个可通过苹果免费申请。
苹果开发者企业计划是为了让组织可以开发并发布企业版App,企业版App不能提交AppStore审核,直接发布给用户安装。特点:
- 加入费用299美元一年
- 可访问account,不能访问iTunes Connect
- 最大UUID支持数:不限制
- 协作人数:多人
- 企业账号开发的应用不能上线App Store,适合那些不希望公开发布应用的企业。同样,申请时也需要公司的邓白氏编码(DUNS Number)。
Code sign(签名)
将你的App代码签名,可以让操作系统识别谁签名了你的App,并且校验自你签名以后你的App是否被修改过。签名可以保护你App里的可执行代码,因为可执行代码被改动后签名就失效了。注意,资源文件,例如图片和nib文件,是不能被签名的,所以可以被随便改动。
代码签名通过与App ID,provisioning profile, entitlements结合,确保了以下几点:
- 你的App是被你或一个可信的团队成员构建并签名。
- 被你或你的团队签名的App只能运行在指定的开发设备中。
- 你的App只能运行在你指定的测试设备中。
- 你的App不能使用你未添加过的应用服务。
- 只有你可以上传你的App构建版本到 iTunes Connect。
- 一旦你选择在AppStore外发布应用(仅Mac应用), 可以确保应用不被其他人修改或重新发布。
Xcode在构建App过程中会使用你的签名标识来签名你的App。签名标识包含了苹果发布的一对公钥私钥。这对公钥私钥存储在你的钥匙串(keychain)中,并且被加密算法用来生成签名。在你的开发者账户(accout)的证书里仅存放了公钥。还需要一个中间证书存放到你的钥匙串中,它用来确保你的证书是由一个证书机构颁发的。
总之,签名过程需要你的钥匙串同时存放签名标识(公钥私钥)和中间证书。当你安装Xcode时,苹果的中间证书就被添加到你的钥匙串中了。你可以通过Xcode创建你的签名标识并签名你的App。你的签名标识(私钥部分)会被添加到钥匙串,而相应的证书(公钥部分)则被添加到你的开发者账户中。
Signing identities are used to sign your app or installer package. A development certificate identifies you, as a team member, in a development provisioning profile that allows apps signed by you to launch on devices. A distribution certificate identifies your team or organization in a distribution provisioning profile and allows you to submit your app to the store. Only a team agent or an admin can create a distribution certificate. You use the same development and distribution certificates for iOS, tvOS, and watchOS apps. You use different development and distribution certificates for Mac apps.
CSR文件(CodeSigningRequest)
CSR文件:生成证书的过程中,有一步是需要我们上传CSR文件的。为什么必须要上传它?CSR文件是用于换取证书文件(公钥),导出CSR这个过程其实就是电脑向证书机构申请凭证的过程。证书是你用电脑制作的并且颁发给你的电脑的。但是这台电脑是否具有制作证书的能力,就是要这个CSR文件来凭证。CSR从钥匙串中导出,具体步骤为:打开钥匙串--钥匙串访问--证书助理--从证书颁发机构请求证书--填写邮箱并保存到磁盘。
当你的CSR文件创建时,一对公钥和私钥就自动生成了。只不过私钥存储到了你的电脑上。在Mac上,它默认存储在登陆用户的钥匙串中,并且可以在“Keys”分类下查看。你正要请求的证书则包含了另一半--公钥。申请到证书后,下载并双击.cer文件,将证书安装到钥匙串中,这样你的电脑上就有了完整的一对公钥私钥。
Xcode会在项目编译期间使用你的代码签名验证,这个验证是一个由Apple认证过的公钥-私钥对组成。既然私钥是存在于我们本地电脑的钥匙串中,而Xcode编译需要公钥和私钥,那么岂不是说这个证书申请下来,只能我们自己的电脑能用吗?当然不是这样,当同事需要用测试证书进行真机调试的时候,我们可以通过导出p12给他们使用
p12文件
p12:又称为个人信息交换证书。此证书实际包含了cer证书对应的公钥和本地钥匙串对应的私钥信息。所以p12包含了公钥私钥,我们把p12分发给团队其他成员,再配上相应的配置文件,他们就可以正常使用了。
注意:cer文件没有包含私钥,所以别人的电脑上用此证书时找不到对应私钥,从而使用不了。在导出p12的时候是点击相应的证书导出的
Certification(证书)
证书是对电脑开发资格的认证,每个开发者帐号有一套,分为开发证书和发布证书两种。
Developer Certification(开发证书)
安装在电脑上提供权限:开发人员通过设备进行真机测试。
可以生成副本供多台电脑安装;Distribution Certification(发布证书)
安装在电脑上提供发布iOS程序的权限:开发人员可以制做测试版(AdHoc)和发布版的程序。
可以生成副本供多台电脑安装;
每种证书都有APNS版本,需要关联具体的AppId(是否支持推送是每个应用具体的配置)。注意APNS版本包含了基础证书,Xcode只安装一个APNS版本即可。
APNs证书均有有效期的限制,过期则无法继续推送消息。开发证书/生产证书的有效期是1年。请务必在证书到期前重新上传新证书,重新提供导出的p12给JAVA后台,生成的pem给PHP后台,以保证推送服务持续正常工作。
Provisioning Profile(授权文件)
授权文件是对设备如iPod Touch、iPad、iPhone的授权,文件内记录的是设备的UDID和程序的AppId,即:使被授权的设备可以安装或调试Bundle identifier与授权文件中记录的AppId对应的程序。
开发者帐号在创建授权文件时候会选择App Id,(开发者帐号下App Id中添加,单选)和UDID(开发者帐号下Devices中添加最多100个,多选)。
授权文件分为两种,对应相应的证书使用:
1)Developer Provisioning Profile(开发授权文件)
在装有开发证书或副本的电脑上使用,开发人员选择该授权文件通过电脑将程序安装到授权文件记录的设备中,即可进行真机测试。
注意:确保电脑有权限真机调试,即安装了开发证书或副本;在开发工具中程序的Bundle identifier和选中使用的授权文件的App Id要一致;连接调试的设备的UDID在选中的授权文件中有记录。
2)Distribution Provisioning Profile(发布授权文件)
发布授权文件主要分为三种:
AdHoc:这个证书一般用在上线苹果商店前最后一次的调试,它所用是的证书和配置文件和正式上线商店时用的证书和配置文件是一样的,他们的不同点在于,这个证书中指定了哪些苹果设备(最多100)才能安装此app,所以一般公司就用打个AdHoc包,对设备上线前做最后一步测试
AppStore:正式发布到苹果商店的证书,这个是我们上线时候用到最多的一种证书,这个证书打包出来的ipa包对安装设备数量没有限制
In House: 这个证书的创建选项现在的好像只能在企业账号中才能看到,这个打包出来的app不能再苹果商店上线,对安装的设备数量也没有限制。这个可以借助一些三方平台比如蒲公英、fire实现方便安装(扫扫二维码就能下载很方便的),当然用工具iTools安装也是可以的