在web瀏覽器中判斷app是否安裝並直接打開


最近公司App產品在運營推廣上有一個需求,就是要求可以讓用戶在訪問我們的推廣網頁時,就可以判斷出這個用戶手機上是否安裝了我們的App,如果安裝了則可以直接在網頁上打開,否則就引導用戶前往下載。從而形成一個推廣上的閉環。

在iOS上,其實只需要在<head>標簽內增加一個<meta>標簽,系統就會自動幫你在頂部生成一個Banner,而且會智能引導用戶操作(如果未安裝就跳轉AppStore,否則直接打開)。格式如:<meta name='apple-itunes-app' content='app-id=你的APP-ID'>。比如加一個百度貼吧的Native APP大Banner,用下面這串兒代碼:

<meta name='apple-itunes-app' content='app-id=477927812'>

但是上面的方法僅限於iOS設備,且無法定義Banner的形式。另外打開應用時也無法告訴App端要做什么操作。(因為后來運營有提出了新的需求,比如在推廣網頁上打開的App就直接進行某項操作。)

那么,我們可以通過另外一種協議的方式來達到上述要求的效果,即:

1.可以在web頁面中直接打開App。

2.打開App的同時可以進行傳值操作,告訴移動端程序應該做什么。

前提:知道你的App對應的打開協議。例如百度貼吧的協議為:com.baidu.tieba://,微信的協議為:weixin://,等等。

 

方法一:

function runApp(rid) {
            var state = null;
            try {
                state = window.open("myapp://jest.app/openwith?id=" + rid, '_self');
            } catch (e) {
                alert("發生未知錯誤:" + state + ",請聯系運營商.");
            }
}

方法一直接利用window.open的方式來打開應用,rid是要告訴移動端的值,這里只寫了一個,大家可以根據實際情況來定義自己的參數。打開方式這里定義為_self,是因為如果是_blank的話,會重新打開一個選項卡, 不是很友好。 另外這個方法對於Andriod設備的兼容性不是很好, 不建議在Andriod設備上執行此方法。

方法二:

function runApp2(rid) {
            var ifrSrc = "myapp://jest.app/openwith?id=" + rid;

            var ifr = document.createElement('iframe');
            ifr.src = ifrSrc;
            ifr.style.display = 'none';
            document.body.appendChild(ifr);
            // 點擊后延時觸發清除iframe,並跳轉頁面
            setTimeout(function () {
                document.body.removeChild(ifr);
            }, 200);
}

方法二是利用iframe的方式來進行打開,同樣rid是要傳遞的參數。這個方法我測試了一些Andriod設備,感覺還是比較好的。 但是iOS體驗較差, 建議大家自己根據實際情況,結合使用。

 

最后說下關於沒有安裝App時的處理方法。基本上網上大家搜的打開方式都是通過協議的方式, 那么如果用戶在觸發打開條件后, 一定時間內沒有打開應用,我們就可以確定該用戶是沒有安裝對應的App。 那么我們可以通過延時函數來進行后續的引導操作。


免責聲明!

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



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