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({}) // },