前言
本人公司開發(fā)的.ipa
發(fā)布于 AppStore 和自己的服務(wù)器上丰介。但是自己卻一直沒時間利用公司的資源進行研究∠保現(xiàn)在趕緊趁熱打鐵橙垢,記錄一下柜某,以便以后查閱喂击。
在此之前翰绊,在網(wǎng)上查閱了相關(guān)資料并整理了一下加以完善更正监嗜。
背景
網(wǎng)上說Xcode 6
之后版本導(dǎo)出企業(yè).ipa
包需要手動添加.plist
文件裁奇,本人今天親自測試了一遍,發(fā)現(xiàn)Xcode 7
之后又可以配置生成的课幕。在這里我按照我的流程走一遍乍惊。
IPA打包
- 在工程中選擇
Product
-Archive
進入打包界面 - 選擇
Export
進入打包方式選擇界面 - 選擇
Save for Enterprise Deployment
選項润绎,Next
-
選擇對應(yīng)的企業(yè)賬號呢蛤,然后繼續(xù)即可
- 接下來是對安裝設(shè)備的要求選擇其障,默認選擇所有設(shè)備励翼。第二個選項是指定特定類型設(shè)備方可安裝汽抚。我們使用默認第一項造烁,Next
- 之后的界面是對應(yīng)用的二次確認,確保APP配置準確無誤敞葛。在窗口的左下方有一個
Include manifest for over-the-air installation
与涡。該選項表示是否在生成.ipa
文件的同時生成.plist
文件驼卖,我們勾選上酌畜,Next
over-the-air
: OTA 是蘋果在iOS4
中新增的一項功能恳守,目的是讓企業(yè)用戶能夠在脫離Apple App Store
的情況下通過網(wǎng)頁無線發(fā)布 iOS 應(yīng)用催烘;簡單來講就是在Safari
中點擊一個鏈接就可以在iPhone或iPad上下載并安裝應(yīng)用(目前很多越獄軟件都是使用的這種發(fā)布方式)伊群。 - 接下來配置
.plist
文件,填寫完之后崇棠,Export導(dǎo)出.ipa
包和相應(yīng)的.plist
文件(建議將生成的.plist
文件命名同APP名一致枕稀,方面后期管理)
構(gòu)建網(wǎng)站
必備條件
需要購買一個蘋果的企業(yè)版證書,價格$299/年。指南
-
網(wǎng)站需要支持HTTPS協(xié)議匕垫,用于訪問下載
.plist
文件這里有兩種辦法:
- 一種是購買SSL證書或者免費申請SSL證書;
- 另一種是將
.plist
文件托管在第三方上面寞秃,利用第三方支持的HTTPS進行訪問下載春寿;
使用OSChina的代碼托管绑改。訪問OSChina厘线,添加一個項目造壮;然后用git或svn客戶端將.plist
文件提交到版本庫中耳璧;最后在瀏覽器中訪問項目中的.plist
文件旨枯,查看原始數(shù)據(jù)召廷,即可獲得plist的https下載地址先紫。
步驟
1.將.plist
文件與.ipa
文件上傳至服務(wù)器供用戶訪問
2.創(chuàng)建一個包含如下代碼的網(wǎng)頁遮精,用戶輕點 Web 鏈接后會下載.plist
文件本冲,并觸發(fā)下載和安裝檬洞。
<a href="itms-services://?action=download-manifest&url=https://example.com/manifest.plist">Install App</a>
3.配置服務(wù)器MIME
類型
您可能需要配置 Web 服務(wù)器添怔,讓.plist
文件和.ipa
文件可正確傳輸广料。
對于
OS X Server
,請將MIME
類型添加到 Web 服務(wù)的MIME
類型設(shè)置:
- application/octet-stream ipa
- text/xml plist
對于微軟的互聯(lián)網(wǎng)信息服務(wù)器 (IIS)购桑,請使用
IIS Manager
在服務(wù)器的“屬性”頁面中添加MIME
類型:
- .ipa application/octet-stream
- .plist text/xml
【警告】撤銷分發(fā)證書會導(dǎo)致使用該證書簽名的所有應(yīng)用失效屏积。只有萬不得已時才應(yīng)撤銷證書元旬,比如確定專用密鑰已丟失或確信證書已遭破解。
拓展區(qū)
關(guān)于無線清單文件(.plist
文件)
清單文件是一個XML plist 文件
穆端,可供 Apple 設(shè)備用來從您的 Web 服務(wù)器上查找体啰、下載和安裝應(yīng)用。清單文件由 Xcode 創(chuàng)建仅偎,使用的是您在共享用于企業(yè)分發(fā)的歸檔應(yīng)用時所提供的信息品姓。
以下欄是必填項:
-
URL
:應(yīng)用 (.ipa) 文件的完全限定 HTTPS URL -
display-image
:57 x 57 像素的 PNG 圖像镀岛,在下載和安裝過程中顯示椭豫。指定圖像的完全限定 URL -
full-size-image
:512 x 512 像素的 PNG 圖像裸扶,表示 iTunes 中相應(yīng)的應(yīng)用 -
bundle-identifier
:應(yīng)用的包標識符餐塘,與 Xcode 項目中指定的完全一樣 -
bundle-version
:應(yīng)用的包版本需纳,在 Xcode 項目中指定 -
title
:下載和安裝過程中顯示的應(yīng)用的名稱
樣本清單文件(下面給出)還包含可選鍵。例如,如果應(yīng)用文件太大,并且想要在執(zhí)行錯誤檢驗(TCP 通信通常會執(zhí)行該檢驗)的基礎(chǔ)上確保下載的完整性昙啄,可以使用 MD5 鍵梳杏。
通過指定項目數(shù)組的附加成員,您可以使用一個清單文件安裝多個應(yīng)用。
示例 iOS 應(yīng)用清單文件
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<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. will restart a chunk if md5 fails.-->
<key>md5-size</key>
<integer>10485760</integer>
<!-- optional. array of md5 hashes for each "md5-size" sized chunk.-->
<key>md5s</key>
<array>
<string>41fa64bb7a7cae5a46bfb45821ac8bba</string>
<string>51fa64bb7a7cae5a46bfb45821ac8bba</string>
</array>
<!-- required. the URL of the file to download.-->
<key>url</key>
<string>https://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. indicates if icon needs shine effect applied.-->
<key>needs-shine</key>
<true/>
<key>url</key>
<string>https://www.example.com/image.57x57.png</string>
</dict>
<!-- full-size-image: the large 512x512 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>https://www.example.com/image.512x512.jpg</string>
</dict>
</array>
<key>metadata</key>
<dict>
<!-- required -->
<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>
蘋果官方相關(guān)文檔
以無線方式安裝企業(yè)內(nèi)部應(yīng)用
關(guān)于正確提取.plist
文件下載地址姿勢
在評論區(qū)中靖诗,有朋友問及到關(guān)于.plist
文件的下載地址不正確問題郭怪,這里提供幾種方式:
1、在自己的服務(wù)器部署.plist
時刊橘,直接提供服務(wù)器下載地址即可
2、將.plist
文件部署在github上時浓冒,可以在進入.plist
詳細界面场梆,點擊RAW
按鈕獲取正確的地址
3定嗓、另外七牛也是一個不錯的選擇恃逻,我們可以將
.plist
文件上傳到七牛上面矛市,需要配置ssl證書。
部署下載頁面方式
1墩衙、方式一:進入下載頁面之后點擊安裝APP
按鈕之后才能下載安裝
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<metahttp-equiv="Content-Type"content="text/html; charset=utf-8"/>
<title>應(yīng)用名字</title>
</head>
<body>
<h1style="font-size:80pt">如果點擊無法下載安裝于个,請復(fù)制超鏈接到瀏覽器中打開<h1/>
<h1style="font-size:100pt">
<a title="iPhone" href="itms-services://?action=download-manifest&url=https://example.com/manifest.plist">安裝APP</a><h1/>
</body>
</html>
2、方式二:進入下載頁面之后自動下載安裝
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<metahttp-equiv="Content-Type"content="text/html; charset=utf-8"/>
<title>應(yīng)用名字</title>
<script>
var url ="https://example.com/manifest.plist";
window.location ="itms-services://?action=download-manifest&url="+ url;
</script>
</head>
<body>
</body>
</html>
3、方式三:通過iOS應(yīng)用內(nèi)安裝
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms-services://?action=download-manifest&url=https://example.com/manifest.plist"]];
4、方式四:終極大招癞松,直接使用第三方托管平臺(推薦兩個自己常用平臺)
- fir.im - 免費應(yīng)用內(nèi)測托管平臺|iOS應(yīng)用Beta測試分發(fā)|Android應(yīng)用內(nèi)測分發(fā)
- 蒲公英 - 免費的應(yīng)用托管平臺|App應(yīng)用眾測分發(fā)
- TestFlight Beta Testing - App Store - Apple Developer
安裝失敗原因
利用企業(yè)證書打包部署的 ipa 安裝有可能存在安裝失敗的情況。一般的失敗的原因可以查閱iOS應(yīng)用安裝失敗原因排查
再一次感謝您花費時間閱讀這篇文章!
微博: @Danny_呂昌輝
博客: SuperDanny