uncategorized

讓iOS app能在企業內部上架

iOS企業內部APP上架與一般App上架最大不同在於可以省掉Apple官方的審核機制,但是不代表企業App就可以隨意開發,這只是意味著把App審核權交到企業人員身上。而企業內APP另一個好處就是可以自己建置自己的企業Store,然後把內部開發APP都放到企業Store的網站提供給企業員工下載。不過要達到這目地錢,你必須先完成下面幾個步驟,才有辦法實現

申請Apple企業帳號和憑證


自己公司必須跟Apple購買企業帳號,一年大約299美金,每年必須續約。有了帳號之後,還必須建立企業In House憑證,建立方式可以參考 製作iOS in House + Azure Notification Hub 憑證 說明

設定iOS Info


Xcode中打開App專案,選到Info的標籤中的URL Type

然後,設定其中的屬性資料

  • identifier : 這邊設定跟Bundle identifier名稱一樣
  • URL Schemes : 替App取一個獨一無二的名稱,主要是為了讓後續外部程式可以喚醒你的App

我這邊使用的是Cordova專案,所以,其他就可以先暫時不設定

設定Archive屬性


以上設定完成後,再來就是進行app Archive的設定,在Archive之前它會先編譯專案,如果編譯成功才會走下一步

因為我們要做企業上架,所以,不需要選擇Upload to App Store,直接選Explot就可以

選擇Explot後,這邊當然是選擇Save for Enterprise Deployment

之後會跳出account,這邊記得要選擇有做過企業憑證的Account,不然無法簽入憑證的,然後,你可以選擇你要Support的Device

然後到了設定manifest屬性,這部分很重要,不然到時候會出現問題

設定Name的名稱,必須跟App URL最後的.ipa檔名要一樣,換句話說,如果你的Name設定為ASDF,你的.ipa檔名也要設定成ASDF.ipa,不然manifest會抓不到這個檔案下載。剩下的Display Image URL & Full Size URL部分,有規定圖片的大小要分別是57x57 & 512x512,其檔案格式務必與提示一樣,所以,只需要把這些相關圖檔放到可被網路聯結的位置就可以


操作完畢後就會Archive兩個檔案,分別是.ipa & .plist,在自己建立的App Store的Web Site中的Hypelink則是指向.plist檔案,在.plist檔中的格式如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>items</key>
<array>
<dict>
<key>assets</key>
<array>
<dict>
<key>kind</key>
<string>software-package</string>
<key>url</key>
<string>https://qqq.qq/AAAA.ipa</string>
</dict>
<dict>
<key>kind</key>
<string>display-image</string>
<key>url</key>
<string>https://www/qq.jpg</string>
</dict>
<dict>
<key>kind</key>
<string>full-size-image</string>
<key>url</key>
<string>https://www/qq2.jpg</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>ios.cordova.XXX</string>
<key>bundle-version</key>
<string>1.0.0</string>
<key>kind</key>
<string>software</string>
<key>title</key>
<string>XXX</string>
</dict>
</dict>
</array>
</dict>
</plist>

其中,software-package會指向設定的.ipa檔案位置