url scheme方式html
var downloader, scheme = ":lklk" //須要打開的app scheme地址 iosDownload = "jjjj",//若是打開scheme失效的app下載地址 anDownload = "http://xxx.com" var u = navigator.userAgent var isAndroid = u.indexOf("Android")>-1 || u.indexOf("Linux")>-1 //g var isIos = !!u.match(/\(i[^;]+;(u;)?CPU.+Mac OS X/);//ios終端 // 給id爲openBtn的按鈕添加點擊事件處理函數 document.getElementById("openBtn").onclick = function(){ window.location.href = scheme //嘗試打開scheme //設置3秒的定時下載任務 3秒以後下載app downloader = setTimeout(function(){ if(isAndroid){ window.location.href = anDownload } if(isIos){ windwo.location.href = iosDownload } },3000) }, document.addEventListener('visibilitychange webkitvisibilitychange',function(){ //若是頁面隱藏 推測打開scheme成功 清除下載任務 if(docuemnt.hidden || docuemnt.webkitHidden){ clearInterval(downloader) } }) window.addEventListener('pagehide',function(){ clearInterval(downloader) })
/** * @description: 安卓喚起App */ // 方案1 // openAndroidApp() { // var d = new Date() // var t0 = d.getTime() // if (this.openApp('opengloud://app.gloud.com/detail?tab=1')) { // this.openApp('opengloud://app.gloud.com/detail?tab=1') // } else { // var d = new Date() // var t1 = d.getTime() // // 因爲打開須要1~2秒,利用這個時間差來處理--打開app後,返回h5頁面會出現頁面變成app下載頁面,影響用戶體驗 // var delay = setInterval(() => { // var d = new Date() // var t1 = d.getTime() // if (t1 - t0 < 3000 && t1 - t0 > 2000) { // this.$util.viewAPPDownload() // } // if (t1 - t0 >= 3000) { // clearInterval(delay) // } // }, 1000) // } // }, // openApp(url) { // location.href = url // }, // 方案2: openAndroidApp() { // e = e || window.event window.location.href = 'opengloud://app.gloud.com/detail?tab=1' //嘗試打開scheme // if (e.preventDefault) { // e.preventDefault() // } else { // e.returnValue = false // } //設置3秒的定時下載任務 3秒以後下載app this.downloader = setTimeout(() => { // window.open("about:blank","_self").close(); this.$util.viewAPPDownload() }, 3000) }, // 方案三 // openAndroidApp() { // var ifr = document.createElement('iframe') // ifr.src = 'opengloud://app.gloud.com/detail?tab=1' // ifr.style.display = 'none' // document.body.appendChild(ifr) // this.downloader = window.setTimeout(()=>{ // document.body.removeChild(ifr) // // 這裏寫兜底策略的邏輯,好比下載。 // // 固然,也能夠不加任何的兜底策略,調不起就算了。 // this.$util.viewAPPDownload() // }, 300) // }, //方案四 // openAndroidApp(){ // const options = { // scheme: 'opengloud://app.gloud.com/detail?tab=1', // intent: { // package: 'opengloud://app.gloud.com/detail?tab=1', // scheme: 'opengloud://app.gloud.com/detail?tab=1' // }, // appstore: 'https://wcgcenter.wostore.cn/gameInfos/appDownload/h5.html?chid=h5start', // yingyongbao: 'https://wcgcenter.wostore.cn/gameInfos/appDownload/h5.html?chid=h5start', // fallback: 'https://wcgcenter.wostore.cn/gameInfos/appDownload/h5.html?chid=h5start', // timeout: 4000, // } // const callLib = new CallApp(options) // callLib.open({}) // },