关于iOS Developer 证书(Certificates) 、Identifiers(App ID) 、设备(Devices)、描述文件(Provisioning Profiles)

开发者账户申请完成之后,接下来就是申请证书开始调试和发布APP啦

关于iOS Developer 证书(Certificates) 、Identifiers(App ID) 、设备(Devices)、描述文件(Provisioning Profiles)_第1张图片
开发者中心

Certificate

证书(Certificate)是用来给应用程序签名的,只有经过签名的APP才能保证它的来源是可信任的,并且代码是完整的, 未经修改的。在Xcode Build Setting的Code Signing Identity中,你可以设置用于为代码签名的证书。

iOS 证书是用来证明 iOS App 内容(bundle with executable and resources)的合法性和完整性的数字证书。对于想安装到真机或发布到 AppStore 的应用程序(App),只有经过签名验证(Signature Validated)才能确保来源可信,并且保证 App 内容是完整、未经篡改的。

众所周知,我们申请一个Certificate之前,需要先申请一个Certificate Signing Request (CSR) 文件,

关于iOS Developer 证书(Certificates) 、Identifiers(App ID) 、设备(Devices)、描述文件(Provisioning Profiles)_第2张图片
证书签名请求

而这个过程中实际上是生成了一对密钥(公钥和私钥),保存在你Mac的Keychain中。代码签名正是使用这种基于非对称密钥的加密方式,用私钥进行签名,用公钥进行验证。如下图所示,


关于iOS Developer 证书(Certificates) 、Identifiers(App ID) 、设备(Devices)、描述文件(Provisioning Profiles)_第3张图片
密钥

在你Mac的keychain的login中存储着相关的公钥和私钥,而证书中包含了公钥。你只能用私钥来进行签名,所以如果没有了私钥,就意味着你不能进行签名了,所以就无法使用这个证书了,此时你只能revoke之前的证书再申请一个。因此在申请完证书时,最好导出并保存好你的私钥。当你想与其他人或其他设备共享证书时,把私钥传给它就可以了。私钥保存在你的Mac中,而苹果生成的Certificate中包含了公钥。当你用自己的私钥对代码签名后,苹果就可以用证书中的公钥来进行验证,确保是你对代码进行了签名,而不是别人冒充你,同时也确保代码的完整性等。

** Identifiers App ID**

App ID用于标识一个或者一组App,App ID是和Xcode中的Bundle ID是一致的或者匹配的。App ID主要有以下两种:

Explicit App ID:唯一的App ID,这种App ID用于唯一标识一个应用程序,例如com.ABC.demo1,标识Bundle ID为com.ABC.demo1的程序。
Wildcard App ID:通配符App ID,用于标识一组应用程序。例如可以表示所有应用程序,而com.ABC.可以表示以com.ABC开头的所有应用程序。
每创建一个App ID,我们都可以设置该App ID所使用的APP Services,也就是其所使用的额外服务。每种额外服务都有着不同的要求,例如,如果要使用Apple Push Notification Services,则必须是一个explicit App ID,以便能唯一标识一个应用程序。

** Devices**
Device最简单了,就是iOS设备。Devices中包含了该账户中所有可用于开发和测试的设备。 每台设备使用UDID来唯一标识。
每个账户中的设备数量限制是100个(每个类型各100个,iPhone、iPad算两个类型)。

注:删除设备并不会立即恢复设备名额,而是要等到当前开发者账户到期后并且成功续费那一刻开始,删除设备才会释放名额,直到添加第一个设备止;
例子:
会员有效期是2017年8月8日-2018年8月8日
当前已经添加了80台设备,可添加设备数为20个,此时删除10个,当前设备总数为70个,可继续添加的设备数量仍是20个。直到2018年8月8日续费了,此时你续费成功这一刻开始到添加设备,这段时间内删除设备是会释放设备数量的。比如全部删除,那可添加设备就是100个。但是一旦添加了一个设备之后再删除设备也不会释放名额了。

关于iOS Developer 证书(Certificates) 、Identifiers(App ID) 、设备(Devices)、描述文件(Provisioning Profiles)_第4张图片
设备重置日期

Provisioning Profile
一个Provisioning Profile文件包含了上述的所有内容:证书、App ID、设备。是一个综合描述文件。

如果我们要打包或者在真机上运行一个应用程序,我们首先需要证书来进行签名,用来标识这个应用程序是合法的、安全的、完整的等等;然后需要指明它的App ID,并且验证Bundle ID是否与其一致;再次,如果是真机调试,需要确认这台设备能否用来运行程序。而Provisioning Profile就把这些信息全部打包在一起,方便我们在调试和发布程序打包时使用,这样我们只要在不同的情况下选择不同的profile文件就可以了。而且这个Provisioning Profile文件会在打包时嵌入.ipa的包里。

例如,如下图所示,

关于iOS Developer 证书(Certificates) 、Identifiers(App ID) 、设备(Devices)、描述文件(Provisioning Profiles)_第5张图片
Provisioning Profile.png

一个用于Development的Provisioning Profile中包含了该Provisioning Profile对应的App ID,可使用的证书和设备。这意味着使用这个Provisioning Profile打包程序必须拥有相应的证书,并且是将App ID对应的程序运行到Devices中包含的设备上去。

如上所述,在一台设备上运行应用程序的过程如下:

关于iOS Developer 证书(Certificates) 、Identifiers(App ID) 、设备(Devices)、描述文件(Provisioning Profiles)_第6张图片
验证过程

你可能感兴趣的:(关于iOS Developer 证书(Certificates) 、Identifiers(App ID) 、设备(Devices)、描述文件(Provisioning Profiles))