客戶不給iOS開發者帳號,想要自己上架時需提供的檔案

   客戶必須先建好app ID(或稱bundle ID),選擇要不要推播功能,加入開發者用到device的UDID,然後產生出開發時和上架時會用到的provision,最後再到app ID裡面載下pem後打指令產生push server上面用的pem。每個檔案詳細說明如下:

1.開發者p12:有兩個
   分別是development用的跟distribution用的,一般來說客戶不給開發者帳號的都是公司帳戶,所以提  供的p12格式會像這樣,develop像是:developmentName.p12,distribution會長得像是companyName.p12。p12點兩下加入keychain,名稱前方要有三角形才是對的。

2. provision:有三個
a. provision  for development (例:appDev.mobileprovision)
b. provision  for distribution AdHoc (例:appAdHoc.mobileprovision)
c. provision  for distribution APP Store (例:appAppstore.mobileprovision)
3.推播設定檔案:有兩個,下載後需要打指令產生
a.push for development ( 例:apns_dev.pem)
b.push for distribution (例:apns_pro.pem)
指令如下
比如說要建立development 用的pem,要先有 apns-dev-cert.p12    apns-dev-key.p12

 openssl pkcs12 -clcerts -nokeys -out apns-dev-cert.pem -in apns-dev-cert.p12  
 openssl pkcs12 -nocerts -out apns-dev-key.pem -in apns-dev-key.p12  
 openssl rsa -in apns-dev-key.pem -out apns-dev-key-noenc.pem  
 cat apns-dev-cert.pem apns-dev-key-noenc.pem > apns-dev.pem  

然後再做一次 apns_dis 的
(需注意同一個bundle id 只可以設定一個provision,設定兩個以上的話,推播會收不到)

最後再說明一次,開發者拿到p12 還有 bumdle id 名稱,就可以開始開發了
開發時用deveopment的provision 就可以把檔案builld 到允許的device裡,要測推播就把客戶給的pem傳到push server裡,就可以測試推播了。

程式寫完要給客戶測試,包成ipa後可以用testflight,也可以自己架個Adhoc的server。
客戶檢查後都ok,準備要上架了,這時要請客戶在iTune connect裡面建APP,打好一切資料,狀態變成waiting for upload以後。

然後分為兩種情況走下去:
一種是要給程式碼給客戶,那就把程式碼打包給客戶,客戶那邊使用Xcode Archive上架。

如果程式碼不用客戶,只需給ipa的話
用上架用的provision包出ipa,把ipa丟給客戶。客戶一般都會用Application Loader 上架。

補充說明:
很少有客戶會不給開發者帳號要自己上架的,我遇過的只有XX協會、XX市政府而已,他們的開發者帳號裡面有10~20個APP,同時有好幾個外包公司在執行他們的案子,為了怕外包公司之間彼此打架,所以統一都不給開發者帳號,而是由自己的資訊人員來處理app管理事宜。

2 則留言:

Unknown 提到...

有個問題想請教一下版主

最後提到的兩種辦法

第二個辦法是客戶那邊要給我們distribution 憑證和他們的p12檔讓我們用xcode去設定code sign然後再包出ipa檔嗎?

就是福氣啦 提到...

沒有錯,給客戶ipa以後他們用Application Loader就可以上架了