以無(wú)線方式安裝企業(yè)內(nèi)部應(yīng)用

iOS 支持以無(wú)線方式安裝自定的企業(yè)內(nèi)部應(yīng)用拆融,而無(wú)需使用 iTunes 或 App Store者吁。應(yīng)用的格式必須為 .ipa刀闷,并且使用企業(yè)內(nèi)部預(yù)置描述文件進(jìn)行構(gòu)建根时。無(wú)線安裝要求:
XML 清單文件(本節(jié)已有描述)

可讓設(shè)備訪問(wèn) Apple iTunes 服務(wù)器的網(wǎng)絡(luò)配置

對(duì)于 iOS 7.1 或更高版本,使用 HTTPS

為了安裝應(yīng)用胃珍,用戶使用特殊的 URL 前綴從您的網(wǎng)站上下載清單文件梁肿。您可以通過(guò)短信或電子郵件分發(fā)用于下載清單文件的 URL,或?qū)⑵淝度雱?chuàng)建的另一企業(yè)應(yīng)用中堂鲜。
您負(fù)責(zé)設(shè)計(jì)和托管用于分發(fā)應(yīng)用的網(wǎng)站栈雳。請(qǐng)確定用戶已通過(guò)認(rèn)證(可能是使用基本認(rèn)證或基于目錄的認(rèn)證),并確定網(wǎng)站可通過(guò)內(nèi)聯(lián)網(wǎng)或互聯(lián)網(wǎng)進(jìn)行訪問(wèn)缔莲。您可以將應(yīng)用和清單文件放入隱藏目錄或任何可使用 HTTPS 讀取的位置哥纫。
【注】創(chuàng)建自助服務(wù)門戶時(shí),請(qǐng)考慮在用戶的主屏幕中添加一個(gè) Web Clip痴奏,以便他們可以輕松返回門戶以獲取更多信息蛀骇,如新的配置描述文件、推薦的 App Store 應(yīng)用以及允許他們?cè)?MDM 解決方案中進(jìn)行注冊(cè)读拆。

準(zhǔn)備以無(wú)線方式分發(fā)的企業(yè)內(nèi)部應(yīng)用
為準(zhǔn)備以無(wú)線方式分發(fā)的企業(yè)內(nèi)部應(yīng)用擅憔,請(qǐng)構(gòu)建歸檔版本(.ipa 文件)和用于啟用無(wú)線分發(fā)和應(yīng)用安裝的清單文件。
使用 Xcode 來(lái)創(chuàng)建應(yīng)用歸檔檐晕。使用分發(fā)證書(shū)給應(yīng)用簽名暑诸,并在歸檔中包括企業(yè)內(nèi)部預(yù)置描述文件。有關(guān)構(gòu)建和歸檔應(yīng)用的更多信息辟灰,請(qǐng)?jiān)L問(wèn) iOS 開(kāi)發(fā)者網(wǎng)站Xcode 幫助个榕。

關(guān)于無(wú)線清單文件
清單文件是一個(gè) XML plist 文件,可供 Apple 設(shè)備用來(lái)從您的 Web 服務(wù)器上查找芥喇、下載和安裝應(yīng)用西采。清單文件由 Xcode 創(chuàng)建,使用的是您在共享用于企業(yè)分發(fā)的歸檔應(yīng)用時(shí)所提供的信息继控。
以下欄是必填項(xiàng):
URL:應(yīng)用 (.ipa) 文件的完全限定 HTTPS URL

display-image:57 x 57 像素的 PNG 圖像械馆,在下載和安裝過(guò)程中顯示。指定圖像的完全限定 URL

full-size-image:512 x 512 像素的 PNG 圖像武通,表示 iTunes 中相應(yīng)的應(yīng)用

bundle-identifier:應(yīng)用的包標(biāo)識(shí)符霹崎,與 Xcode 項(xiàng)目中指定的完全一樣

bundle-version:應(yīng)用的包版本,在 Xcode 項(xiàng)目中指定

title:下載和安裝過(guò)程中顯示的應(yīng)用的名稱

僅對(duì)于 iOS 8 中的“報(bào)刊雜志”應(yīng)用冶忱,以下欄必填:
newsstand-image:一張全尺寸 PNG 圖像尾菇,用于顯示在“報(bào)刊雜志”書(shū)架上

UINewsstandBindingEdgeUINewsstandBindingType:鍵必須和“報(bào)刊雜志”應(yīng)用的 info.plist 中的鍵匹配

UINewsstandApp:表示該應(yīng)用是“報(bào)刊雜志”應(yīng)用

樣本清單文件還包含可選鍵。例如,如果應(yīng)用文件太大错沽,并且想要在執(zhí)行錯(cuò)誤檢驗(yàn)(TCP 通信通常會(huì)執(zhí)行該檢驗(yàn))的基礎(chǔ)上確保下載的完整性,可以使用 MD5 鍵眶拉。
通過(guò)指定項(xiàng)目數(shù)組的附加成員千埃,您可以使用一個(gè)清單文件安裝多個(gè)應(yīng)用。

