var ua = navigator.userAgent.toLowerCase(); 1.判斷是否是微信 function isWeixinBrowser() { return (/micromessenger/.test(ua)) ? true : false; } 2.判斷是否是android var isAndroid = ua.indexOf('android') > -1 || ua.indexOf('linux') > -1; 3.具體過程 scheme是客戶端定義的url-scheme $("a[href^='scheme://']").on('click',function(e){ e.preventDefault();//阻止默認行為 if(isWeixinBrowser()){ $('.layer').show();//遮罩層(使用外部瀏覽器打開,此處樣式自行設定) }else{ if(isAndroid){ //android $('body').append("<iframe src="" style='display:none' target='' ></iframe>");//target為空防止在當前頁面刷新 setTimeout(function(){window.location = 'http://www.510wifi.com/weixin_download_client.html'},600); }else{ //ios window.location = 'scheme://openapp'; setTimeout(function(){window.location = 'itms-apps://itunes.apple.com/app/id123456789'},25); } } }) 附:判斷手機端各種瀏覽器 if (ua.match(/WeiBo/i) == "weibo") { //在新浪微博客戶端打開 } if (ua.match(/QQ/i) == "qq") { //在QQ空間打開 } if (browser.versions.ios) { //是否在IOS瀏覽器打開 } if(browser.versions.android){ //是否在安卓瀏覽器打開 } var u = navigator.userAgent, app = navigator.appVersion; 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.*/), //是否為移動終端 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, //是否為iPhone或者QQHD瀏覽器 iPad: u.indexOf('iPad') > -1, //是否iPad webApp: u.indexOf('Safari') == -1 //是否web應該程序,沒有頭部與底部
JS判斷手機端是否安裝了某個客戶端APP
雖然在Js中可以啟動某個app,但是並不能判斷該app是否安裝;
但是,但是....還是有奇思淫巧滴,啟動app需要的時間較長,js中斷時間長,如果沒安裝,js瞬間就執行完畢。直接上代碼吧!
一、
function testApp(url) {
var timeout, t = 1000, hasApp = true;
setTimeout(function () {
if (hasApp) {
alert('安裝了app');
} else {
alert('未安裝app');
}
document.body.removeChild(ifr);
}, 2000)
var t1 = Date.now();
var ifr = document.createElement("iframe");
ifr.setAttribute('src', url);
ifr.setAttribute('style', 'display:none');
document.body.appendChild(ifr);
timeout = setTimeout(function () {
var t2 = Date.now();
if (!t1 || t2 - t1 < t + 100) {
hasApp = false;
}
}, t);
}
二、
function isInstalled(){
var the_href=$(".down_app").attr("href");//獲得下載鏈接
window.location="apps custom url schemes";//打開某手機上的某個app應用
setTimeout(function(){
window.location=the_href;//如果超時就跳轉到app下載頁
},500);
}
apps custom url schemes是什么呢?
其實就是你與app約定的一個協議URL,在IOS客戶端或者Android客戶端中可以設置一個URL Scheme。例如,設置URL Scheme:app,然后其他的程序就可以通過“ URLString=app://”調用該應用。還可以傳參數,如:app://reaction/?uid=1
以上介紹了怎么創建該本地協議及調用該本地協議的方法。但這里還有個關鍵就是怎么判斷用戶是否安裝了該app呢?原理如下:
在手機瀏覽器中用js代碼請求該協議,如果在500ms內,如果有應用程序能解析這個協議,那么就能打開該應用;如果超過500ms就跳轉到app下載頁。
原文鏈接:https://blog.csdn.net/libin_1/article/details/78335122
