企业证书打的包只能通过自带相机扫码或者第三方工具才能安装到手机,为了解决微信等工具扫码安装的问题,特写本文
- 实现原理是利用配置文件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>