構(gòu)建網(wǎng)站
將這些項(xiàng)目上傳到網(wǎng)站上可供已認(rèn)證的用戶訪問(wèn)的區(qū)域:
應(yīng)用 (.ipa) 文件

清單 (.plist) 文件

您的網(wǎng)站可以是鏈接到清單文件的單個(gè)頁(yè)面忆植。用戶輕點(diǎn) Web 鏈接后會(huì)下載清單文件放可,并觸發(fā)下載和安裝。
以下是示例鏈接:
<a href="itms-services://?action=download-manifest&url=https://example.com/manifest.plist">Install App</a>

請(qǐng)勿添加歸檔應(yīng)用 (.ipa) 的網(wǎng)站鏈接朝刊。載入清單文件時(shí)耀里,設(shè)備會(huì)下載該 .ipa 文件。雖然 URL 的協(xié)議部分是“itms-services”拾氓,但 iTunes Store 并不參與此過(guò)程冯挎。
此外,請(qǐng)確定 .ipa 文件可通過(guò) HTTPS 進(jìn)行訪問(wèn)咙鞍,并且您的站點(diǎn)已使用 iOS 信任的證書(shū)進(jìn)行了簽名房官。如果自簽名證書(shū)沒(méi)有受信任的錨點(diǎn)并且無(wú)法由 iOS 設(shè)備驗(yàn)證,安裝會(huì)失敗续滋。

設(shè)定服務(wù)器 MIME 類型
您可能需要配置 Web 服務(wù)器翰守,讓清單文件和應(yīng)用文件可正確傳輸。
對(duì)于 Server 應(yīng)用疲酌,請(qǐng)將 MIME 類型添加到網(wǎng)頁(yè)服務(wù)的 MIME 類型設(shè)置:
application/octet-stream ipa

text/xml plist

對(duì)于微軟的互聯(lián)網(wǎng)信息服務(wù)器 (IIS)蜡峰,請(qǐng)使用 IIS Manager 在服務(wù)器的“屬性”頁(yè)面中添加 MIME 類型:
.ipa application/octet-stream

.plist text/xml

無(wú)線 iOS 應(yīng)用分發(fā)故障診斷
如果無(wú)線應(yīng)用分發(fā)失敗,并顯示“無(wú)法下載”信息:
請(qǐng)確定應(yīng)用已正確進(jìn)行簽名朗恳。測(cè)試方法是使用 Apple Configurator 2 將它安裝到設(shè)備上湿颅,然后查看是否發(fā)生錯(cuò)誤。

請(qǐng)確定清單文件的鏈接是否正確僻肖,清單文件是否可供網(wǎng)絡(luò)用戶訪問(wèn)肖爵。

請(qǐng)確定 .ipa 文件(在清單文件中)的 URL 是否正確,并且該 .ipa 文件是否可供網(wǎng)絡(luò)用戶通過(guò) HTTPS 訪問(wèn)臀脏。

網(wǎng)絡(luò)配置要求
如果設(shè)備連接到封閉式內(nèi)部網(wǎng)絡(luò)劝堪,那么您必須允許它訪問(wèn)以下站點(diǎn):
https://ax.init.itunes.apple.com使用蜂窩移動(dòng)網(wǎng)絡(luò)下載應(yīng)用時(shí),設(shè)備會(huì)限制其當(dāng)前文件大小揉稚。如果無(wú)法訪問(wèn)此站點(diǎn)秒啦,安裝可能會(huì)失敗。

https://ppq.apple.com設(shè)備會(huì)聯(lián)系此網(wǎng)站搀玖,檢查用來(lái)給預(yù)置描述文件簽名的分發(fā)證書(shū)狀態(tài)余境。

