轉自:https://www.cnblogs.com/star91/p/5018995.html
最近公司的項目准備着手宣傳工作了,宣傳手冊上要印制App的下載地址二維碼,但是客戶端應用還未上線,需要一種臨時的方案解決應用分發下載問題,通常ios應用必須通過蘋果應用商店才能下載安裝,但是也可以看到一些應用沒有通過蘋果應用商店也能下載安裝,比如下面的兔兔助手。
兔兔助手_蘋果手機助手_兔兔助手越獄版_兔兔助手官網下載
直接掃碼或者點擊手機頁面的下載鏈接就能下載安裝成功。
其實這種安裝方式是利用企業證書簽名app的部署方式來安裝程序,直接在ios設備上安裝,嚴格來說其實是不符合apple的相關規定的,因此一般只用於內部測試下載安裝,不建議使用這種方式來進行最終的應用分發。下面具體介紹一下實現方式。
准備的文件主要是三個:
- 1、應用程序 后綴(.ipa) 文件(使用了企業級預置描述文件);
- 2、清單 (后綴.plist) 文件(xml格式的清單描述文件)。
- 3、網頁(后綴.html)文件(引導用戶安裝的界面)
我沒做過ios開發,因此.ipa文件,.plist文件怎么得到,開發人員應該很清楚,這里只介紹一下文件部署的情況。
首先APP上傳到服務器有一個下載地址,比如:
http://youdomain/app.ipa
然后部署.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://cloud.189.cn/download/client/iOS/cloud189_1.1.1.ipa</string> </dict> </array> <key>metadata</key> <dict> <key>bundle-identifier</key> <string>請填上你的開發者證書用戶名</string> <key>bundle-version</key> <string>版本</string> <key>kind</key> <string>software</string> <key>title</key> <string>請填上標題</string> </dict> </dict> </array> </dict> </plist>
需要注意的是從ios7.1開始,
http推送plist已經不能用了,只能使用https推送,因此訪問這個文件的地址必須是https開頭的。你可以配置自己的服務器支持https服務,也可以借助第三方工具,這里主要介紹使用第三方工具。
國外有很多網站都是支持https服務的,比如DropBox和Github,以Github為例,打開任意開源項目中的一個文件,切換到“RAW”
可以看到地址欄顯示的是https,因此可以把app.plist文件上傳到github生成一個https地址,不幸的是github在國內基本上屬於被牆的狀態,因此需要在國內找一個能提供https服務的存儲方式,這里我推薦
七牛雲存儲,注冊成為標准用戶后,新建一個空間,上傳文件
在空間設置里可以開通https服務
這樣就能得到一個
https://dn-yourdomain.qbox.me/app.plist的地址,說了這么多,終於將.plist文件部署好了,其實前面的.ipa文件也可以上傳到七牛雲存儲上供下載分流。
最后介紹如何下載安裝應用,使用的是itms-services:協議
-
itms-services://?action=download-manifest&url=https://plist文件的地址
接下來只要在網頁(html)文件中加入
-
<a href="itms-services://?action=download-manifest&url=https://plist文件的地址">安裝</a>
這樣點擊手機網頁上的“安裝”鏈接就能下載安裝應用了。至於這個頁面要做的多花里胡哨,那就是前端美工的事了。
這里有一段比較完整的示例
-
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <htmlxmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <metahttp-equiv="Content-Type"content="text/html; charset=utf-8"/> 5 <title>應用名字</title> 6 </head> 7 <body> 8 <h1style="font-size:80pt">如果點擊無法下載安裝,請復制超鏈接到瀏覽器中打開<h1/> 9 <h1style="font-size:100pt"> 10 <a title="iPhone"href="itms-services://?action=download-manifest&url=https://dn-你的空間名字.qbox.me//你的.plist">點擊下載 </a><h1/> 11 </body> 12 </html> 13
如果想手機進入頁面后直接下載安裝,可以在html 標簽的 head 標記中加入如下的Javascript代碼
<script> var url ="https://plist文件地址"; window.location ="itms-services://?action=download-manifest&url="+ url; </script>
這樣就會自動提示下載和安裝了。
如果通過ios應用內安裝,代碼大概如下所示
iOS:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms-services://?action=download-manifest&url=https://plist文件的地址"]];
最后才是重點,我們不必這么麻煩自己部署這么多文件,完全可以借助第三方應用內測分發平台,比較出名的有下面幾個:
應用測試發布平台
fir.im - 免費應用內測托管平台|iOS應用Beta測試分發|Android應用內測分發
蒲公英 - 免費的應用托管平台|App應用眾測分發
Pre.im - APP內測托管平台首選 - Beta測試 - 免費的應用內測托管平台
TestFlight Beta Testing - App Store - Apple Developer
https://developer.apple.com/testflight/
試用了一下蒲公英,真是相當方便,只要注冊一個帳號,將ipa文件上傳,就會立即生成一個下載地址以及引導下載頁面
通過查看api可以看到,蒲公英也是通過上面的方式安裝的,只是給開發者省了不少時間
如果你嫌蒲公英的下載引導頁面不好看,你可以自己做一個html頁面,直接是用上面的itms-services地址。
參考: