js判斷本地是否安裝app
阿新 • • 發佈:2018-12-19
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