uncategorized

製作iOS in House + Azure Notification Hub 憑證

要製作iOS企業發布憑證,步驟還真是煩瑣,且其中還必須匯出p12檔給Azure Notification Hub,這樣才能讓In House的App也可以順利使用Azure Notification Hub發送Push Message。

這憑證不是屬於Developer用,所以,建議重新申請一組全新的憑證給In House App用

建立CA憑證


先從MAC的鑰匙圈建立一組新的CA憑證,這憑證建立後,記得存放在硬碟中,因為,後續會被廣泛使用

輸入相對應的資訊,記住一定要存放到硬碟,之後.certSigningRequest檔案會一直被用到Apple Developer Center中

  • 產生AAA.certSigningRequest檔案

    建立iOS Certificates (Production)


到Apple Developer Center建立一個in house app production憑證,這邊不選Apple Push Notification service SSL (Sandbox & Production)原因是因為我們還需要建置一個可以發布in house app憑證,Push Notification service是可以被綁訂在這憑證中

按下一步之後,會要求上傳CSR檔案,這時候可以上傳剛剛做的AAA.certSigningRequest檔案

上傳完畢後,就會產生一個ios_distribution.cer,這時候要把這檔案下載儲存起來

  • 產生ios_distribution.cer檔案

    建立APP Identifiers


當憑證建立好,就必須建立憑證和APP Identifiers關係,所謂的Identifiers,可以透過XCode中找到

建立新的iOS App IDS,Description是可以自行定義

下面會需要填入Bundle ID,這邊的Bundle ID,必須跟XCode中Bundle Identifiers值是相同的,當然,可以先定義好這邊Bundle ID再放入XCode的Bundle Identifiers也是可以,而Bundle ID命名規則是com.domainname.appname

最後的App Services記得要開啟Push Notifications,如果這時候沒有開啟也沒關係,後續還是可以再修改的,按下一步後,就可以把這APP ID註冊

開通Apple App Push Notifications


雖然上述我們建立好CA和APP Identifiers,但是,這樣不代表有開通Apple的Push Notifications,點入剛剛建立好的APP Identifiers,會看到Push Notifications還是顯示Configurable,這裡可以設定APP在Development和Distribution不同的憑證,這一點對於後續產生憑證檔案是要上傳到Azure Push Notifications是很重要,可以依照不同憑證決定Push是屬於正式使用還只是測試用

這邊也要上傳一個Certificate,就上傳剛剛的AAA.certSigningRequest

上傳完畢後就會產生一個Apple Push Services的憑證,這個aps.cer憑證必須下載下來

然後在你的Apple Developer平台中的Certificates類型,除了最早建立的iOS Distribution外,又會多一個Apple Push Services

  • 產生aps.cer檔案

    建立Azure Notifications Hub APNS憑證


要建立Azure Notifications與APNS溝通憑證,必須透過剛剛的aps.cer來製作。aps.cer點擊兩下在鑰匙圈建立一組Apple Push Service憑證,並把Apple Push Service憑證輸出一個.p12的檔案

把製作好的.p12檔上傳到Azure Notifications Hub的Notifications Service裡面,因為是要正式發佈使用,所以,Mode要選擇Production

到這一步Azure Notifications Hub與APNS溝通間的憑證已經好了,如果今天沒有Push的需求,開通Apple App Push Notifications建立Azure Notifications Hub APNS憑證這兩個步驟是可以不需要做的

建立iOS Provisioning Profiles


到這一步,就是要先前的憑證和APP Identifiers兩者作連結,一樣地因為是要做企業APP,所以,要選In House

選擇剛剛的APP Identifiers ID

選擇要配發的憑證,這邊要選用使用相同AAA.certSigningRequest建立的憑證

選定好後,下一步就是給定Provisioning Profiles名字,完畢後下載此profile,下載完畢後,記得點擊它安裝

最後,只要在Xcode中找到該專案的Code SigningProvisioning Profiles選擇剛剛的Provisioning Profiles名字就可以

  • 產生BBB.mobileprovision檔案

Cordova在Xcode放入Provisioning Profiles


如果是Cordova專案,發佈到MAC用Xcode時候,如果是在Target的Build Settings去選擇Provisioning Profiles,可能會發生UIDD的錯誤

這時候改用Project的Build Settings指定Provisioning Profiles,就可以

另一種就是都不指定Provisioning Profiles,讓XCode自行選擇,不過,通常發現這樣結果就是APP依舊可以當作In House發佈,但是,Azure Notifications功能會失效,所以,建議手動去指定