最近開發的一個IOS項目需要不通過將APP發佈到Appstore上直接安裝到客戶手機上,本來覺得蘋果這麼封閉的流程,應該不可以實現的吧,結果竟然還正能實現,這邊主要是利用蘋果自家的瀏覽器safari和itms-services協議,下面介紹下主要步驟和實現過程中遇到的問題。
通過itms-services協議,可以通過safari瀏覽器直接在iOS設備上安裝應用程序。利用這種方式,只要在內網布置一個服務器,測試人員只需要通過測試設備的safari瀏覽器訪問特定的url既可以實現安裝
這邊首先需要將項目打包成ipa文件和生成.plist文件。
一、打包ipa和生成.plist文件具體步驟:
1、在蘋果開發者後臺生成簽名文件,使用developer profile或者adhoc distribution profile這邊注意不能使用distribution profile,因爲這不是發佈到Appstore。
2、生成archive,點擊菜單欄product中的archive選項進行打包
3、在organizer中點擊archive進行distribute,發佈的過程中注意選擇save for enterprise distribution,不然會失敗,完成保存會生成倆文件 .ipa文件和 .plist文件。其中.ipa文件就是應用程序文件, .plist文件是蘋果需要通過itms-services協議訪問的文件。
下面是.plist文件的格式
<?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>http://218.94.107.227:8996/wJob/job.ipa</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>com.qgbes.pjob</string>
<key>bundle-version</key>
<string>1.0.0</string>
<key>kind</key>
<string>software</string>
<key>title</key>
<string>測試APP免Appstore安裝項目</string>
</dict>
</dict>
</array>
</dict>
</plist>
屬性不多,不做具體解釋,這邊只關心一點
<key>url</key>
<string>http://218.94.107.227:8996/wJob/job.ipa</string>
這邊是我們生成的ipa文件存放的位置。
二、現在萬事俱備只欠東風啦,只需要客戶端能夠成功訪問到我們生成的.plist文件即可。
本來覺得和ipa文件一樣,放在服務器上是,訪問一下就OK啦,結果發現,最新版本是不行的,之前確實可以通過http的方式進行訪問plist文件進行安裝,不過現在蘋果規定必須以https的方式進行訪問。
以https方式訪問plist文件的解決方案
1、配置tomat支持https方式訪問
2、利用dropbox分享外鏈進行訪問原始文件
3、利用開源中國的git&osc分享外鏈進行訪問原始文件
說說三種方式,第一種方式:對於只使用http方式訪問來配置的tomcat,本身來改配置代價高,而且沒必要。
第二種方式:dropbox是國外的,而且是要翻牆的,也就是存在不穩定情況,不通用。
第三種方式:國內網站,簡單,穩定
這邊我們也就只是需要訪問個文件,簡單點就在git&osc上放個文件,提供個文件鏈接就OK啦。
OK,通過itms-services協議進行訪問下載吧。
三、打開客戶端safari瀏覽器,輸入
itms-services://?action=download-manifest&url=‘plist文件地址’
這樣就結束啦,反正我這邊是安裝成功啦~~~
總結下注意點
1、簽名要使用developer profile或者adhoc distribution profile,不能使用distribution profile
2、個人開發者證書只能在100個設備中實現無線安裝
3、最新版ios設備支持https方式訪問plist文件(ipa文件是可以通過http方式訪問的)