iOS開發(fā)企業(yè)版ipa分發(fā)(In-House模式)記錄

前言

本人公司開發(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打包

  1. 在工程中選擇Product-Archive進入打包界面
  2. 選擇Export進入打包方式選擇界面
  3. 選擇Save for Enterprise Deployment選項润绎,Next
    打包方式
  4. 選擇對應(yīng)的企業(yè)賬號呢蛤,然后繼續(xù)即可


    選擇開發(fā)者賬號
  5. 接下來是對安裝設(shè)備的要求選擇其障,默認選擇所有設(shè)備励翼。第二個選項是指定特定類型設(shè)備方可安裝汽抚。我們使用默認第一項造烁,Next
    安裝設(shè)備要求
  6. 之后的界面是對應(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ā)布方式)伊群。

  7. 接下來配置.plist文件,填寫完之后崇棠,Export導(dǎo)出.ipa包和相應(yīng)的.plist文件(建議將生成的.plist文件命名同APP名一致枕稀,方面后期管理)
    配置plist文件

構(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-image57 x 57 像素的 PNG 圖像镀岛,在下載和安裝過程中顯示椭豫。指定圖像的完全限定 URL
  • full-size-image512 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按鈕獲取正確的地址

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、方式四:終極大招癞松,直接使用第三方托管平臺(推薦兩個自己常用平臺)

  1. fir.im - 免費應(yīng)用內(nèi)測托管平臺|iOS應(yīng)用Beta測試分發(fā)|Android應(yīng)用內(nèi)測分發(fā)
  2. 蒲公英 - 免費的應(yīng)用托管平臺|App應(yīng)用眾測分發(fā)
  3. TestFlight Beta Testing - App Store - Apple Developer

安裝失敗原因

利用企業(yè)證書打包部署的 ipa 安裝有可能存在安裝失敗的情況。一般的失敗的原因可以查閱iOS應(yīng)用安裝失敗原因排查


再一次感謝您花費時間閱讀這篇文章!

微博: @Danny_呂昌輝
博客: SuperDanny

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末跋核,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌旱眯,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件渴逻,死亡現(xiàn)場離奇詭異雹洗,居然都是意外死亡旦签,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門搅吁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來享甸,“玉大人束凑,你說我怎么就攤上這事摩瞎。” “怎么了半开?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵纠永,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任送火,我火速辦了婚禮拳话,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘种吸。我一直安慰自己弃衍,他們只是感情好,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布坚俗。 她就那樣靜靜地躺著镜盯,像睡著了一般。 火紅的嫁衣襯著肌膚如雪猖败。 梳的紋絲不亂的頭發(fā)上形耗,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天,我揣著相機與錄音辙浑,去河邊找鬼激涤。 笑死,一個胖子當著我的面吹牛判呕,可吹牛的內(nèi)容都是我干的倦踢。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼侠草,長吁一口氣:“原來是場噩夢啊……” “哼辱挥!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起边涕,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤晤碘,失蹤者是張志新(化名)和其女友劉穎褂微,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體园爷,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡宠蚂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了童社。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片求厕。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖扰楼,靈堂內(nèi)的尸體忽然破棺而出呀癣,到底是詐尸還是另有隱情,我是刑警寧澤弦赖,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布项栏,位于F島的核電站,受9級特大地震影響蹬竖,放射性物質(zhì)發(fā)生泄漏忘嫉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一案腺、第九天 我趴在偏房一處隱蔽的房頂上張望庆冕。 院中可真熱鬧,春花似錦劈榨、人聲如沸访递。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拷姿。三九已至,卻和暖如春旱函,著一層夾襖步出監(jiān)牢的瞬間响巢,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工棒妨, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留踪古,地道東北人。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓券腔,卻偏偏與公主長得像伏穆,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子纷纫,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容