企業證書打的包只能通過自帶相機掃碼或者第三方工具才能安裝到手機,爲了解決微信等工具掃碼安裝的問題,特寫本文
- 實現原理是利用配置文件plist,生成二維碼進行掃碼安裝
操作步驟:
- 拿到.ipa的包。並且把包放到一個服務器,最簡單的方法是直接放到Tomcat的ROOT目錄下,這樣你直接就可以輸入地址下載,比如放到/ROOT/app/xxx.ipa;那麼訪問地址就是:http://ip:port/app/xxx.ipa
- 接下來是配置plist文件。可以直接套用我的模板(見文章末尾第九步),模板來自百度
- 將配置文件放到具有https環境下,我用的是github,登錄gitbuh,新建項目,然後把這個配置文件放到上,下面爲截圖
-
找到這個文件之後點擊 "raw"會跳轉到一個新界面,將生成的地址再地址欄複製下來
-
拼接到這地址之後:itms-services:///?action=download-manifest&url=plist地址(就是上一步複製的地址,放到等號後)
-
將拼接好的地址放到二維碼生成器中生成地址就可以了此時微信掃碼就可以下載了
-
通過以上步驟可以實現掃碼下載,但是如果要輸入下載地址就可以訪問,那還需要一個下載界面,這個界面的功能就是通過判斷是客戶端的瀏覽器就直接跳轉到安裝路徑(html見第八步)
-
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <script> /*瀏覽器版本信息*/ var browser = { versions: function() { var u = navigator.userAgent, app = navigator.appVersion; return {//移動終端瀏覽器版本信息 trident: u.indexOf('Trident') > -1, // IE presto: u.indexOf('Presto') > -1, // opera webKit: u.indexOf('AppleWebKit') > -1, // 蘋果、谷歌 gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, // 火狐 mobile: !!u.match(/AppleWebKit.*Mobile.*/) || !!u.match(/AppleWebKit/), // 是否爲移動終端 ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), // ios終端 android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, // android終端或者uc瀏覽器 iPhone: u.indexOf('iPhone') > -1 || u.indexOf('Mac') > -1, // 是否爲iPhone或者QQHD瀏覽器 iPad: u.indexOf('iPad') > -1, // 是否iPad webApp: u.indexOf('Safari') == -1 // 是否web應該程序,沒有頭部與底部 }; }(), language: (navigator.browserLanguage || navigator.language).toLowerCase() } if (browser.versions.ios || browser.versions.iPhone) { window.location="寫上面第五步生成的地址"; // ios版本的下載地址 console.log("ios平臺"); } else if (browser.versions.android) { window.location="寫安卓的下載地址"; // android版本的下載地址 console.log("android平臺"); } </script> </body> </html>
-
<?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://ip:port/app/xxx.ipa)</string> </dict> <dict> <key>kind</key> <string>full-size-image</string> <key>needs-shine</key> <true/> <key>url</key> <string>https://enterprise.cloudpay.com.cn/app/packages/iphone-2x.png</string> </dict> </array> <key>metadata</key> <dict> <key>bundle-identifier</key> <string>BT.Avanker</string> <key>bundle-version</key> <string>1.0</string> <key>kind</key> <string>software</string> <key>title</key> <string>這裏寫下你的包名稱</string> </dict> </dict> </array> </dict> </plist>