js判斷本地是否安裝app


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM