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

HappyCodingTop
526 声望847 粉丝

Talk is cheap, show the code!!


引用和评论

0 条评论