url scheme方式
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({})
// },