摘要:糾結(jié)兩天瀏覽器中喚起本地,一直找不到解決方案,今天總算基本搞定。
糾結(jié)兩天(瀏覽器中喚起本地APP),一直找不到解決方案,今天總算基本搞定。
ps:吐槽一下 魔窗那篇文章,為什么就不直接把js代碼開源開源,混淆后的代碼看得我好惱火
參考文章:魔窗解決方案、京東解決方案
首先是判斷瀏覽器// 判斷瀏覽器 var Navigator = navigator.userAgent; var ifChrome = Navigator.match(/Chrome/i) != null && Navigator.match(/Version/d+.d+(.d+)?sChrome//i) == null ? true : false; var ifAndroid = (Navigator.match(/(Android);?[s/]+([d.]+)?/)) ? true : false; var ifiPad = (Navigator.match(/(iPad).*OSs([d_]+)/)) ? true : false; var ifiPhone = (!ifiPad && Navigator.match(/(iPhonesOS)s([d_]+)/)) ? true : false; var ifIos = Navigator.match(/iPhone|iPad|iPd/i) ? true : false; var ifSafari = ifIos && Navigator.match(/Safari/); // ios 設(shè)備的版本號(hào) var iosVersion = Navigator.match(/OSs*(d+)/) iosVersion = iosVersion ? (iosVersion[1] || 0) : 0; // 安卓版本號(hào) var androidVersion = Navigator.match(/Androids*(d+)/) androidVersion = androidVersion ? (androidVersion[1] || 0) : 0;android5 及以上的高版本
// 延后50毫秒 setTimeout(function() { location.href = ‘自定義 URL’ }, 50)ios9 及以上的版本
setTimeout(function() { // 必須要使用settimeout var a = document.createElement("a"); //創(chuàng)建a元素 a.setAttribute("href", ‘自定義 URL’), a.style.display = "none", document.body.appendChild(a); var t = document.createEvent("HTMLEvents"); // 返回新創(chuàng)建的 Event 對(duì)象,具有指定的類型。 t.initEvent("click", !1, !1) // 初始化新事件對(duì)象的屬性 a.dispatchEvent(t) // 綁定事件 }, 0)所有情況都用 iframe
document.querySelector("#" + iframe).src = ‘自定義 URL’ // 將iframe增加src計(jì)算時(shí)差的方案打開APP
var checkOpen = function (cb){ var _clickTime = +(new Date()); function check(elsTime) { if ( elsTime > 3000 || document.hidden || document.webkitHidden) { cb(1); } else { cb(0); } } //啟動(dòng)間隔20ms運(yùn)行的定時(shí)器,并檢測(cè)累計(jì)消耗時(shí)間是否超過(guò)3000ms,超過(guò)則結(jié)束 var _count = 0, intHandle; intHandle = setInterval(function(){ _count++; var elsTime = +(new Date()) - _clickTime; if (_count>=100 || elsTime > 3000 ) { clearInterval(intHandle); check(elsTime); } }, 20); } checkOpen(function(opened){ // APP沒有打開成功 并且開啟自動(dòng)跳轉(zhuǎn)到下載頁(yè) if(opened === 0 && option.autoRedirectToDownloadUrl){ location.href = downloadUrl; } });注意
ios9 以上的 Universal Link 設(shè)置自行百度下(這個(gè)需要問(wèn)問(wèn)ios開發(fā)人員) 這里還有個(gè)我自己發(fā)現(xiàn)的 bug
在Android里面的qq里面打開
如果打開APP的同時(shí)立馬返回到QQ里面,應(yīng)用寶的下載頁(yè)立馬又重新打開APP。ios里面也有個(gè)情況,打開APP的同時(shí)立馬用左上角的返回再次點(diǎn)擊打開APP按鈕則
Universal Link 失效,跳轉(zhuǎn)到配置好的 Universal Link 鏈接,大家有知道的解答哈,共同成長(zhǎng)
如果ios9 里面沒有安裝APP 則直接就挑轉(zhuǎn)到 Universal Link 鏈接 ,這應(yīng)該是個(gè)bug,我想的是,如果沒有安裝APP 則跳轉(zhuǎn)到應(yīng)用寶,這個(gè)不知道怎么實(shí)現(xiàn)
測(cè)試的配置所有用的 得到 的APP鏈接,為了方便
GitHub上面有個(gè)示例:https://github.com/lmxdawn/te...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/51263.html
閱讀 2581·2021-11-22 12:01
閱讀 1105·2021-11-15 11:37
閱讀 3685·2021-09-22 14:59
閱讀 1746·2021-09-04 16:45
閱讀 1382·2021-09-03 10:30
閱讀 1013·2021-08-11 11:18
閱讀 2459·2019-08-30 10:53
閱讀 2013·2019-08-29 15:13