如果是才進入公司進行開發的iOS程序猿來說人難免會對蘋果的證書、配置文件,尤其有的需要重頭開始的公司來說,最簡單的來說真機調試是免不了和這些東西打交道的,有的時候趕時間做完了可能心里也犯嘀咕,本文根據個人經驗對Certificates、Identifiers和Profiles做下簡單的介紹,不過默認你已有蘋果賬號,如果你還在學習的路上,將來有一天你也會有的,開始正題吧:
1.登錄蘋果官網,蘋果在WWDC15之后對網站進行了改版,以下是最新的截圖:
2.三合一的管理模式:
3.管理iOS Apps,這個就是網上有的時候會看到的圖片,隱藏了賬號信息;
如果進入了這里就到了文章的重點,接下來就解釋這些選項的作用(本文鏈接:http://www.cnblogs.com/xiaofeixiang,iOS技術交流群:228407086)
Certificates(證書)
證書主要分Development和Production兩類,Development證書用來開發和調試應用程序,Production主要用來分發應用程序,不同的種類的證書功能不一樣:
Development:
- App Development (1年):用來開發和真機調試應用程序。
- Push Development (1年):用來調試Apple Push Notification
Production:
App Store and Ad Hoc (3年):發布App Store和AdHoc的應用程序;
Apple Push Notification service SSL (Production)(1年):在發布版本中使用Apple Push Notification;
VoIP Services Certificate
Pass Type ID Certificate
Website Push ID Certificate
標注過的證書都用過,未標注本人沒有使用過,不敢誤人子弟。在Xcode的Code Signing中,可以設置用於為代碼簽名的證書。
小貼士:
我們申請一個Certificate之前,需要先申請一個Certificate Signing Request (CSR) 文件,如圖所示:
這個過程中實際上是生成了一對公鑰和私鑰,保存在自己的Mac的Keychain中。代碼簽名正是使用這種基於非對稱秘鑰的加密方式,用私鑰進行簽名,用公鑰進行驗證。圖片來源網上,原理大同小異,在自己Mac的keychain的login中存儲着相關的公鑰和私鑰,而證書中包含了公鑰。你只能用私鑰來進行簽名,所以如果沒有了私鑰,證書也就沒有意義。因此在申請完證書時,最好導出並保存好你的私鑰。當你的團隊有新成員或其他設備需要共享證書時,用同一私鑰就可以。私鑰保存在自己的Mac中,而蘋果生成的Certificate中包含了公鑰。當用自己的私鑰對代碼簽名后,蘋果就可以用證書中的公鑰來進行驗證,確保是本人對代碼進行了簽名,而不是被冒充,確保代碼的完整性。
Identifiers(標識)
Identifiers分為六種,App IDs,Pass Type IDs,Website Push IDs,iCloud Containers,App Groups和Merchant IDs,其中App IDs是最常用的,其他的五種沒有使用過,重點說下App IDs,App IDs用於標識一個或者一組App,App ID應該是和Xcode中的Bundle ID是一致的或者匹配的。App IDs主要有以下兩種:
- Explicit App ID:唯一的App ID,這種App ID用於唯一標識一個應用程序,例如com.cnblogs.xiaofeixiang,標識Bundle ID為com.cnblogs.xiaofeixiang的程序。
- Wildcard App ID:通配符App ID,用於標識一組應用程序。例如*可以表示所有應用程序,而com.cnblogs.*可以表示以com.cnblogs開頭的所有應用程序。
每創建一個App ID,我們都可以設置該App ID所使用的APP Services,也就是其所使用的額外服務,如下圖所示可以進行勾選:
Devices(設備)
隨着蘋果帝國的發展,現在設備類型分為Apple TV,Apple Watch,iPad,iPhone和iPod Touch五類。Devices中包含了該賬戶中所有可用於開發和測試的設備。 每台設備使用UDID來唯一標識。每個賬戶中的設備數量限制是100個。Disable 一台設備也不會增加名額,只能過了一年之后才能刪除,所以如果機器比較多慎用。
Profiles (配置文件)
配置文件,分為兩種,一種是Development,另外一種是Distribution,如下圖:
Provisioning Profile文件包含了上述的所有內容:證書、App ID、設備,我們先思考兩秒,如果沒有配置文件我們如何在真機上運行一個應用程序:
①通過證書來進行簽名,用來標識這個應用程序是合法的、安全的、完整的。。
②指明它的App ID,並且驗證Bundle ID是否與其一致;
③如果是真機調試,需要確認這台設備能否用來運行程序;
Provisioning Profile就把這些信息全部打包在一起,方便我們在調試和發布程序打包時使用,這樣我們只要在不同的情況下選擇不同的profile文件,而且這個Provisioning Profile文件會在打包時嵌入.ipa的包里。團隊的Provisioning Profile中包含了該Provisioning Profile對應的App ID,可使用的證書和設備,通過Provisioning Profile打包程序擁有與之相應的證書,並且是將App ID對應的程序運行到Devices中包含的設備上去。
蘋果官網關於配置文件的介紹:https://developer.apple.com/library/mac/documentation/IDEs/Conceptual/AppStoreDistributionTutorial/RevisionHistory.html#//apple_ref/doc/uid/TP40013839-CH99-SW1,附贈iOS技術交流群:228407086~