讓 Safari 能從自家網站安裝企業版 iOS Apps (Enterprise Apps) 的設定筆記
工作需求,已經使用企業開發者帳號 (Apple Developer Enterprise Program) 包成 *.ipa (IOS App 安裝檔),要將該 ipa 檔案放置到我們自己的網站伺服器,iOS 使用者能夠透過該網站連結,直接下載並且安裝該 App 的環境設定筆記。
準備檔案
- .ipa,最後包裝後的 ipa binary file
- .plist,描述 app 安裝資訊,參考下節
- .png/.jpeg,APP icon 圖檔,準備 57x57 以及 512x512,在 .plist 設定圖檔位置
設定 MIME types
- .ipa ->
application/octet-stream
- .plist ->
text/xml
由於我們檔案放在 AWS S3 上,因此在上傳 .ipa & .plist 兩個檔案時,必須修改其 Metadata,新增 header CONTENT-TYPE
設定檔案的 MIME types。
安裝資訊 plist 內容
參考 [1],複製以下資料另存檔案為 *. plist,注意檔案格式必須是 UTF-8 without BOM:
<plist version="1.0">
<dict>
<!-- array of downloads. -->
<key>items</key>
<array>
<dict>
<!-- an array of assets to download -->
<key>assets</key>
<array>
<!-- software-package: the ipa to install. -->
<dict>
<!-- required. the asset kind. -->
<key>kind</key>
<string>software-package</string>
<!-- optional. md5 every n bytes. -->
<!-- 選擇性,設定 Chunk 大小,例如 10485760 表示 10 MB,ipa 檔案每 10 MB 就會有一個 md5 -->
<!-- will restart a chunk if md5 fails. -->
<key>md5-size</key>
<integer>10485760</integer>
<!-- optional. array of md5 hashes. -->
<!-- 選擇性,若有設定 Chunk 大小,根據檔案切分成 n 個 Chunk,就有 n 個 MD5。若沒有設定 Chunk,則填整個檔案的 md5 -->
<key>md5s</key>
<array>
<string>41fa64bb7a7cae5a46bfb45821ac8bba</string>
<string>51fa64bb7a7cae5a46bfb45821ac8bba</string>
</array>
<!-- required. the URL of the file to download. -->
<!-- 必須,ipa 檔案位置 -->
<key>url</key>
<string>http://www.example.com/apps/foo.ipa</string>
</dict>
<!-- display-image: the icon to display during download. -->
<dict>
<key>kind</key>
<string>display-image</string>
<!-- optional. icon needs shine effect applied. -->
<!-- 選擇,ICON Shine/Gloss 效果是否開啟-->
<key>needs-shine</key>
<true />
<key>url</key>
<string>http://www.example.com/image.57×57.png</string>
</dict>
<!-- full-size-image: the large 512×512 icon used by iTunes. -->
<dict>
<key>kind</key>
<string>full-size-image</string>
<!-- optional. one md5 hash for the entire file. -->
<key>md5</key>
<string>61fa64bb7a7cae5a46bfb45821ac8bba</string>
<key>needs-shine</key>
<true />
<key>url</key>
<string>http://www.example.com/image.512×512.jpg</string>
</dict>
</array>
<key>metadata</key>
<dict>
<!-- required -->
<!-- 必須,可以用 7-zip 解開 ipa,從中找到 Info.plist 來看 -->
<key>bundle-identifier</key>
<string>com.example.fooapp</string>
<!-- optional (software only) -->
<key>bundle-version</key>
<string>1.0</string>
<!-- required. the download kind. -->
<key>kind</key>
<string>software</string>
<!-- optional. displayed during download; typically company name -->
<!-- 選擇,下載時顯示,通常填公司名稱 -->
<key>subtitle</key>
<string>Apple</string>
<!-- required. the title to display during the download. -->
<!-- 必須,下載時顯示 -->
<key>title</key>
<string>Example Corporate App</string>
</dict>
</dict>
</array>
</dict>
</plist>
- md5 可以不設定,但會少一層檢查機制,用戶端將無法驗證檔案是否正確
建立下載連結
.ipa 以及 .plist 都已上傳到網路伺服器後,設定並修改下載連結,使用 Safari 點擊該連結時,便會跳出系統安裝訊息;
<a href="itms-services://?action=download-manifest&url=https://example.com/manifest.plist">Install APP</a>
請注意 iOS7 以後,限制 plist 位置必須是 HTTPS 連線,否則會出現憑證不合無法下載安裝的錯誤。
從網路上查到,使用自己簽署憑證 (Self-signed certificate) 的 HTTPS 連線,若使用者沒有安裝該自己簽署的憑證,還是無法安裝 App,比較簡單的方式是直接找 CA 幫忙簽張憑證設定 HTTPS。
沒有留言: