js判斷移動端是否安裝某款app的多種方法

1.js判斷移動端是否安裝某款app的多種方法

1.第一種方法:

一:判斷是那種設(shè)備
var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; //android終端或者uc瀏覽器

var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios終端

二:安卓設(shè)備:原理:判斷是否認識這個協(xié)議止状,認識則直接跳轉(zhuǎn)稚失,不認識就在這里下載app

    android();
    if(isAndroid){
      function android(){
        window.location.href = "openwjtr://com.tyrbl.wjtr"; /***打開app的協(xié)議,有安卓同事提供***/
        window.setTimeout(function(){
           window.location.; /***打開app的協(xié)議虐先,有安卓同事提供***/
        },2000);
      };

三:ios設(shè)備:原理:判斷是否認識這個協(xié)議暮蹂,認識則直接跳轉(zhuǎn)寞缝,不認識就在這里下載appios();

if(isiOS){
      function ios(){
        var ifr = document.createElement("iframe");
        ifr.src = "openwjtr://com.tyrbl.wjtr"; /***打開app的協(xié)議,有ios同事提供***/
        ifr.style.display = "none";
        document.body.appendChild(ifr);
        window.setTimeout(function(){
          document.body.removeChild(ifr);
           window.location.; /***下載app的地址***/
        },2000)
      };
}

第二種方法:
雖然在Js中可以啟動某個app仰泻,但是并不能判斷該app是否安裝荆陆;
啟動app需要的時間較長,js中斷時間長集侯,如果沒安裝被啼,js瞬間就執(zhí)行完畢。直接上代碼吧棠枉!


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);
}

第三種方法:

<script language="javascript">
 if (navigator.userAgent.match(/(iPhone|iPod|iPad);?/i)) {
  var loadDateTime = new Date();
  window.setTimeout(function() {
   var timeOutDateTime = new Date();
   if (timeOutDateTime - loadDateTime < 5000) {
    window.location = "要跳轉(zhuǎn)的頁面URL";
   } else {
    window.close();
   }
  },
  25);
  window.location = " apps custom url schemes ";
 } else if (navigator.userAgent.match(/android/i)) {
  var state = null;
  try {
   state = window.open("apps custom url schemes ", '_blank');
  } catch(e) {}
  if (state) {
   window.close();
  } else {
   window.location = "要跳轉(zhuǎn)的頁面URL";
  }
 }
</script>

四浓体、注意事項:

  1. apps custom url schemes 是什么呢?
其實就是你與APP約定的一個協(xié)議URL辈讶,你的IOS同事或Android同事在寫程序的時候會設(shè)置一個URL Scheme命浴,
例如設(shè)置:
URL Scheme :app
然后其他的程序就可以通過URLString = app://  調(diào)用該應(yīng)用。
還可以傳參數(shù),如:
app://reaction/?uid=1

原理:500ms內(nèi)生闲,本機有應(yīng)用程序能解析這個協(xié)議并打開程序媳溺,調(diào)用該應(yīng)用;如果本機沒有應(yīng)用程序能解析該協(xié)議或者500ms內(nèi)沒有打開這個程序跪腹,則執(zhí)行setTimeout里面的function褂删,就是跳轉(zhuǎn)到你想跳轉(zhuǎn)的頁面。
以上就是js判斷移動端是否安裝某款app的多種方法冲茸,希望對大家的學(xué)習(xí)有所幫助屯阀。

2. 網(wǎng)頁推薦下載App,如其本地已安裝則直接打開本地App

1.網(wǎng)頁推薦下載App轴术,如果本地已安裝則直接打開本地App

function open_or_download_app() {
    if (navigator.userAgent.match(/(iPhone|iPod|iPad);?/i)) {
        // 判斷useragent难衰,當(dāng)前設(shè)備為ios設(shè)備
        var loadDateTime = new Date(); // 設(shè)置時間閾值,在規(guī)定時間里面沒有打開對應(yīng)App的話逗栽,直接去App store進行下載盖袭。
        window.setTimeout(function() {
            var timeOutDateTime = new Date();
            if (timeOutDateTime - loadDateTime < 2000) {
                window.location = "https://itunes.apple.com/cn/app/hu-lu/id627370076?mt=8";
            } else {
                window.close();
            }
        },  50);
        window.location = "XXX://"; // iOS端URL Schema
    } else if (navigator.userAgent.match(/android/i)) {
        // 判斷useragent,當(dāng)前設(shè)備為android設(shè)備
        window.location = "XXX://"; // Android端URL Schema
    }
}
10B9409F-57E5-4505-81A8-B207754F494C.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末彼宠,一起剝皮案震驚了整個濱河市鳄虱,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌凭峡,老刑警劉巖拙已,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異摧冀,居然都是意外死亡倍踪,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進店門索昂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來建车,“玉大人,你說我怎么就攤上這事椒惨$椭粒” “怎么了?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵康谆,是天一觀的道長凄杯。 經(jīng)常有香客問我,道長秉宿,這世上最難降的妖魔是什么戒突? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮描睦,結(jié)果婚禮上膊存,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好隔崎,可當(dāng)我...
    茶點故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布今艺。 她就那樣靜靜地躺著,像睡著了一般爵卒。 火紅的嫁衣襯著肌膚如雪虚缎。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天钓株,我揣著相機與錄音实牡,去河邊找鬼。 笑死轴合,一個胖子當(dāng)著我的面吹牛创坞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播受葛,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼题涨,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了总滩?” 一聲冷哼從身側(cè)響起纲堵,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎闰渔,沒想到半個月后席函,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡澜建,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蝌以。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片炕舵。...
    茶點故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖跟畅,靈堂內(nèi)的尸體忽然破棺而出咽筋,到底是詐尸還是另有隱情,我是刑警寧澤徊件,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布奸攻,位于F島的核電站,受9級特大地震影響虱痕,放射性物質(zhì)發(fā)生泄漏睹耐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一部翘、第九天 我趴在偏房一處隱蔽的房頂上張望硝训。 院中可真熱鬧,春花似錦、人聲如沸窖梁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽纵刘。三九已至邀窃,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間假哎,已是汗流浹背瞬捕。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留位谋,地道東北人山析。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像掏父,于是被迫代替她去往敵國和親笋轨。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,647評論 2 354

推薦閱讀更多精彩內(nèi)容