總體流程
提交你的應(yīng)用到AppStore是一個(gè)多步驟的過(guò)程:
- 你要登陸到iTunes Connect飘诗,然后創(chuàng)建一條App記錄并輸入一些必要的信息(如果要銷售你的App居凶,還需要填寫收款相關(guān)的信息)。
- 在Xcode里躯喇,用你的發(fā)布證書打包你的代碼并簽名辫封。
- 用Xcode或Application Loader上傳你的App。
- 用iTunes Connect把你的App提交到AppStore廉丽,并且可以跟蹤審核狀態(tài)倦微。
- 等你的App審核通過(guò)后,再用iTunes Connect發(fā)布(設(shè)置用戶可以獲取的日期)正压。
蘋果開(kāi)發(fā)者計(jì)劃
蘋果開(kāi)發(fā)者計(jì)劃是為了讓個(gè)人和組織成為蘋果已知的開(kāi)發(fā)者欣福,用來(lái)開(kāi)發(fā)并發(fā)布App到the App Store, the Apple TV App Store, the Mac App Store, and outside of the Mac App Store。特點(diǎn):
- 加入費(fèi)用99美元一年
- 可訪問(wèn)account和iTunes Connect
- 最大UUID支持?jǐn)?shù):100
- 該計(jì)劃的開(kāi)發(fā)者分為個(gè)人和公司兩種:
- 個(gè)人(Individual):協(xié)作人數(shù)為1人(開(kāi)發(fā)者自己)焦履⊥厝埃“個(gè)人”開(kāi)發(fā)者可以申請(qǐng)升級(jí)“公司”雏逾,可以通過(guò)撥打客服電話(400 6701 855)來(lái)咨詢和辦理。
- 公司(Company):協(xié)作人數(shù)為多人(允許多個(gè)開(kāi)發(fā)者進(jìn)行協(xié)作開(kāi)發(fā)郑临,比個(gè)人多一些帳號(hào)管理的設(shè)置栖博,可設(shè)置多個(gè)Apple ID,分4種管理級(jí)別的權(quán)限)厢洞。申請(qǐng)時(shí)需要填寫公司的鄧白氏編碼(DUNS Number)仇让,這個(gè)可通過(guò)蘋果免費(fèi)申請(qǐng)。
蘋果開(kāi)發(fā)者企業(yè)計(jì)劃是為了讓組織可以開(kāi)發(fā)并發(fā)布企業(yè)版App躺翻,企業(yè)版App不能提交AppStore審核丧叽,直接發(fā)布給用戶安裝。特點(diǎn):
- 加入費(fèi)用299美元一年
- 可訪問(wèn)account公你,不能訪問(wèn)iTunes Connect
- 最大UUID支持?jǐn)?shù):不限制
- 協(xié)作人數(shù):多人
- 企業(yè)賬號(hào)開(kāi)發(fā)的應(yīng)用不能上線App Store踊淳,適合那些不希望公開(kāi)發(fā)布應(yīng)用的企業(yè)。同樣省店,申請(qǐng)時(shí)也需要公司的鄧白氏編碼(DUNS Number)嚣崭。
Code sign(簽名)
將你的App代碼簽名,可以讓操作系統(tǒng)識(shí)別誰(shuí)簽名了你的App懦傍,并且校驗(yàn)自你簽名以后你的App是否被修改過(guò)雹舀。簽名可以保護(hù)你App里的可執(zhí)行代碼,因?yàn)榭蓤?zhí)行代碼被改動(dòng)后簽名就失效了粗俱。注意说榆,資源文件,例如圖片和nib文件寸认,是不能被簽名的签财,所以可以被隨便改動(dòng)。
代碼簽名通過(guò)與App ID,provisioning profile, entitlements結(jié)合,確保了以下幾點(diǎn):
- 你的App是被你或一個(gè)可信的團(tuán)隊(duì)成員構(gòu)建并簽名偏塞。
- 被你或你的團(tuán)隊(duì)簽名的App只能運(yùn)行在指定的開(kāi)發(fā)設(shè)備中唱蒸。
- 你的App只能運(yùn)行在你指定的測(cè)試設(shè)備中。
- 你的App不能使用你未添加過(guò)的應(yīng)用服務(wù)灸叼。
- 只有你可以上傳你的App構(gòu)建版本到 iTunes Connect神汹。
- 一旦你選擇在AppStore外發(fā)布應(yīng)用(僅Mac應(yīng)用), 可以確保應(yīng)用不被其他人修改或重新發(fā)布。
Xcode在構(gòu)建App過(guò)程中會(huì)使用你的簽名標(biāo)識(shí)來(lái)簽名你的App古今。簽名標(biāo)識(shí)包含了蘋果發(fā)布的一對(duì)公鑰私鑰屁魏。這對(duì)公鑰私鑰存儲(chǔ)在你的鑰匙串(keychain)中,并且被加密算法用來(lái)生成簽名捉腥。在你的開(kāi)發(fā)者賬戶(accout)的證書里僅存放了公鑰氓拼。還需要一個(gè)中間證書存放到你的鑰匙串中,它用來(lái)確保你的證書是由一個(gè)證書機(jī)構(gòu)頒發(fā)的。
總之桃漾,簽名過(guò)程需要你的鑰匙串同時(shí)存放簽名標(biāo)識(shí)(公鑰私鑰)和中間證書坏匪。當(dāng)你安裝Xcode時(shí),蘋果的中間證書就被添加到你的鑰匙串中了呈队。你可以通過(guò)Xcode創(chuàng)建你的簽名標(biāo)識(shí)并簽名你的App剥槐。你的簽名標(biāo)識(shí)(私鑰部分)會(huì)被添加到鑰匙串,而相應(yīng)的證書(公鑰部分)則被添加到你的開(kāi)發(fā)者賬戶中宪摧。
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文件:生成證書的過(guò)程中,有一步是需要我們上傳CSR文件的颅崩。為什么必須要上傳它几于?CSR文件是用于換取證書文件(公鑰),導(dǎo)出CSR這個(gè)過(guò)程其實(shí)就是電腦向證書機(jī)構(gòu)申請(qǐng)憑證的過(guò)程沿后。證書是你用電腦制作的并且頒發(fā)給你的電腦的沿彭。但是這臺(tái)電腦是否具有制作證書的能力,就是要這個(gè)CSR文件來(lái)憑證尖滚。CSR從鑰匙串中導(dǎo)出喉刘,具體步驟為:打開(kāi)鑰匙串--鑰匙串訪問(wèn)--證書助理--從證書頒發(fā)機(jī)構(gòu)請(qǐng)求證書--填寫郵箱并保存到磁盤。
當(dāng)你的CSR文件創(chuàng)建時(shí)漆弄,一對(duì)公鑰和私鑰就自動(dòng)生成了睦裳。只不過(guò)私鑰存儲(chǔ)到了你的電腦上。在Mac上撼唾,它默認(rèn)存儲(chǔ)在登陸用戶的鑰匙串中廉邑,并且可以在“Keys”分類下查看。你正要請(qǐng)求的證書則包含了另一半--公鑰倒谷。申請(qǐng)到證書后蛛蒙,下載并雙擊.cer文件,將證書安裝到鑰匙串中渤愁,這樣你的電腦上就有了完整的一對(duì)公鑰私鑰牵祟。
Xcode會(huì)在項(xiàng)目編譯期間使用你的代碼簽名驗(yàn)證,這個(gè)驗(yàn)證是一個(gè)由Apple認(rèn)證過(guò)的公鑰-私鑰對(duì)組成抖格。既然私鑰是存在于我們本地電腦的鑰匙串中诺苹,而Xcode編譯需要公鑰和私鑰,那么豈不是說(shuō)這個(gè)證書申請(qǐng)下來(lái)他挎,只能我們自己的電腦能用嗎筝尾?當(dāng)然不是這樣,當(dāng)同事需要用測(cè)試證書進(jìn)行真機(jī)調(diào)試的時(shí)候办桨,我們可以通過(guò)導(dǎo)出p12給他們使用
p12文件
p12:又稱為個(gè)人信息交換證書筹淫。此證書實(shí)際包含了cer證書對(duì)應(yīng)的公鑰和本地鑰匙串對(duì)應(yīng)的私鑰信息。所以p12包含了公鑰私鑰,我們把p12分發(fā)給團(tuán)隊(duì)其他成員损姜,再配上相應(yīng)的配置文件饰剥,他們就可以正常使用了。
注意:cer文件沒(méi)有包含私鑰摧阅,所以別人的電腦上用此證書時(shí)找不到對(duì)應(yīng)私鑰汰蓉,從而使用不了。在導(dǎo)出p12的時(shí)候是點(diǎn)擊相應(yīng)的證書導(dǎo)出的
Certification(證書)
證書是對(duì)電腦開(kāi)發(fā)資格的認(rèn)證棒卷,每個(gè)開(kāi)發(fā)者帳號(hào)有一套顾孽,分為開(kāi)發(fā)證書和發(fā)布證書兩種。
Developer Certification(開(kāi)發(fā)證書)
安裝在電腦上提供權(quán)限:開(kāi)發(fā)人員通過(guò)設(shè)備進(jìn)行真機(jī)測(cè)試比规。
可以生成副本供多臺(tái)電腦安裝若厚;Distribution Certification(發(fā)布證書)
安裝在電腦上提供發(fā)布iOS程序的權(quán)限:開(kāi)發(fā)人員可以制做測(cè)試版(AdHoc)和發(fā)布版的程序。
可以生成副本供多臺(tái)電腦安裝蜒什;
每種證書都有APNS版本测秸,需要關(guān)聯(lián)具體的AppId(是否支持推送是每個(gè)應(yīng)用具體的配置)。注意APNS版本包含了基礎(chǔ)證書灾常,Xcode只安裝一個(gè)APNS版本即可霎冯。
APNs證書均有有效期的限制,過(guò)期則無(wú)法繼續(xù)推送消息钞瀑。開(kāi)發(fā)證書/生產(chǎn)證書的有效期是1年沈撞。請(qǐng)務(wù)必在證書到期前重新上傳新證書,重新提供導(dǎo)出的p12給JAVA后臺(tái)仔戈,生成的pem給PHP后臺(tái)关串,以保證推送服務(wù)持續(xù)正常工作。
Provisioning Profile(授權(quán)文件)
授權(quán)文件是對(duì)設(shè)備如iPod Touch监徘、iPad晋修、iPhone的授權(quán),文件內(nèi)記錄的是設(shè)備的UDID和程序的AppId凰盔,即:使被授權(quán)的設(shè)備可以安裝或調(diào)試Bundle identifier與授權(quán)文件中記錄的AppId對(duì)應(yīng)的程序墓卦。
開(kāi)發(fā)者帳號(hào)在創(chuàng)建授權(quán)文件時(shí)候會(huì)選擇App Id,(開(kāi)發(fā)者帳號(hào)下App Id中添加户敬,單選)和UDID(開(kāi)發(fā)者帳號(hào)下Devices中添加最多100個(gè)落剪,多選)。
授權(quán)文件分為兩種尿庐,對(duì)應(yīng)相應(yīng)的證書使用:
1)Developer Provisioning Profile(開(kāi)發(fā)授權(quán)文件)
在裝有開(kāi)發(fā)證書或副本的電腦上使用忠怖,開(kāi)發(fā)人員選擇該授權(quán)文件通過(guò)電腦將程序安裝到授權(quán)文件記錄的設(shè)備中,即可進(jìn)行真機(jī)測(cè)試抄瑟。
注意:確保電腦有權(quán)限真機(jī)調(diào)試凡泣,即安裝了開(kāi)發(fā)證書或副本;在開(kāi)發(fā)工具中程序的Bundle identifier和選中使用的授權(quán)文件的App Id要一致;連接調(diào)試的設(shè)備的UDID在選中的授權(quán)文件中有記錄鞋拟。
2)Distribution Provisioning Profile(發(fā)布授權(quán)文件)
發(fā)布授權(quán)文件主要分為三種:
AdHoc:這個(gè)證書一般用在上線蘋果商店前最后一次的調(diào)試骂维,它所用是的證書和配置文件和正式上線商店時(shí)用的證書和配置文件是一樣的,他們的不同點(diǎn)在于贺纲,這個(gè)證書中指定了哪些蘋果設(shè)備(最多100)才能安裝此app航闺,所以一般公司就用打個(gè)AdHoc包,對(duì)設(shè)備上線前做最后一步測(cè)試
AppStore:正式發(fā)布到蘋果商店的證書猴誊,這個(gè)是我們上線時(shí)候用到最多的一種證書潦刃,這個(gè)證書打包出來(lái)的ipa包對(duì)安裝設(shè)備數(shù)量沒(méi)有限制
In House: 這個(gè)證書的創(chuàng)建選項(xiàng)現(xiàn)在的好像只能在企業(yè)賬號(hào)中才能看到,這個(gè)打包出來(lái)的app不能再蘋果商店上線稠肘,對(duì)安裝的設(shè)備數(shù)量也沒(méi)有限制福铅。這個(gè)可以借助一些三方平臺(tái)比如蒲公英、fire實(shí)現(xiàn)方便安裝(掃掃二維碼就能下載很方便的)项阴,當(dāng)然用工具iTools安裝也是可以的