有些時候在做前端輸出的時候,需要和app的做些對接工作。就是在手機瀏覽器中下載某app時,能判斷該用戶是否安裝了該應用。如果安裝了該應用,就直接打開該應用;如果沒有安裝該應用,就下載該應用。那么下面就對在瀏覽器中,用js判斷某用戶是否安裝了該應用,並判斷是否打開該應用做個簡單的介紹。
那么,怎么判斷某用戶是否安裝了某應用呢?
在這里,先寫段html代碼,如下:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<a href="某app下載鏈接"></a>
</body>
</html>
判斷手機端是否安裝某應用,並打開該應用的js代碼如下:
function isInstalled(){ var the_href=$(".down_app").attr("href");//獲得下載鏈接 window.location="apps custom url schemes";//打開某手機上的某個app應用 setTimeout(function(){ window.location=the_href;//如果超時就跳轉到app下載頁 },500); }
下面對這段js代碼做一個簡單的解析:首先試着打開手機端某個app的本地協議;如果超時就轉到app下載頁,下載該app。
說到這里,有人就要問了,這個本地協議又是怎么建立的呢?好了,下面也就這個做個簡單的介紹:
其實就是在app中將http協議轉換為本地協議,具體怎么轉換,不在本討論范圍。但需要在app里面對配置文件做一下設置(一般是在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>
apps custom url schemes是什么呢?
其實就是你與app約定的一個協議URL,在iOS客戶端或者Android客戶端中可以設置一個URL Scheme。例如,設置URL Scheme:app,然后其他的程序就可以通過“ URLString=app://”調用該應用。還可以傳參數,如:app://reaction/?uid=1
以上介紹了怎么創建該本地協議及調用該本地協議的方法。但這里還有個關鍵就是怎么判斷用戶是否安裝了該app呢?原理如下:
在手機瀏覽器中用js代碼請求該協議,如果在500ms內,如果有應用程序能解析這個協議,那么就能打開該應用;如果超過500ms就跳轉到app下載頁。