手機(jī)瀏覽器下判斷是否安裝某app,并判斷是否打開該應(yīng)用

今天在做前端輸出的時候,需要和app的做些對接工作。就是在手機(jī)瀏覽器中下載某app時,能判斷該用戶是否安裝了該應(yīng)用。如果安裝了該應(yīng)用,就直接打開該應(yīng)用;如果沒有安裝該應(yīng)用,就下載該應(yīng)用。
那么下面就對在瀏覽器中,用js判斷某用戶是否安裝了該應(yīng)用,并判斷是否打開該應(yīng)用做個簡單的介紹。
那么,怎么判斷某用戶是否安裝了某應(yīng)用呢?
在這里,先寫段html代碼,如下:

<!doctype html>
<html>
<head>
       <meta charset="utf-8">
</head>
<body>  
       <a href="某app下載鏈接"></a>
</body>
</html>

判斷手機(jī)端是否安裝某應(yīng)用,并打開該應(yīng)用的js代碼如下:

    function isInstalled(){
        var the_href=$(".down_app").attr("href");//獲得下載鏈接
        window.location="apps custom url schemes";//打開某手機(jī)上的某個app應(yīng)用
        setTimeout(function(){
            window.location=the_href;//如果超時就跳轉(zhuǎn)到app下載頁
        },500);
    }

apps custom url schemes是什么

apps custom url schemes 是WAP端和APP端約定好的一個協(xié)議URL,如:

web2app://

和正常的URL一樣,除了protocol部分外,也可以有host、path及參數(shù),如:

web2app://openapp?type=1&id=12

具體要看各端約定,不過個人建議最好還是按照URL的組成規(guī)范來定義scheme,不然會引入由于URL不規(guī)范而導(dǎo)致的各種編碼問題。

2.注冊URL Scheme
安卓端:
(一般是在manifest.xml文件的activity的intent filter里面)

<span>
<intent-filter>
 <action android:name="android.intent.action.VIEW" /> 
<category android:name="android.intent.category.DEFAULT" /> 
<category android:name="android.intent.category.BROWSABLE" /> 
<data
android:scheme="**" 
android:host="**.**" 
android:pathPrefix="/**"> </data>
 </intent-filter>
</span>

蘋果端:


3.web 前端調(diào)用:

前端通過:

window.location="url schemes://";//打開某手機(jī)上的某個app應(yīng)用

便可直接調(diào)用打開應(yīng)用。

希望傳參的話可以通過以下方式

window.location="URL Schemes://URL identifier";
//打開某手機(jī)上的某個app應(yīng)用并傳參URL identifier

IOS 端app參數(shù)處理

以上介紹了怎么創(chuàng)建該本地協(xié)議及調(diào)用該本地協(xié)議的方法。但這里還有個關(guān)鍵就是怎么判斷用戶是否安裝了該app呢?原理如下:

在手機(jī)瀏覽器中用js代碼請求該協(xié)議,如果在500ms內(nèi),如果有應(yīng)用程序能解析這個協(xié)議,那么就能打開該應(yīng)用;如果超過500ms就跳轉(zhuǎn)到app下載頁。

URL Scheme存在的問題
IOS9.0以上彈確認(rèn)框的問題。
在IOS9.0以上版本中,WAP端打開協(xié)議URL,如果已安裝APP,會彈出如下圖所示的確認(rèn)框。



大部分情況下,用戶點(diǎn)擊“打開”APP之前,頁面直接刷新跳轉(zhuǎn)到WAP下載頁,導(dǎo)致打開APP失敗。這就是IOS9.0以上不能用scheme實(shí)現(xiàn)需求的主要原因。如果手機(jī)上未安裝APP,WAP端打開協(xié)議URL,會彈出無效URL的彈窗,也會影響用戶體驗(yàn)。

跳轉(zhuǎn)下載頁問題。
由于跳轉(zhuǎn)到下載頁由前端定時器觸發(fā),在所有的andriod機(jī)以及部分IOS機(jī)器上,打開APP后,WAP頁還是會被定時跳轉(zhuǎn)到下載頁。

通用鏈接實(shí)現(xiàn)方案

什么是Universal Links(通用鏈接)?

這是iOS9推出的一項(xiàng)功能,如果你的應(yīng)用支持Universal Links(通用鏈接),那么就能夠方便的通過傳統(tǒng)的HTTP鏈接來啟動APP(如果iOS設(shè)備上已經(jīng)安裝了你的app,不需要額外做任何判斷等),或者打開網(wǎng)頁(iOS設(shè)備上沒有安裝你的app)。或許可以更簡單點(diǎn)來說明,
在iOS9之前,對于從各種從瀏覽器,Safari、UIWebView或者 WKWebView中喚醒APP的需求,我們通常只能使用scheme。

具體實(shí)現(xiàn)方式請見
通用鏈接實(shí)現(xiàn)方案

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容