通過JS喚醒app(安卓+ios)


有需求說要通過頁面按鈕喚醒app,或者手機上沒有這款app跳轉到商店,然后剛開始也是查了資料的,結果發現一頭霧水,不過最后還是搗鼓出來了,當然也參考了前人分享的經驗,下面我就將方法整理一下:

首先明確一下目的,是要在分享出去的html頁面,通過js操作喚醒app或者打開商店,那么第一步就應該先判斷當前的環境,這里我附上詳細的判斷方法,通用的

var browser = {

        versions: function() {

                  var u = navigator.userAgent,

                        app = navigator.appVersion;

                  return {

                            trident: u.indexOf('Trident') > -1,                        

                            presto: u.indexOf('Presto') > -1,          

                            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/), 

                             android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, 

                             iPhone: u.indexOf('iPhone') > -1,          

                             iPad: u.indexOf('iPad') > -1,      

                             webApp: u.indexOf('Safari') == -1,          

                             souyue: u.indexOf('souyue') > -1,

                             superapp: u.indexOf('superapp') > -1,

                             weixin:u.toLowerCase().indexOf('micromessenger') > -1,

                             Safari:u.indexOf('Safari') > -1

                   };

          }(),

                   language: (navigator.browserLanguage || navigator.language).toLowerCase()

};

這里用到兩個判斷,一個ios一個安卓

if (browser.versions.ios) {

             //你的代碼

}else if (browser.versions.android){

             //你的代碼

}

那么接下來就應該判斷當前手機上是否有安裝某款應用,但是要知道js是無法判斷手機上是否安裝了哪款app的,所以有app打開app,沒有app跳轉到商店就可以這么做,js打開ios系統app的方法是這樣的,拿淘寶為例:

taobao://

那么同理安卓的方法也是一樣的,只不過打開app的協議不同,這個對應的打開app的協議是你們ios和安卓開發的小伙伴提供給你的,接下來的原理就是嘗試發起打開app的請求,如果有提示是否在某款app中打開,那就可以直接打開了,如果打不開那么我們就要做另外一件事情了

if (browser.versions.ios) {

          window.location.href = "taobao://";

          setTimeout(function(){

                    window.location.href = "你的app在商店中的地址";

                    window.location.href = "你的app在商店中的地址";  //為什么要加兩遍我下面會說到

          },2000)

}else if (browser.versions.android){

          window.location.href = "taobao://**";

          setTimeout(function(){

                    window.location.href = "你的app的下載地址";

          },2000)

}

當然為什么要加定時器,相信大家也都知道,因為打開app是需要時間的,而js代碼瞬間就執行完畢了,當然這里還有幾個坑,ios系統第一次window.location.href嘗試打開app有時候會彈一下是否在某款app中打開之后馬上跳到商店,為了解決這個問題我加了兩遍window.location.href。


免責聲明!

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



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