總體流程
提交你的應用到AppStore是一個多步驟的過程:
- 你要登陸到iTunes Connect,然后創建一條App記錄并輸入一些必要的信息(如果要銷售你的App,還需要填寫收款相關的信息)。
- 在Xcode里,用你的發布證書打包你的代碼并簽名。
- 用Xcode或Application Loader上傳你的App。
- 用iTunes Connect把你的App提交到AppStore,并且可以跟蹤審核狀態。
- 等你的App審核通過后,再用iTunes Connect發布(設置用戶可以獲取的日期)。
蘋果開發者計劃
蘋果開發者計劃是為了讓個人和組織成為蘋果已知的開發者,用來開發并發布App到the App Store, the Apple TV App Store, the Mac App Store, and outside of the Mac App Store。特點:
- 加入費用99美元一年
- 可訪問account和iTunes Connect
- 最大UUID支持數:100
- 該計劃的開發者分為個人和公司兩種:
- 個人(Individual):協作人數為1人(開發者自己)。“個人”開發者可以申請升級“公司”,可以通過撥打客服電話(400 6701 855)來咨詢和辦理。
- 公司(Company):協作人數為多人(允許多個開發者進行協作開發,比個人多一些帳號管理的設置,可設置多個Apple ID,分4種管理級別的權限)。申請時需要填寫公司的鄧白氏編碼(DUNS Number),這個可通過蘋果免費申請。
蘋果開發者企業計劃是為了讓組織可以開發并發布企業版App,企業版App不能提交AppStore審核,直接發布給用戶安裝。特點:
- 加入費用299美元一年
- 可訪問account,不能訪問iTunes Connect
- 最大UUID支持數:不限制
- 協作人數:多人
- 企業賬號開發的應用不能上線App Store,適合那些不希望公開發布應用的企業。同樣,申請時也需要公司的鄧白氏編碼(DUNS Number)。
Code sign(簽名)
將你的App代碼簽名,可以讓操作系統識別誰簽名了你的App,并且校驗自你簽名以后你的App是否被修改過。簽名可以保護你App里的可執行代碼,因為可執行代碼被改動后簽名就失效了。注意,資源文件,例如圖片和nib文件,是不能被簽名的,所以可以被隨便改動。
代碼簽名通過與App ID,provisioning profile, entitlements結合,確保了以下幾點:
- 你的App是被你或一個可信的團隊成員構建并簽名。
- 被你或你的團隊簽名的App只能運行在指定的開發設備中。
- 你的App只能運行在你指定的測試設備中。
- 你的App不能使用你未添加過的應用服務。
- 只有你可以上傳你的App構建版本到 iTunes Connect。
- 一旦你選擇在AppStore外發布應用(僅Mac應用), 可以確保應用不被其他人修改或重新發布。
Xcode在構建App過程中會使用你的簽名標識來簽名你的App。簽名標識包含了蘋果發布的一對公鑰私鑰。這對公鑰私鑰存儲在你的鑰匙串(keychain)中,并且被加密算法用來生成簽名。在你的開發者賬戶(accout)的證書里僅存放了公鑰。還需要一個中間證書存放到你的鑰匙串中,它用來確保你的證書是由一個證書機構頒發的。
總之,簽名過程需要你的鑰匙串同時存放簽名標識(公鑰私鑰)和中間證書。當你安裝Xcode時,蘋果的中間證書就被添加到你的鑰匙串中了。你可以通過Xcode創建你的簽名標識并簽名你的App。你的簽名標識(私鑰部分)會被添加到鑰匙串,而相應的證書(公鑰部分)則被添加到你的開發者賬戶中。
Signing identities are used to sign your app or installer package. A development certificate identifies you, as a team member, in a development provisioning profile that allows apps signed by you to launch on devices. A distribution certificate identifies your team or organization in a distribution provisioning profile and allows you to submit your app to the store. Only a team agent or an admin can create a distribution certificate. You use the same development and distribution certificates for iOS, tvOS, and watchOS apps. You use different development and distribution certificates for Mac apps.
CSR文件(CodeSigningRequest)
CSR文件:生成證書的過程中,有一步是需要我們上傳CSR文件的。為什么必須要上傳它?CSR文件是用于換取證書文件(公鑰),導出CSR這個過程其實就是電腦向證書機構申請憑證的過程。證書是你用電腦制作的并且頒發給你的電腦的。但是這臺電腦是否具有制作證書的能力,就是要這個CSR文件來憑證。CSR從鑰匙串中導出,具體步驟為:打開鑰匙串--鑰匙串訪問--證書助理--從證書頒發機構請求證書--填寫郵箱并保存到磁盤。
當你的CSR文件創建時,一對公鑰和私鑰就自動生成了。只不過私鑰存儲到了你的電腦上。在Mac上,它默認存儲在登陸用戶的鑰匙串中,并且可以在“Keys”分類下查看。你正要請求的證書則包含了另一半--公鑰。申請到證書后,下載并雙擊.cer文件,將證書安裝到鑰匙串中,這樣你的電腦上就有了完整的一對公鑰私鑰。
Xcode會在項目編譯期間使用你的代碼簽名驗證,這個驗證是一個由Apple認證過的公鑰-私鑰對組成。既然私鑰是存在于我們本地電腦的鑰匙串中,而Xcode編譯需要公鑰和私鑰,那么豈不是說這個證書申請下來,只能我們自己的電腦能用嗎?當然不是這樣,當同事需要用測試證書進行真機調試的時候,我們可以通過導出p12給他們使用
p12文件
p12:又稱為個人信息交換證書。此證書實際包含了cer證書對應的公鑰和本地鑰匙串對應的私鑰信息。所以p12包含了公鑰私鑰,我們把p12分發給團隊其他成員,再配上相應的配置文件,他們就可以正常使用了。
注意:cer文件沒有包含私鑰,所以別人的電腦上用此證書時找不到對應私鑰,從而使用不了。在導出p12的時候是點擊相應的證書導出的
Certification(證書)
證書是對電腦開發資格的認證,每個開發者帳號有一套,分為開發證書和發布證書兩種。
Developer Certification(開發證書)
安裝在電腦上提供權限:開發人員通過設備進行真機測試。
可以生成副本供多臺電腦安裝;Distribution Certification(發布證書)
安裝在電腦上提供發布iOS程序的權限:開發人員可以制做測試版(AdHoc)和發布版的程序。
可以生成副本供多臺電腦安裝;
每種證書都有APNS版本,需要關聯具體的AppId(是否支持推送是每個應用具體的配置)。注意APNS版本包含了基礎證書,Xcode只安裝一個APNS版本即可。
APNs證書均有有效期的限制,過期則無法繼續推送消息。開發證書/生產證書的有效期是1年。請務必在證書到期前重新上傳新證書,重新提供導出的p12給JAVA后臺,生成的pem給PHP后臺,以保證推送服務持續正常工作。
Provisioning Profile(授權文件)
授權文件是對設備如iPod Touch、iPad、iPhone的授權,文件內記錄的是設備的UDID和程序的AppId,即:使被授權的設備可以安裝或調試Bundle identifier與授權文件中記錄的AppId對應的程序。
開發者帳號在創建授權文件時候會選擇App Id,(開發者帳號下App Id中添加,單選)和UDID(開發者帳號下Devices中添加最多100個,多選)。
授權文件分為兩種,對應相應的證書使用:
1)Developer Provisioning Profile(開發授權文件)
在裝有開發證書或副本的電腦上使用,開發人員選擇該授權文件通過電腦將程序安裝到授權文件記錄的設備中,即可進行真機測試。
注意:確保電腦有權限真機調試,即安裝了開發證書或副本;在開發工具中程序的Bundle identifier和選中使用的授權文件的App Id要一致;連接調試的設備的UDID在選中的授權文件中有記錄。
2)Distribution Provisioning Profile(發布授權文件)
發布授權文件主要分為三種:
AdHoc:這個證書一般用在上線蘋果商店前最后一次的調試,它所用是的證書和配置文件和正式上線商店時用的證書和配置文件是一樣的,他們的不同點在于,這個證書中指定了哪些蘋果設備(最多100)才能安裝此app,所以一般公司就用打個AdHoc包,對設備上線前做最后一步測試
AppStore:正式發布到蘋果商店的證書,這個是我們上線時候用到最多的一種證書,這個證書打包出來的ipa包對安裝設備數量沒有限制
In House: 這個證書的創建選項現在的好像只能在企業賬號中才能看到,這個打包出來的app不能再蘋果商店上線,對安裝的設備數量也沒有限制。這個可以借助一些三方平臺比如蒲公英、fire實現方便安裝(掃掃二維碼就能下載很方便的),當然用工具iTools安裝也是可以的