判斷喚起app的連接是否在WeChat中打開
let isWeiXin = navigator.userAgent.toLowerCase().indexOf('micromessenger') != -1;
// 監測手機設備的系統
systemType(isWeiXin);
判斷手機設備為iOS的方法
// iOS
function toiOS() {
$('#DBL').click(function() {
/* [app scheme碼]:// */
window.location.href = 'scheme://';
setTimeout(function() {
// iOS App Store下載地址
window.location = 'url';
}, 300);
setTimeout(function() {
window.location.reload();
}, 1000)
});
}
判斷手機設備為Android的方法
// Android
function toAndroid(isWeiXin) {
if (isWeiXin) {
// 在微信中打開鏈接的提示信息
$('#DBL').click(function() {
$('#zz').fadeIn();
});
$('#zz').click(function() {
$(this).fadeOut();
});
} else {
var ifr = document.createElement('iframe');
/* Android app scheme碼 打開地址 */
ifr.src = 'scheme://host/openwith';
ifr.style.display = 'none';
document.body.appendChild(ifr);
$('#DBL').click(function() {
// Android.apk下載地址
window.location = 'url';
});
}
}
判斷手機系統類型(Android、iOS、WeChat)
// 判斷手機系統
function systemType(isWeiXin) {
let u = navigator.userAgent,
app = navigator.appVersion;
// 監測設備
let isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1,
isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);
// iOS 設備判斷
if (isiOS) toiOS();
// Android 設備判斷
if (isAndroid) toAndroid(isWeiXin);
}
注:
在WeChat中,因為微信的安全機制的問題,通過微信喚起不同設備的app的方法也存在一定的差異;iOS與Android的安全機制不同,喚起各自設備的app的方法也有所差別。
iOS所有的app都是在App Store中完成的,所以可以通過微信直接喚起蘋果的App Store來實現app的喚起和下載;
Android中app的來源五花八門,可以通過app應用市場、瀏覽器等來實現app的喚起和下載;因為微信的安全機制,無法通過微信直接喚起app或下載app,只能通過微信提供的插件“瀏覽器”中打開當前鏈接,通過瀏覽器來實現app的下載和打開功能。
