關(guān)于iOS Developer 證書(Certificates) 、Identifiers(App ID) 、設(shè)備(Devices)、描述文件(Provisioning Profiles)

開發(fā)者賬戶申請完成之后,接下來就是申請證書開始調(diào)試和發(fā)布APP啦

開發(fā)者中心

Certificate

證書(Certificate)是用來給應(yīng)用程序簽名的,只有經(jīng)過簽名的APP才能保證它的來源是可信任的,并且代碼是完整的, 未經(jīng)修改的。在Xcode Build Setting的Code Signing Identity中,你可以設(shè)置用于為代碼簽名的證書。

iOS 證書是用來證明 iOS App 內(nèi)容(bundle with executable and resources)的合法性和完整性的數(shù)字證書。對于想安裝到真機或發(fā)布到 AppStore 的應(yīng)用程序(App),只有經(jīng)過簽名驗證(Signature Validated)才能確保來源可信,并且保證 App 內(nèi)容是完整、未經(jīng)篡改的。

眾所周知,我們申請一個Certificate之前,需要先申請一個Certificate Signing Request (CSR) 文件,

證書簽名請求

而這個過程中實際上是生成了一對密鑰(公鑰和私鑰),保存在你Mac的Keychain中。代碼簽名正是使用這種基于非對稱密鑰的加密方式,用私鑰進行簽名,用公鑰進行驗證。如下圖所示,


密鑰

在你Mac的keychain的login中存儲著相關(guān)的公鑰和私鑰,而證書中包含了公鑰。你只能用私鑰來進行簽名,所以如果沒有了私鑰,就意味著你不能進行簽名了,所以就無法使用這個證書了,此時你只能revoke之前的證書再申請一個。因此在申請完證書時,最好導(dǎo)出并保存好你的私鑰。當(dāng)你想與其他人或其他設(shè)備共享證書時,把私鑰傳給它就可以了。私鑰保存在你的Mac中,而蘋果生成的Certificate中包含了公鑰。當(dāng)你用自己的私鑰對代碼簽名后,蘋果就可以用證書中的公鑰來進行驗證,確保是你對代碼進行了簽名,而不是別人冒充你,同時也確保代碼的完整性等。

** Identifiers App ID**

App ID用于標(biāo)識一個或者一組App,App ID是和Xcode中的Bundle ID是一致的或者匹配的。App ID主要有以下兩種:

Explicit App ID:唯一的App ID,這種App ID用于唯一標(biāo)識一個應(yīng)用程序,例如com.ABC.demo1,標(biāo)識Bundle ID為com.ABC.demo1的程序。
Wildcard App ID:通配符App ID,用于標(biāo)識一組應(yīng)用程序。例如可以表示所有應(yīng)用程序,而com.ABC.可以表示以com.ABC開頭的所有應(yīng)用程序。
每創(chuàng)建一個App ID,我們都可以設(shè)置該App ID所使用的APP Services,也就是其所使用的額外服務(wù)。每種額外服務(wù)都有著不同的要求,例如,如果要使用Apple Push Notification Services,則必須是一個explicit App ID,以便能唯一標(biāo)識一個應(yīng)用程序。

** Devices**
Device最簡單了,就是iOS設(shè)備。Devices中包含了該賬戶中所有可用于開發(fā)和測試的設(shè)備。 每臺設(shè)備使用UDID來唯一標(biāo)識。
每個賬戶中的設(shè)備數(shù)量限制是100個(每個類型各100個,iPhone、iPad算兩個類型)。

注:刪除設(shè)備并不會立即恢復(fù)設(shè)備名額,而是要等到當(dāng)前開發(fā)者賬戶到期后并且成功續(xù)費那一刻開始,刪除設(shè)備才會釋放名額,直到添加第一個設(shè)備止;
例子??:
會員有效期是2017年8月8日-2018年8月8日
當(dāng)前已經(jīng)添加了80臺設(shè)備,可添加設(shè)備數(shù)為20個,此時刪除10個,當(dāng)前設(shè)備總數(shù)為70個,可繼續(xù)添加的設(shè)備數(shù)量仍是20個。直到2018年8月8日續(xù)費了,此時你續(xù)費成功這一刻開始到添加設(shè)備,這段時間內(nèi)刪除設(shè)備是會釋放設(shè)備數(shù)量的。比如全部刪除,那可添加設(shè)備就是100個。但是一旦添加了一個設(shè)備之后再刪除設(shè)備也不會釋放名額了。

設(shè)備重置日期

Provisioning Profile
一個Provisioning Profile文件包含了上述的所有內(nèi)容:證書、App ID、設(shè)備。是一個綜合描述文件。

如果我們要打包或者在真機上運行一個應(yīng)用程序,我們首先需要證書來進行簽名,用來標(biāo)識這個應(yīng)用程序是合法的、安全的、完整的等等;然后需要指明它的App ID,并且驗證Bundle ID是否與其一致;再次,如果是真機調(diào)試,需要確認這臺設(shè)備能否用來運行程序。而Provisioning Profile就把這些信息全部打包在一起,方便我們在調(diào)試和發(fā)布程序打包時使用,這樣我們只要在不同的情況下選擇不同的profile文件就可以了。而且這個Provisioning Profile文件會在打包時嵌入.ipa的包里。

例如,如下圖所示,

Provisioning Profile.png

一個用于Development的Provisioning Profile中包含了該Provisioning Profile對應(yīng)的App ID,可使用的證書和設(shè)備。這意味著使用這個Provisioning Profile打包程序必須擁有相應(yīng)的證書,并且是將App ID對應(yīng)的程序運行到Devices中包含的設(shè)備上去。

如上所述,在一臺設(shè)備上運行應(yīng)用程序的過程如下:

驗證過程
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容