首先需要理解苹果的证书体系. 不需要被绕进去. 各种File之间的关系.
苹果开发来说, 无非就是证书(Certificate)加上版本配置(Proversioning)这两者文件的关系.
我们区分两个版本. 及Development 和 Distribution. 两个版本分别具备自己的Certificate和Proversioning, 并且需要配对.
我们先说Development下的配置. 需要生成证书文件以及匹配情况. 在真机调试中, 我们需要certificate和与机器UID匹配好的proversiong文件.
如下图所示: 弄清几个项目的关系后, 就不至于混淆.
- Certificates : 生成绑定机器的钥匙, 通过OSX系统的KeyChain Access申请p12钥匙文件(KeyChain Access -> Certificate Assistant -> Requeset a certificate from a certificate authority)后, 再绑定生成sertificate文件. 保存好该Certificate钥匙文件, 该申请有账号次数限制, Revoke后并不减少限制.
- Identifiers : 应用Application唯一标识, 及包名package name. 一般取名反向域名, ex: com.tabtu.application
- Devices : 测试机器的识别码. 标记为UDID. 线连接测试设备后, 复制粘贴其UDID并标记即可.
- Profiles : 该文件为Provisioning Files. 及证书与设备绑定描述文件, 通过设置Certificate与Profiles在每个Identifiers里面的绑定关系获取. 每次更改后可以重新下载. 下载到本地后双击即可. 若需要删除这部分配置文件, 地址是~/Library/MobileDevice/Provisioning Profiles
- Keys : 该项目为HTTPS2协议下使用服务的配对钥匙. 一般使用在调用APNS服务等验证部分. 跨平台开发时候, 使用该KEY验证HTTPS2下的API服务. 强烈推荐配置清楚该KEY配对到APNS服务, 减少使用notification证书. 服务器配置key后可以直接匹配到development和production的APNS, 区别于certificate方式发送提醒. (在使用APNS提醒服务时候, 区分开发与产品的配置; 而该key提供服务器跨平台的安全访问, 前提是HTTP2协议. )PS: WINDOWS 2012 不支持HTTP2
真机测试时候, 申请适合项目的Certificate后, 根据不同的项目Identifier选择配置供测试的Devices, 在Profiles中生成限制后的Provisioning Files文件并下载使用. 在xcode中需要手工配置的是’Code Signing Identity’ -> Certificate; ‘Provisioning Profile’ -> Profile; ‘Development Team’ -> Team Code
在发布到App Store过程中, 我们需要申请Distribution版的Certificate证书. 然后在Profiles中创建该Certificate的App Store版的Provisioning文件. 同样, 在发布Product -> Archive过程前, 配置发布版的’Code Signing Identity’和’Provisioning Profile’. 然后打包后上传到App Store.
在发布过程中, 最好将发布版本和上传时配置的‘Current Project Version’ 设置一致. 如果不一致, 上传成功后会worning. 但是并不影响验证和发布. 版本管理而已.
多个关联项目发布, 比如包含APS Notification的工程, Version与Build的数值最好完全一直, 否则有Worning, 看着难受.