這篇博客將會以一個完整的過程來實現一個iOS App提交審核的過程。在這個過程中,我們會涉及到證書、代碼簽名、授權文件、真機調試、開發者賬號等一些概念,我也會有所解釋。推薦大家先去看《iOS應用分發與內測(一)》《iOS應用分發與內測(二)》《iOS開發Provionsioning Profile解析》這幾篇博客,看完以後會對發布App的流程非常熟悉。
我先對一些概念做一個講解:
【證書 Certification】
證書是對電腦開發資格的認證,每個開發者賬號有一套。一個證書裡面包含私鑰和公鑰。私鑰是保存在你的電腦上的,別人無法得到。公鑰是可以從蘋果開發者網站下載後得到的。一個證書只有公鑰和私鑰配對成功後,才能認證身份。比如說,你想要讓你的某個朋友的電腦也能使用你的證書真機調試或者發布應用,於是你從你的開發者網站上面下載了證書,讓你的朋友在他的電腦上安裝,這還不夠,因為此時他還只有公鑰,你需要從你的電腦上的“鑰匙串訪問”中導出p12文件(保存了你的私鑰),讓你的朋友電腦安裝,這樣他的電腦才有“資格”真機調試。
當然,證書也分為開發證書(Developer Certification)和發布證書(Distribution Certification)。開發證書可以用來真機測試。發布證書可以制作測試版和發布版的程序。
【代碼簽名 Code Signing】
可能大家學iOS剛開始想要去真機調試的時候,都會去Build Setting裡面配置Code Signing這個東西。但是其實我們不知道這個是什麼東西。只要在提到上面的證書的時候,才能說得清代碼簽名。當我們真機調試的時候,程序會進行打包,然後通過Xcode安裝到我們的手機上。 也只有在電腦安裝了證書之後,Build Setting裡面的Code Signing才可以選擇,而選擇項恰恰就是你安裝的證書,是哪些證書呢?你可以去鑰匙串訪問中看到,兩者是一一對應的。用簡單粗暴的話說就是:用這個證書來簽名你的應用,以驗證你這個應用到底有什麼權限(真機調試呢還是發布呢),確保了應用的安全性和合法性。
而目前為止,蘋果提供了三種簽名方式
(1)Ad-hoc:可以進行真機調試和內測,只要你知道了那些設備的UDID(設備唯一標識符)即可。
(2)In-house:企業賬號專用。
(3)App-Store:發布到App Store。
【授權文件 Provisioning Profile】
有時候也稱為配置文件。授權文件是對iOS設備的授權,文件內主要記錄了三樣東西:App ID(Bundle Identifier)、設備的唯一標識符(UDID)、和證書。用一句話說就是:使被授權的設備可以安裝或調試 授權文件中記錄的App ID對應的程序。在開發者網站上創建授權文件的時候會選擇App ID,UDID。同樣對於兩種證書,也有兩種配置文件:開發授權文件(Developer Provisioning Profile)和發布授權文件(Distribution Provisioning Profile)。
在真機調試或者發布的時候,也需要在Build Setting-->Code Signing-->Provisioning Profile選中對應的授權文件。真機調試的過程其實就是一個檢查匹配的過程:檢查當前App的Bundle Identifier和授權文件中的App ID是否匹配;檢查程序的代碼簽名和授權文件中包括的證書是否匹配;檢查當前運行設備的UDID和授權文件中寫入的Device ID是否一致;只有成功完成匹配後,才能成功的運行。詳細說明請參考《iOS開發Provionsioning Profile解析》。
【設備唯一標識符 UDID 】
使用該標識符可以區分每一台唯一的iOS設備。可通過Xcode-->Window-->Device來獲取。
【開發者賬號】
作為一個普通的開發者,還是建議去買一個開發者賬號,99美元也不算太貴。在Xcode7之後其實不需要開發者賬號就可以免證書調試了。但是發布應用到App Store就必須要賬號了。可能我們在公司工作,會有公司的證書,但是我們自己私下開發,就必須要使用自己的賬號了。況且要用一些高級的功能,比如推送、應用內購買j就必須要賬號了。
我下面開始來講解整個發布流程:
(1)打開鑰匙串訪問-->證書助理-->從證書頒發機構請求證書,如下圖所示:
。
在用戶電子郵件地址中寫入你想要收到的郵件地址,我一般寫Apple ID的郵箱,下面的常用名稱隨意即可,你也可以寫入你的名字,最好是英文。下面的CA電子郵件地址默認“必需”不用管。最後選擇"存儲到磁盤"即可。
保存到電腦上以後,是如下的一個文件:
。
可以看到這是一個CSR文件,也就是證書請求(簽名)文件,我們可以這個文件去蘋果的開發者網站上請求一個證書。
(2)進入蘋果開發者網站: https://developer.apple.com/ 。然後選擇Account進入,需要你輸入你的Apple ID和密碼進入。最近我發現這個頁面又發生了改版。進入後如圖所示:
。
配置證書、授權文件選擇左邊那個Certificates,Identifier &Profiles .等到可以發布的時候選擇右邊的iTunes Connect. 現在我們選擇左邊的Certificates進入:
。
左邊導航欄列出了我們要配置的所有東西。Certificates就是證書,Idetifiers就是配置我們的App ID,Devices就是添加我們的真機調試設備,最後的Provisioning Profile就是配置授權文件。
(3)首先配置證書:
可以看到需要我們上傳Certificate Signing Request文件,就是我們剛剛從鑰匙串訪問中導出的CSR文件,
。
如果是要開發證書,就選擇Development-->iOS App Development. 如果是要發布證書,選擇下面的Pruduct-->App Store and Ad Hoc. 兩者的操作其實是一樣的,我這裡以配置開發證書為例。點擊Continue下一步,
。
需要我們創建CSR文件,蘋果也給出了如何創建CSR文件的步驟,應該和我講的是一樣的,因為我們已經創建好了,所以直接Continue下一步:
。
直接選擇我們的CSR文件進去即可。Continue下一步即可,
。
此時表示證書已經創建完成了,點擊Download下載到電腦上。此時的這個開發證書就可以讓我們進行真機調試了。我們再進行同樣的步驟,在上面選擇一個發布證書,創建完成後下載到本地。
。
如圖,後綴是.cer表示是一個證書,很明顯,左邊的是開發證書,右邊的是發布證書。我們分別雙擊進行安裝。安裝完成後,我們可以進入鑰匙串訪問查看,
。
可以看到我們的兩個證書都已經成功安裝了。
(4)我們創建一個新項目,作為我們調試和發布的項目,名稱為MyFirstApp. 當然,現在這個是個空項目,就算提交審核了也是不會發布的。在這只是做一個演示。一個App發布的最低的要求就是要有icon圖標,否則打包是會失敗的。所以我需要導入圖標。在等下提交審核的時候還需要App在各個屏幕下的截圖。對於這兩者的資源,都要提前准備好。僅僅作為一個測試,我把這個資源已經准備好了,https://github.com/chenyufeng1991/iOS-ScreenshotsAndIcon- 。對於想快速測試這個流程,又不想麻煩的去生成圖標截圖的,可以先暫時使用這裡面的資源。
(5)應用開發完成後,我們繼續去開發者網站上面配置App ID,選擇左側導航欄-->Identifier-->App IDs,這裡可以看到我們創建的所有的應用的ID . 此時我們新建一個:
.
這裡主要要填入兩個地方,在 App ID Description中填入這個app的簡單描述,只要不輸入@,&等這些非法字符即可。在下面的Budle ID 中填入你應用的Bundle Identifier,比如我這裡的Bundle ID就是:com.chenyufengweb.MyFirstApp.
最下面你還可以選擇需要哪些應用服務,比如推送,Apple Pay,iCloud等服務,如果你的應用使用到,都需要勾選上。點擊Continue下一步,
。
這一步是讓你確認App中包含的信息,確定無誤的話點擊Register注冊這個app。完成後,就可以在列表中看到我們注冊完成的應用了,
。
(6)現在需要來注冊我們需要真機調試的設備了。可以看到這裡可以注冊的設備有Apple TV,Apple Watch,iPad,iPhone,iPod這幾種,表示你的應用可以在這些設備上真機調試。
.
Name可以輸入這台設備的名稱,可以任意取。UDID輸入唯一標識符,可以用上面提到的方式去獲取。
。
可以看到我們注冊的開發者賬號可以添加各個類型的設備各100台。對於個人開發者來說已經足夠了。上面的信息確認無誤後,點擊Register注冊即可。注冊完成後,列表中就會顯示出該賬號下的所有設備:
。
(7)最後我們來配置授權文件,點擊manually generate profiles手動創建一個授權文件,
。
。
在這裡,我們可以看到,授權文件和證書一樣,也是分為開發的和發布的。如我上面所說,授權文件會把App ID、設備UDID、證書都打包進來。我這裡以開發的為例進行創建。選擇iOS App Development,點擊Contunue下一步:
。
在這一步選擇我上面創建的App ID。點擊Continue下一步:
。
這一步是選擇證書,因為是一一對應的,所在在這裡只能選擇開發證書,而不能選擇發布證書,點擊Continue下一步,
。
這裡是要選擇真機調試的設備,只有選中的設備才能調試該應用。
。
在這一步是為這個授權文件取一個名字,最好在名字裡面說明這是開發的還是發布的,便於以後區分。點擊Continue下一步。
。
創建完成後,點擊Download下載。對於發布授權證書,也按同樣的方式進行創建。兩個文件下載完成後,如下所示:
。
直接雙擊這兩個文件,授權文件就會自動安裝到Xcode中去。
(8)來到我們Xcode的項目中,來配置證書和授權文件。
進入Build Setting-->Code Signing-->Code Signing Identity,在Debug中選擇開發證書,在Release中選擇發布證書。(想要看電腦上安裝了哪些證書,可以去鑰匙串訪問哦)。
在下面的Provisioning Profile中選擇授權文件,Debug處選擇開發授權文件,Release處選擇發布授權文件。配置完後如下所示:
。
經過以上步驟,我們就可以在指定設備上運行該應用了。
(9)我們的應用已經開發完畢,現在要提交到App Store了。要用到的工具就是iTunes Connect. 再次進入蘋果開發者網站,點擊iTunes Connect.進入:
。
進入後的主頁面如下,
。
可以看到在iTunes Connect.中可以管理我們已經上線或者即將上線的應用。點擊進入“我的App”. 然後點擊左上角的“+”號創建一個新應用,
。
可能你的Name已經被占用了,那就換一個。點擊Create創建。
選擇左上角的App Information,這裡可以簡單配置App的信息,比如右側的Category,表示你App的分類,比如音樂、購物等等,一級分類是必須選擇的。點擊右上角Save保存。
左側第二個Pricing and Availiablity是一些價格和購買信息,我這裡選擇免費。點擊右上角Save保存。
第三個1.0 Prepare for Submission則是一些發布的詳細信息,首先要有不同屏幕上的五張截屏,如果你的應用不適配到iPad上,那麼可以不上傳iPad的截圖。
。
。
同時可以添加這個應用的描述,關鍵字,以及支持的網站。下面的Build構建先不用,等下我們會使用Xcode上傳的。
。
同時還要上傳Icon,這裡的Icon必須鑰匙1024*1024的,以及你應用的分級、和你的地址、聯系方法等信息。可以按你的實際情況填寫即可。
。
最下面的位置需要你提供一個測試賬號,也就是使用該賬號可以登錄你的App,並使用所有的功能,方便為蘋果審核。Version Release則是說你想要在審核通過後直接發布還是手動設置時間發布。按你的實際需求設置。然後點擊右上角的Save保存。
(10)在iTunes Connect.上面的設置基本結束了。我們再次回到Xcode中,來打包我們的程序。
此時需要把你的手機連上Xcode或者在調試設備中選擇Generic iOS Device,然後選擇Product-->Archive(如果調試設備選擇了模擬器,則Archive不可點擊)。就會出現如下界面:
。
這裡就是對你的應用程序進行打包。如果我們僅僅只是想要導出.ipa文件,可以直接選擇右側的Export,然後你可以把這個ipa文件放到其他的內測平台上去分發。由於我們就是直接想發布到App Store上面,並且已經在iTunes Connect.上面做好了設置,所以我們直接點擊“Upload to App Store”即可。
.
在這過程中,可能會等的比較久。時候還會提交失敗,因為可能是你程序中的某些問題,或者提交了同一個版本,如下是因為我重復提交了1.0版本,然後報錯了。
。
在成功修復後,就可以再次upload了。成功以後出現如圖界面:
。
此時,我們就把應用成功提交到iTunes Connect.上面了。
(12)再次來到iTunes Connect.中,找到Build的地方,發現已經跟剛才不一樣了。出現了"Select a build before you submit your app",也就是讓我們選擇一個版本提交。點擊後出現如下界面:
.
可以看到我們剛剛upload了兩個版本。比如我選擇2.0(2)進行提交。此時的Build如下:
.
然後點擊Save保存。最後點擊旁邊的“Submit for Review”,也就是提交審核。最後還是會出現一個頁面讓你確認一些信息:
。
其中包括加密確認、顯示第三方內容、和廣告問題。根據實際情況選擇提交。提交成功後,上面就出現了Waiting For Review 等待審核的字樣:
。
等過幾天蘋果審核通過後,你就能發布這款App了。
看一百遍不如去做一次。流程看起來復雜,但是只要去做一次,就會發現其實還是很有邏輯的。希望大家能發布越來越好玩的App。