提供更新的應(yīng)用
您自己分發(fā)的應(yīng)用不會(huì)自動(dòng)更新。有新版本時(shí),應(yīng)通知用戶進(jìn)行更新并指導(dǎo)他們安裝應(yīng)用芳来。請(qǐng)考慮讓應(yīng)用檢查更新含末,并在打開(kāi)應(yīng)用時(shí)通知用戶。請(qǐng)確保通知中提供了 itms-services 鏈接即舌。您還可以使用應(yīng)用內(nèi)部的 openURL 來(lái)安裝更新佣盒。
如果想要用戶保留他們?cè)O(shè)備上儲(chǔ)存的應(yīng)用數(shù)據(jù),請(qǐng)確保新版本與要替換的版本使用的捆綁標(biāo)識(shí)符相同顽聂,并告知用戶在安裝新版本之前不要?jiǎng)h除舊版本肥惭。
預(yù)置描述文件過(guò)期之前,請(qǐng)?jiān)L問(wèn) iOS 開(kāi)發(fā)者網(wǎng)站為應(yīng)用創(chuàng)建新描述文件紊搪。對(duì)于首次安裝應(yīng)用的用戶蜜葱,請(qǐng)使用新預(yù)置描述文件創(chuàng)建新應(yīng)用歸檔 (.ipa)。
如果用戶已有該應(yīng)用耀石,您不妨設(shè)定發(fā)布下一個(gè)版本的時(shí)間牵囤,并在該版本中包括新預(yù)置描述文件,這樣用戶在使用應(yīng)用工作時(shí)不會(huì)被打斷滞伟。如果不想這樣做奔浅,您可以僅分發(fā)新的 .mobileprovision 文件,這樣用戶便不必再次安裝該應(yīng)用诗良。新的預(yù)置描述文件會(huì)覆蓋應(yīng)用歸檔中已有的描述文件汹桦。
分發(fā)預(yù)置描述文件自簽發(fā)之日起 12 個(gè)月后過(guò)期。過(guò)期后鉴裹,系統(tǒng)會(huì)刪除描述文件舞骆,應(yīng)用將不會(huì)啟動(dòng)。
您可以使用 MDM 安裝和管理預(yù)置描述文件径荔,然后用戶通過(guò)應(yīng)用更新或使用 MDM 進(jìn)行下載并安裝督禽。
如果您的分發(fā)證書(shū)過(guò)期,應(yīng)用將不會(huì)啟動(dòng)总处,而您需要使用新的分發(fā)證書(shū)來(lái)重新構(gòu)建應(yīng)用狈惫。分發(fā)證書(shū)自簽發(fā)之日起三年內(nèi)有效,或者在您的 Apple Developer Enterprise Program(Apple 開(kāi)發(fā)者企業(yè)級(jí)計(jì)劃)成員資格過(guò)期之前一直有效鹦马,二者以先到者為準(zhǔn)胧谈。若要防止證書(shū)過(guò)期,請(qǐng)確保在成員資格過(guò)期之前先進(jìn)行續(xù)訂荸频。
您可以擁有同時(shí)處于活躍狀態(tài)的兩個(gè)證書(shū)菱肖,并且它們彼此獨(dú)立。第二個(gè)證書(shū)提供了一個(gè)重疊期旭从,讓您能夠在第一個(gè)證書(shū)過(guò)期前更新應(yīng)用稳强。從 iOS Dev Center 請(qǐng)求第二個(gè)分發(fā)證書(shū)時(shí)场仲,請(qǐng)確保不要撤銷第一個(gè)證書(shū)。

證書(shū)驗(yàn)證
用戶首次打開(kāi)應(yīng)用時(shí)退疫,系統(tǒng)會(huì)通過(guò)聯(lián)系 Apple 的 OCSP 服務(wù)器來(lái)驗(yàn)證分發(fā)證書(shū)渠缕。如果證書(shū)已撤銷,應(yīng)用將不會(huì)啟動(dòng)褒繁。為了驗(yàn)證狀態(tài)褐健,設(shè)備必須能夠訪問(wèn) ocsp.apple.com。
OCSP 響應(yīng)會(huì)在設(shè)備上緩存一段時(shí)間(由 OCSP 服務(wù)器指定)澜汤,當(dāng)前為 3 到 7 天之間。在重新啟動(dòng)設(shè)備和緩存的響應(yīng)過(guò)期之前舵匾,將不會(huì)再次檢查證書(shū)的有效性俊抵。如果當(dāng)時(shí)收到撤銷命令,系統(tǒng)將阻止應(yīng)用運(yùn)行坐梯。
【警告】撤銷分發(fā)證書(shū)會(huì)導(dǎo)致使用該證書(shū)簽名的所有應(yīng)用失效徽诲。只有萬(wàn)不得已時(shí)才應(yīng)撤銷證書(shū),比如確定專用密鑰已丟失或確信證書(shū)已遭破解吵血。

示例 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>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末谎替,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蹋辅,更是在濱河造成了極大的恐慌钱贯,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件侦另,死亡現(xiàn)場(chǎng)離奇詭異秩命,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)褒傅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門弃锐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人殿托,你說(shuō)我怎么就攤上這事霹菊。” “怎么了支竹?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵旋廷,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我礼搁,道長(zhǎng)柳洋,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任叹坦,我火速辦了婚禮熊镣,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己绪囱,他們只是感情好测蹲,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著鬼吵,像睡著了一般扣甲。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上齿椅,一...
    開(kāi)封第一講書(shū)人閱讀 51,482評(píng)論 1 302
  • 那天琉挖,我揣著相機(jī)與錄音,去河邊找鬼涣脚。 笑死示辈,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的遣蚀。 我是一名探鬼主播矾麻,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼芭梯!你這毒婦竟也來(lái)了险耀?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤玖喘,失蹤者是張志新(化名)和其女友劉穎甩牺,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體累奈,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡柴灯,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了费尽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赠群。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖旱幼,靈堂內(nèi)的尸體忽然破棺而出查描,到底是詐尸還是另有隱情,我是刑警寧澤柏卤,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布冬三,位于F島的核電站,受9級(jí)特大地震影響缘缚,放射性物質(zhì)發(fā)生泄漏勾笆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一桥滨、第九天 我趴在偏房一處隱蔽的房頂上張望窝爪。 院中可真熱鬧弛车,春花似錦、人聲如沸蒲每。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)邀杏。三九已至贫奠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間望蜡,已是汗流浹背唤崭。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留脖律,地道東北人谢肾。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像状您,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子兜挨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

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