在iOS开发过程中,无论是安装到真机测试,还是上线到App Store,你总是要接触到证书的。
相信大家对苹果证书的创建都有一定的了解,网上也有很多教程,可是你还是会在开发过程中遇到各种证书不能用的情况。
下面先来介绍几个概念。
1、Apple ID 。这个是指苹果开发者账号(下面还有个App IDs,这两个(Apple ID、App IDs)有些人会搞混,这就有点尴尬了)。有了这个,你才可以登录到App Store去下载App。
2、Apple ID会员资格。如果你仅有Apple ID(普通用户只有Apple ID,就是用来从App Store下载应用的那个账号),那还接触不到证书,因为没资格。说白了,会员资格是要付费的。付费后,你才有可能能接触证书,并用证书打包App,上传App 到App Store。
会员资格有两种:
(1)Apple Developer Program - 苹果开发者计划($99
)
(2)Apple Developer Enterprise Program - 苹果开发者企业计划($299
)
关于价格:原来是以美元为单位的。现在也有当地价格。当然现在也有人民币价格(之前是没有的)。
关于App Store:Apple Developer Program可以上传到App Store;Apple Developer Enterprise Program不可以上传到App Store。
关于企业内发布:Apple Developer Program不可以企业内发布;Apple Developer Enterprise Program可以企业内发布。什么叫做企业内发布,就是不用发布到App Store,可以把IPA文件挂着自己的网站,供使用者下载、使用,而且不受UDID限制。
关于注册用户类型:Apple Developer Program可以个人,也可以是企业;Apple Developer Enterprise Program只能是企业。其中企业需要在注册时,提供邓白氏编码。
因为Apple Developer Program注册者可以是企业,有些人经常把Apple Developer Program和Apple Developer Enterprise Program搞混。
有些人经常说个人账号、企业账号,想当然的把Apple Developer Program注册的企业账号理解成苹果开发者企业计划,即Apple Developer Enterprise Program类型的账号。
又有些人经常把Apple Developer Enterprise Program说成企业账号,被人理解成Apple Developer Program注册的企业账号。
我一开始怎么区别的?我是以价格区别的,就说$99
账号,还是$299
账号。后来因为在国内可以用人民币支付,有些人不理解什么$99
、$299
,我改口以是否能够上传到App Store来区分(当然这些是对于那些门外汉来说的)。如果你知道了,那么你肯定能理解别人在说苹果开发者计划和苹果开发者企业计划的区别。
好了,上面说了那么多,相信你能对两种会员资料有了深刻理解。
有了会员资格,就可以通过这个界面登录
登录以后,会看到这样的界面(当然随着苹果开发者网站界面更新,Web界面肯定会有变化,不过大同小异):
点击Certificates, Identifiers & Profiles
,会进入:
到这里就进入到证书管理界面了。
关于Certificates,我喜欢称之为证书文件,有开发证书和发布证书两种。
1、Apple Development Xcode 11及以后,可以用这个给iOS、macOS、tvOS、watchOS apps开发版本签名使用。
2、Apple Distribution Xcode 11及以后,可以用这个给iOS、macOS、tvOS、watchOS apps发布版本签名使用,可以上传App Store,也可以Ad Hoc方式发布。
3、iOS App Development 给iOS app 开发版本签名
4、iOS Distribution(App Store and Ad Hoc) 给iOS app 发布版本签名,可以上传App Store,也可以Ad Hoc方式发布;
5、Mac Development 给 Mac app 开发版本签名;
6、Mac App Distribution 给 Mac app 发布版本签名,上传到App Store使用;
7、Mac Installer Distribution 给 Mac App Store以外的应用安装包发布签名;
8、Developer ID Application 给Mac App Store以外的应用发布签名;
1、Apple Development Xcode 11及以后,可以用这个给iOS、macOS、tvOS、watchOS apps开发版本签名使用。
2、iOS App Development 给iOS app 开发版本签名
3、Mac Development 给 Mac app 开发版本签名
4、Developer ID Installer 给 Mac App Store以外的应用安装包发布签名;
5、Developer ID Application 给Mac App Store以外的应用发布签名;
6、In-House and Ad Hoc 给iOS app发布版本签名(In-House 和 Ad Hoc的区别是,In-House没有设备UDID安装限制,Ad Hoc限制每个应该发布设备不能超过100个以上)
关于certSigningRequest
证书创建时,需要CertificateSigningRequest.certSigningRequest
文件,这个是从Mac电脑上的钥匙串导出的。我把这一步理解为证书和Mac电脑绑定。
CSR
导出方法如下图:
点击继续,就会获得一个
CertificateSigningRequest.certSigningRequest
(默认名称)文件。xxx.certSigningRequest
是Mac
设备的公钥。(1)上传
xxx.certSigningRequest
到苹果开发者账号后台,苹果会对Mac
的公钥,用自己的私钥进行数字签名,最后生成证书文件.cer
。(2)下载
.cer
文件,可以添加到xxx.certSigningRequest
对应的Mac上。(我的理解xxx.certSigningRequest
的作用就是防止.cer
,被其他Mac使用)
之前,iOS Development
模式下只能绑定一个xxx.certSigningRequest
文件,iOS Distribution
模式下只能绑定一个xxx.certSigningRequest
文件,也就是这两中模式下只能绑定一台Mac电脑。现在可以绑定两个了。
细心的会发现在上面截图中,发现有很多Certificate,注意看Type,其他的都是 APNs开头,这个是什么呢?这个表示是推送证书。为什么推送证书会有那么多,因为推送证书是和App IDs相关的,多个App IDs配置了推送证书,这里就会有多个APNs的Certificate。
证书分发
绑定成功后,下载xxx.cer,加载到电脑中的钥匙串。会发现只有绑定的电脑上才显示可用,放到其他电脑上不可用。
如果其他电脑上也想用怎么办,通过绑定电脑导出相应xxx.p12文件(这个大家应该都会导出),然后给其他电脑使用。这步,我喜欢称之为授权给其他电脑使用。
证书撤销
还有一种情况,如果我绑定的电脑坏了,或者是之前同事的电脑,现在他走了,不能用了,怎么办?这种情况下,可以revoke,即撤销。这样之前绑定的会通通不可用。这个也是在多人开发时,会经常遇到的一个问题,用着用着,突然发现证书不可用了。
发现证书不可用,两个解决办法
(1)自己再revoke一次,从新绑定。(不太推荐,因为证书可能在被其他人使用,建议先确定当前绑定者是谁)
(2)找当前绑定者提供p12文件。
关于Identifiers,我常用的是App IDs,其他有用,但很少。App IDs要与Xcode中的Bundle Identifier对应使用。
关于Devices,添加真机的Identifier,就是我们常说的UDID,这个在开发证书环境下,真机调试时,会有用到。
关于Provisioning Profiles,我喜欢称之为配置描述文件,也简称描述文件,这个叫法还是因为我经常使用iPhone配置实用工具,从这上面沿袭下来的。这个会安装到真机设备中(当然不会让我们手动安装,系统会自动安装)。
就介绍到这里,本文没有介绍证书的具体做法(这个可以在网上搜到很多),主要介绍了开发者账号类型,即不同的会员资格的区别;还有主要介绍了Certificates,为什么会经常遇到证书不能使用,还有证书不能使用后的一些处理方法。
希望对一个账号有多个使用者的情况下的朋友们有所帮助。这种很多开发者使用同一个账号的情况,建议有一个Admin,其他通过p12授权使用,防止使用混乱。