引用Apple說明:
您可以使用 Apple Developer Enterprise Program(Apple 開發者企> 業級計劃)開發 iOS 和 macOS 應用,對于開發、測試應用以及將> > 其分發給用戶,此計劃提供了完整的流程。您可以通過將應用托管> > 在您創建的安全網站服務器上來分發應用,或通過使用移動設備管> > 理 (MDM) 解決方案或其他應用管理解決方案來進行分發。
參考鏈接: Apple - 創建企業內部應用
一、概念介紹
1、什么是ipa文件?
IPA 既
iPhone application archive
,是 iOS 系統的軟件包,ipa 文件都是使用蘋果的 FairPlayDRM 技術進行加密保護的。每個 ipa 文件都是 ARM 架構的可執行文件以及該應用的資源文件的打包文件,只能安裝在 iPhone,iPod Touch 或 iPad 上。
ipa 文件可以通過修改后綴名為 zip 后,進行解壓縮,查看其軟件包中的內容。
2、什么是OTA?
OTA 即
Over-the-Air
,是 Apple 在 iOS4 中新加的一項技術,目的是讓開發者能夠脫離 Appstore,實現從服務器下載并安裝 iOS 應用。用戶只需要在 iOS 設備的瀏覽器中,打開
itms-services://
協議鏈接,就可以直接安裝App。(注意:此處的安裝是指,個人賬號需要注冊設備,企業賬號無需注冊設備)
3、如何通過OTA安裝?
OTA方式安裝,是通過 WebKit 解析鏈接中的
itms-services://
來實現的。例如:
<a href="itms-services://?action=download-manifest&url=https://coding.net/u/richluisx/p/talent-shop/git/raw/master/manifest.plist">點擊安裝</a>
iOS 瀏覽器會去讀取 manifest.plist 中的信息,如:iOS應用的名稱、版本、安裝地址等。
4、IPA打包方式
打包方式 | 開發者賬號類型 | 發布App Store | 安裝設備 | 證書 |
---|---|---|---|---|
App Store | 公司賬號、個人賬號 | YES | 無限制 | 發布證書 |
Ad Hoc | 公司賬號、個人賬號 | NO | 100 | 發布證書 |
Enterprise | 企業賬號 | NO | 無限制 | 發布證書 |
Development | 公司賬號、個人賬號 | NO | 100 | 開發證書 |
5、Apple開發者賬號類型
賬號類型 | 價格 | 發布AppStore | 安裝設備數量 | 證書類型 |
---|---|---|---|---|
個人賬號 | $99 | YES | 100 | Ad Hoc, App Store |
公司賬號 | $99 | YES | 100 | Ad Hoc, App Store |
企業賬號 | $299 | NO | 無限制 | Ad Hoc, In House |
教育賬號 | $0 | YES | 100 | Ad Hoc, App Store |
二、分發App準備
項目 | 說明 |
---|---|
支持HTTPS的服務器 | 本文選擇coding托管,也可以放到自己的服務器,原理相同 |
ipa文件 | 本文中使用企業簽名的.ipa文件,蒲公英企業簽名服務 |
manifest.plist文件 | 包含.ipa的下載地址、圖片地址 |
icon文件 | (2張)尺寸:512x512、57x57 |
三、生成manifest.plist
1、打開Xcode,Targets選中Generic iOS Device,然后選擇Product,選擇Archive打包。
2、進入Archives,選擇Export,下邊三種方法都可以選。(區別參考1.4)
3、勾選,包含 manifest.plist 文件用于 OTA 安裝。
4、填寫相關信息,生成 manifest.plist 文件。(隨便填寫,后面可以修改)
5、選擇,自動管理簽名,然后導出。
6、獲取到 manifest.plist 文件。
四、上傳服務器
本文使用 coding 服務器來演示,也可以放到自己的服務器中,原理相同。
1、將文件推送到coding倉庫,目錄結構如下
2、獲取.ipa文件下載鏈接
3、獲取57x75、512x512圖片鏈接
4、獲取manifest.plist鏈接,先選擇“原始數據”,然后“復制瀏覽器中的鏈接”
五、修改manifest.plist
1、將第四章的獲取的鏈接,以及App信息等數據,替換到【xxxxx】
標記的對應內容中,然后重新推送到coding遠程倉庫。
<?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>【xxxxx】</string>
</dict>
<dict>
<key>kind</key>
<string>display-image</string>
<key>url</key>
<string>【xxxxx】</string>
</dict>
<dict>
<key>kind</key>
<string>full-size-image</string>
<key>url</key>
<string>【xxxxx】</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>【xxxxx】</string>
<key>bundle-version</key>
<string>【xxxxx】</string>
<key>kind</key>
<string>software</string>
<key>title</key>
<string>【xxxxx】</string>
</dict>
</dict>
</array>
</dict>
</plist>
字段參考:
字段 | 值 | 說明 |
---|---|---|
software-package | https://coding.net/u/richluisx/p/talent-shop/git/raw/master/talent-shop.ipa |
.ipa 安裝包地址 |
display-image | https://coding.net/u/richluisx/p/talent-shop/git/raw/master/talent-logo.512x512.png |
.57x57 圖片地址 |
full-size-image | https://coding.net/u/richluisx/p/talent-shop/git/raw/master/talent-logo.57x57.png |
.512x512 圖片地址 |
bundle-identifier | com.xxx.xxx | 包標識 |
bundle-version | 1.2.1 | 版本號 |
title | 達人店 | 應用名稱 |
六、生成下載App的html
1、通過<a>
標簽,跳轉itms-services
協議鏈接的方式,來下載安裝App。
OTA安裝協議參考:
itms-services://?action=download-manifest&url=【替換為 manifest.plist 文件地址】
示例代碼:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>達人店App下載</title>
</head>
<body>
<a href="itms-services://?action=download-manifest&url=https://coding.net/u/richluisx/p/talent-shop/git/raw/master/manifest.plist">點擊安裝</a>
</body>
</html>