iOS_實現類似蒲公英、fir等發包平臺 通過URL分發內測APP

wzz_1992發表於2020-12-24

1 原理

itms-services://?action=download-manifest&url=https://down.techlz.com/static/wkysdq/manifest.plist   這就是一個APP安裝連結,用iPhone上的safari瀏覽器開啟這個連結 就會彈出一個Alert詢問是否安裝xxx軟體,下面我具體解釋一下這個連結。

1.1 連結的具體含義

  • 連結的協議頭包括第一個引數itms-services://?action=download-manifest這是固定的,這就相當於safari內建了這麼一個邏輯規則,當safari識別到itms-services協議頭及action=download-manifest引數的時候,safari就明白這個連結是下載安裝APP的
  • url=https://down.techlz.com/static/wkysdq/manifest.plist這個參數列示 這個APP的下載配置檔案的存放位置   這個連結必須是一個https的靜態檔案下載連結 也就是說把 https://down.techlz.com/static/wkysdq/manifest.plist這一段直接複製到瀏覽器開啟會自動下載一個manifest.plist檔案
  •  用xcode或文字編輯器開啟這個manifest.plist會發現裡面包含了  ipa的基本資訊 包名、應用名稱、ipa的存放地址、縮圖地址等。

1.2 safari通過連結下載安裝APP的流程 

  •  首先safari識別出了這是安裝APP的連結
  • safari通過url引數對應的url地址下載了manifest.plist檔案
  • 通過manifest.plist描述的ipa下載資訊提示並下載對應的ipa安裝包
  • 這個manifest.plist誰都可以下載,不過手機裝置如果不符合ipa包含的證書配置,那麼即使下載成功了也安裝不起來。

2 實現

瞭解了它的一個實現原理,接下來就是具體怎麼實現我們自己ipa包分發

2.1 實現itms-services協議的安裝連結

  • 首先準備好伺服器,可以找公司的後臺,或者第三方比如七牛、阿里雲這些能存放檔案,並且能提供https下載連結的伺服器
  • 把ipa,縮圖 都上傳到伺服器,獲取對應的https連結。
  • manifest.plist檔案,可以直接用上述例子中的manifest.plist,用文字編輯器開啟把對應的內容替換成自己app相關的資訊就好了,或者在用xcode打包的過程中有這麼一個配置頁面,把include manifedt 打上勾,那麼在匯出的ipa資料夾中就包含了manifest.plist檔案
  • 把生成的或配置好的manifest.plist檔案 也上傳到伺服器,得到manifest.plist的下載連結 以上幾個連結在配置好之後 可以先用瀏覽器開啟測試一些是否可以直接下載
  • 拼接好完整的APP安裝地址就可以分發安裝  itms-services://?action=download-manifest&url=下載配置檔案(manifest.plist)的下載地址   

2.2 類似蒲公英、fir的掃碼安裝

  • 蒲公英提供的二維碼本質也是一個網頁地址 比如這個https://www.pgyer.com/UGsP
  • 開啟這個地址也是不能直接安裝的 而是在底部有個安裝按鈕 ,說到這裡大家應該就明白了 當點選這個按鈕的時候 網頁執行一個action 實際就是開啟itms-services協議的一個連線 
  • 所以要實現掃碼安裝,實際就是寫一個網頁,網頁中有一個按鈕,這個按鈕繫結的事件就是 開啟itms-services協議的APP安裝連結,最後把這個網頁連結用網頁工具生成一個二維碼圖片提供給測試人員就可以了

相關文章