Commit 4a38b9adc4f1cb16db3ef2d41297523017f0e068
1 parent
f6263acc
对接openinstall
Showing
5 changed files
with
470 additions
and
28 deletions
index.html
| @@ -12,6 +12,24 @@ | @@ -12,6 +12,24 @@ | ||
| 12 | <meta http-equiv="expires" content="0"> | 12 | <meta http-equiv="expires" content="0"> |
| 13 | <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9" /> | 13 | <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9" /> |
| 14 | <title> </title> | 14 | <title> </title> |
| 15 | + | ||
| 16 | + <!-- Crypto.js AES加密 CDN引用方式 --> | ||
| 17 | + <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/core.min.js"></script> | ||
| 18 | + <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/enc-base64.min.js"></script> | ||
| 19 | + <!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/md5.min.js"></script> --> | ||
| 20 | + <!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/evpkdf.min.js"></script> --> | ||
| 21 | + <!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/cipher-core.min.js"></script> --> | ||
| 22 | + <!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/aes.min.js"></script> --> | ||
| 23 | + <!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/pad-pkcs7.min.js"></script> --> | ||
| 24 | + <!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/mode-ecb.min.js"></script> --> | ||
| 25 | + <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/enc-utf8.min.js"></script> | ||
| 26 | + <!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/enc-hex.min.js"></script> --> | ||
| 27 | + <!-- Crypto.js AES加密 CDN引用方式结束 --> | ||
| 28 | + <!-- 以下为openinstall集成代码,建议在html文档中尽量靠前放置,加快初始化过程 --> | ||
| 29 | + <!-- 强烈建议直接引用下面的cdn加速链接,以得到最及时的更新,我们将持续跟踪各种主流浏览器的变化,提供最好的服务;不推荐将此js文件下载到自己的服务器--> | ||
| 30 | + <script type="text/javascript" charset="UTF-8" src="https://wjj.ys1.cnliveimg.com/769/h5/js/jquery.min.js"></script> | ||
| 31 | + <script type="text/javascript" charset="UTF-8" src="//res.cdn.openinstall.io/openinstall.js"></script> | ||
| 32 | + <script type="text/javascript" src="static/js/cnLive_openinstall.js"></script> | ||
| 15 | </head> | 33 | </head> |
| 16 | <body> | 34 | <body> |
| 17 | <div class="warpper"> | 35 | <div class="warpper"> |
src/common/openAppOld.js
0 → 100644
| 1 | +//跳转到网家家内部 | ||
| 2 | +function submitFn(data) { | ||
| 3 | + var d = new Date(); | ||
| 4 | + var t0 = d.getTime(); | ||
| 5 | + //判断浏览器 | ||
| 6 | + var u = navigator.userAgent; | ||
| 7 | + var isAndroid = u.indexOf("Android") > -1 || u.indexOf("Linux") > -1; //android终端或者uc浏览器 | ||
| 8 | + var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端 | ||
| 9 | + var isWx = /MicroMessenger/gi.test(u); //微信里打开 | ||
| 10 | + var isQQ = /QQ/gi.test(u); //QQ里打开 | ||
| 11 | + var isWeibo = /Weibo/gi.test(u); //微博里打开 | ||
| 12 | + // 判断环境 | ||
| 13 | + var environment = ''; | ||
| 14 | + // if (process.env.NODE_ENV !== "production") { | ||
| 15 | + // // 测试环境 | ||
| 16 | + // environment = "test"; | ||
| 17 | + // } | ||
| 18 | + | ||
| 19 | + if (this.mode !== 'prod') { | ||
| 20 | + // 测试环境 | ||
| 21 | + environment = "test"; | ||
| 22 | + } | ||
| 23 | + if (data.source == "hl_hc") { | ||
| 24 | + //手机电影详情页面点击下载app直接跳转下载地址 | ||
| 25 | + window.location.href = | ||
| 26 | + "http://wjjh5" + | ||
| 27 | + environment + | ||
| 28 | + ".cnlive.com/apkdownload.html?channelName=hl_hc"; | ||
| 29 | + } else { | ||
| 30 | + if (isAndroid) { | ||
| 31 | + if (isWx || isWeibo) { | ||
| 32 | + // 微信里打开引导用户在浏览器中打开 | ||
| 33 | + // store.commit("showShareWxImg", true) | ||
| 34 | + // store.commit("showShareWxAndroidImg", true) | ||
| 35 | + window.location.href = | ||
| 36 | + "http://wjjh5" + environment + ".cnlive.com/apkdownload.html?" + data.data; | ||
| 37 | + } else { | ||
| 38 | + var url = | ||
| 39 | + "netpp://wjjh5" + environment + ".cnlive.com/main?" + data.data; | ||
| 40 | + // if(iframe(url)){ | ||
| 41 | + // iframe(url); | ||
| 42 | + // }else{ | ||
| 43 | + // //由于打开需要1~2秒,利用这个时间差来处理--打开app后,返回h5页面会出现页面变成app下载页面,影响用户体验 | ||
| 44 | + // var delay = setInterval(function(){ | ||
| 45 | + // var d = new Date(); | ||
| 46 | + // var t1 = d.getTime(); | ||
| 47 | + // if( t1-t0<3000 && t1-t0>2000){ | ||
| 48 | + // //alert('请下载APP'); | ||
| 49 | + // window.location.href = "//wjjh5"+environment+".cnlive.com/apkdownload.html?channelName="+data.channelName; | ||
| 50 | + // } | ||
| 51 | + // if(t1-t0>=3000){ | ||
| 52 | + // clearInterval(delay); | ||
| 53 | + // } | ||
| 54 | + // },1000); | ||
| 55 | + // } | ||
| 56 | + | ||
| 57 | + window.location.href = url; | ||
| 58 | + setTimeout(function() { | ||
| 59 | + //window.location.href = "//wjjh5"+environment+".cnlive.com/apkdownload.html?channelName="+data.channelName; | ||
| 60 | + | ||
| 61 | + if (data.source == "wrtc") { | ||
| 62 | + if (data.data == "") { | ||
| 63 | + wrtcTop.wakeupOrInstall(); | ||
| 64 | + } else { | ||
| 65 | + wrtcBtn.wakeupOrInstall(); | ||
| 66 | + } | ||
| 67 | + } else if (data.source == "ltyInvitation") { | ||
| 68 | + //领头雁邀请页面 | ||
| 69 | + ltyInvitationTop.wakeupOrInstall(); | ||
| 70 | + } else { | ||
| 71 | + mm.wakeupOrInstall(); | ||
| 72 | + } | ||
| 73 | + }, 2000); | ||
| 74 | + } | ||
| 75 | + } else if (isiOS) { | ||
| 76 | + if (data.source == "wrtc") { | ||
| 77 | + if (data.data == "") { | ||
| 78 | + wrtcTop.wakeupOrInstall(); | ||
| 79 | + } else { | ||
| 80 | + wrtcBtn.wakeupOrInstall(); | ||
| 81 | + } | ||
| 82 | + } else if (data.source == "ltyInvitation") { | ||
| 83 | + //领头雁邀请页面 | ||
| 84 | + ltyInvitationTop.wakeupOrInstall(); | ||
| 85 | + } else { | ||
| 86 | + mm.wakeupOrInstall(); | ||
| 87 | + } | ||
| 88 | + // if(isWx||isQQ){ | ||
| 89 | + // // 微信/QQ里打开引导用户在浏览器中打开 | ||
| 90 | + // // store.commit("showShareWxImg", true) | ||
| 91 | + // // store.commit("showShareWxIosImg", true) | ||
| 92 | + // window.location.href = "//wjjh5"+environment+".cnlive.com/apkdownload.html?channelName="+data.channelName; | ||
| 93 | + // }else{ | ||
| 94 | + | ||
| 95 | + // var iosUrlSchems; | ||
| 96 | + // if(environment=="test"){ | ||
| 97 | + // iosUrlSchems="cnlivenetaddtesturlschems";//CNLiveNetAddTestUrlSchems 2019.6.12修改成小写 | ||
| 98 | + // //iosUrlSchems="//wjjh5.cnlive.com";//wjjh5 2019.8.23修改成Universal Link拉起app | ||
| 99 | + // }else{ | ||
| 100 | + // iosUrlSchems="cnlivenetaddurlschems";//CNLiveNetAddUrlSchems 2019.6.12修改成小写 | ||
| 101 | + // //iosUrlSchems="//wjjh5test.cnlive.com";//wjjh5test 2019.8.23修改成Universal Link拉起app | ||
| 102 | + // } | ||
| 103 | + | ||
| 104 | + // window.location.href = iosUrlSchems+"://"+data.data; //CNLiveNetAddUrlSchems 2019.6.12修改成小写 | ||
| 105 | + | ||
| 106 | + // //window.location.href = iosUrlSchems+"?"+data.data; //2019.8.23修改成Universal Link拉起app | ||
| 107 | + // setTimeout(function(){ | ||
| 108 | + // window.location.href = "//wjjh5"+environment+".cnlive.com/apkdownload.html?channelName="+data.channelName; | ||
| 109 | + // },2000); | ||
| 110 | + //} | ||
| 111 | + } else { | ||
| 112 | + window.location.href = | ||
| 113 | + "http://wjjh5" + environment + ".cnlive.com/apkdownload.html?" + data.data; | ||
| 114 | + } | ||
| 115 | + } | ||
| 116 | +} | ||
| 117 | + | ||
| 118 | +function iframe(src) { | ||
| 119 | + // 通过iframe的方式试图打开APP,如果能正常打开,会直接切换到APP,并自动阻止a标签的默认行为 | ||
| 120 | + // 否则打开a标签的href链接 | ||
| 121 | + var ifr = document.createElement("iframe"); | ||
| 122 | + ifr.src = src; | ||
| 123 | + ifr.style.display = "none"; | ||
| 124 | + document.body.appendChild(ifr); | ||
| 125 | + window.setTimeout(function() { | ||
| 126 | + document.body.removeChild(ifr); | ||
| 127 | + }, 2000); | ||
| 128 | +} | ||
| 129 | + | ||
| 130 | +export default { | ||
| 131 | + submitFn | ||
| 132 | +}; |
src/components/callAppBox/callAppBox.vue
| 1 | <template> | 1 | <template> |
| 2 | <div class="call-app-box" v-if="callApps"> | 2 | <div class="call-app-box" v-if="callApps"> |
| 3 | + | ||
| 4 | + <!-- Android WeChat内无法唤起APP,提示用浏览器打开蒙层 --> | ||
| 5 | + <mask-layer ref="maskLayer" | ||
| 6 | + :maskLayers="maskLayers"> | ||
| 7 | + </mask-layer> | ||
| 8 | + | ||
| 3 | <div class="box"> | 9 | <div class="box"> |
| 4 | <div class="logo-box"> | 10 | <div class="logo-box"> |
| 5 | <img src="static/img/call_app_logo.png" class="img" /> | 11 | <img src="static/img/call_app_logo.png" class="img" /> |
| @@ -12,47 +18,66 @@ | @@ -12,47 +18,66 @@ | ||
| 12 | </template> | 18 | </template> |
| 13 | 19 | ||
| 14 | <script> | 20 | <script> |
| 21 | + | ||
| 22 | + // 导入跳转方法组件 | ||
| 23 | + import openAppOld from "@/common/openAppOld.js"; | ||
| 24 | + import maskLayer from "@/components/maskLayer/maskLayer"; | ||
| 25 | + | ||
| 15 | export default { | 26 | export default { |
| 16 | data: function () { | 27 | data: function () { |
| 17 | return { | 28 | return { |
| 18 | - | 29 | + maskLayers: null, // 蒙层对象 |
| 30 | + downLoadBtnData: { | ||
| 31 | + data: "", | ||
| 32 | + source: "", | ||
| 33 | + channelName: this.$route.query.channelName, //频道名称 | ||
| 34 | + title: "下载网家家,观看更多优质内容", | ||
| 35 | + } | ||
| 19 | } | 36 | } |
| 20 | }, | 37 | }, |
| 21 | - props: ["callApps"], | 38 | + props: ["callApps"], |
| 39 | + components: { | ||
| 40 | + maskLayer | ||
| 41 | + }, | ||
| 22 | methods: { | 42 | methods: { |
| 23 | 43 | ||
| 24 | /** | 44 | /** |
| 25 | * H5唤起App按钮事件 | 45 | * H5唤起App按钮事件 |
| 26 | */ | 46 | */ |
| 27 | callApp() { | 47 | callApp() { |
| 28 | - if (typeof this.callApps.funcs === "object" && typeof this.callApps.funcs.callApp === "object" && typeof this.callApps.funcs.callApp.schemeLayer === "function") { | ||
| 29 | - | ||
| 30 | - // 上下文 | ||
| 31 | - let context = this; | ||
| 32 | - | ||
| 33 | - // 跳转连接 | ||
| 34 | - let jumpUrl = (this.mode == "prod" ? "https://managemall.cnlive.com/html/leaflet/appDownload.html" : "https://wjjshop.cnlive.com/html/leaflet/appDownloadTest.html"); | ||
| 35 | - | ||
| 36 | - // 系统判断 | 48 | + |
| 49 | + /** | ||
| 50 | + * 走openinstall拉起下载APP | ||
| 51 | + * 通过分享页面下载完可以拉起到指定页面 | ||
| 52 | + */ | ||
| 53 | + if (typeof this.callApps.funcs === "object") { | ||
| 54 | + | ||
| 55 | + // 拼接参数字符串,根据分享参数拼接 | ||
| 56 | + let shareString = "shop_shop_type=" + this.callApps.funcs.callAppParams.shop_shop_type + "&shop_to=" + this.callApps.funcs.callAppParams.shop_to + "&shop_type=" + this.callApps.funcs.callAppParams.shop_type + "&share_mold=" + this.callApps.funcs.callAppParams.share_mold; | ||
| 57 | + | ||
| 58 | + // Base64位编码加密 | ||
| 59 | + const CryptoJS = require("crypto-js"); | ||
| 60 | + const wordArray = CryptoJS.enc.Utf8.parse(shareString); | ||
| 61 | + let shopData = encodeURIComponent(CryptoJS.enc.Base64.stringify(wordArray)); | ||
| 62 | + | ||
| 63 | + // 设置下载参数 | ||
| 64 | + this.$set(this.downLoadBtnData, 'data', 'channel_id=' + (this.mode === 'prod' ? 'cnlive_mall' : 'cnlive_mall_test') + '&type=shop' + '&shopData=' + shopData); | ||
| 65 | + | ||
| 37 | if (this.isiPhone.value) { | 66 | if (this.isiPhone.value) { |
| 38 | - | ||
| 39 | - // OpenInstall唤起 | ||
| 40 | - // window.location.href = jumpUrl; | ||
| 41 | - | ||
| 42 | - // 唤起App | ||
| 43 | - this.callApps.funcs.callApp.schemeLayer(this.callApps.funcs.callAppParams, this.callApps.funcs.callAppCallback); | 67 | + openAppOld.submitFn.call(this, this.downLoadBtnData); |
| 44 | } else if (this.isAndroid.value) { | 68 | } else if (this.isAndroid.value) { |
| 45 | - | ||
| 46 | - // 唤起App | ||
| 47 | - this.callApps.funcs.callApp.schemeLayer(this.callApps.funcs.callAppParams, this.callApps.funcs.callAppCallback); | ||
| 48 | - | ||
| 49 | - window.setTimeout(function() { | ||
| 50 | - | ||
| 51 | - // 小米浏览器内,请求PHP页面下载 | ||
| 52 | - if (context.isXiaoMi.value) { | ||
| 53 | - window.open("http://wjjh5.cnlive.com/apkdownload.php"); | ||
| 54 | - } | ||
| 55 | - }, 2000); | 69 | + if (this.isWeChat.value) { |
| 70 | + | ||
| 71 | + // 设置蒙层图片 | ||
| 72 | + this.$set(this, "maskLayers", { | ||
| 73 | + img: "/static/img/mask_layer_browser.png", | ||
| 74 | + }); | ||
| 75 | + | ||
| 76 | + // 显示蒙层 | ||
| 77 | + this.$refs.maskLayer.showLayer(); | ||
| 78 | + } else { | ||
| 79 | + openAppOld.submitFn.call(this, this.downLoadBtnData); | ||
| 80 | + } | ||
| 56 | } | 81 | } |
| 57 | } | 82 | } |
| 58 | } | 83 | } |
src/components/callAppBox/callAppBox_old.vue
0 → 100644
| 1 | +<template> | ||
| 2 | + <div class="call-app-box" v-if="callApps"> | ||
| 3 | + <div class="box"> | ||
| 4 | + <div class="logo-box"> | ||
| 5 | + <img src="static/img/call_app_logo.png" class="img" /> | ||
| 6 | + </div> | ||
| 7 | + <div class="buttons-box"> | ||
| 8 | + <div class="btn btn-default" @click="callApp">打开APP</div> | ||
| 9 | + </div> | ||
| 10 | + </div> | ||
| 11 | + </div> | ||
| 12 | +</template> | ||
| 13 | + | ||
| 14 | +<script> | ||
| 15 | + export default { | ||
| 16 | + data: function () { | ||
| 17 | + return { | ||
| 18 | + | ||
| 19 | + } | ||
| 20 | + }, | ||
| 21 | + props: ["callApps"], | ||
| 22 | + methods: { | ||
| 23 | + | ||
| 24 | + /** | ||
| 25 | + * H5唤起App按钮事件 | ||
| 26 | + */ | ||
| 27 | + callApp() { | ||
| 28 | + if (typeof this.callApps.funcs === "object" && typeof this.callApps.funcs.callApp === "object" && typeof this.callApps.funcs.callApp.schemeLayer === "function") { | ||
| 29 | + | ||
| 30 | + // 上下文 | ||
| 31 | + let context = this; | ||
| 32 | + | ||
| 33 | + // 跳转连接 | ||
| 34 | + let jumpUrl = (this.mode == "prod" ? "https://managemall.cnlive.com/html/leaflet/appDownload.html" : "https://wjjshop.cnlive.com/html/leaflet/appDownloadTest.html"); | ||
| 35 | + | ||
| 36 | + // 系统判断 | ||
| 37 | + if (this.isiPhone.value) { | ||
| 38 | + | ||
| 39 | + // OpenInstall唤起 | ||
| 40 | + // window.location.href = jumpUrl; | ||
| 41 | + | ||
| 42 | + // 唤起App | ||
| 43 | + this.callApps.funcs.callApp.schemeLayer(this.callApps.funcs.callAppParams, this.callApps.funcs.callAppCallback); | ||
| 44 | + } else if (this.isAndroid.value) { | ||
| 45 | + | ||
| 46 | + // 唤起App | ||
| 47 | + this.callApps.funcs.callApp.schemeLayer(this.callApps.funcs.callAppParams, this.callApps.funcs.callAppCallback); | ||
| 48 | + | ||
| 49 | + window.setTimeout(function() { | ||
| 50 | + | ||
| 51 | + // 小米浏览器内,请求PHP页面下载 | ||
| 52 | + if (context.isXiaoMi.value) { | ||
| 53 | + window.open("http://wjjh5.cnlive.com/apkdownload.php"); | ||
| 54 | + } | ||
| 55 | + }, 2000); | ||
| 56 | + } | ||
| 57 | + } | ||
| 58 | + } | ||
| 59 | + } | ||
| 60 | + } | ||
| 61 | +</script> | ||
| 62 | + | ||
| 63 | +<!-- Add "scoped" attribute to limit CSS to this component only --> | ||
| 64 | +<style rel="stylesheet/less" lang="less"> | ||
| 65 | + @import './callAppBox'; | ||
| 66 | +</style> | ||
| 0 | \ No newline at end of file | 67 | \ No newline at end of file |
static/js/cnLive_openinstall.js
0 → 100644
| 1 | +//openinstall初始化时将与openinstall服务器交互,应尽可能早的调用 | ||
| 2 | +/*web页面向app传递的json数据(json string/js Object),应用被拉起或是首次安装时,通过相应的android/ios api可以获取此数据*/ | ||
| 3 | +//获取url地址里的参数 | ||
| 4 | +function getUrlParam(name) { | ||
| 5 | + var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); | ||
| 6 | + var r = window.location.search.substr(1).match(reg); | ||
| 7 | + if (r != null) return r[2]; | ||
| 8 | + return ""; | ||
| 9 | +} | ||
| 10 | +//获取url地址里的参数转成json格式 | ||
| 11 | +function parseQueryString() { | ||
| 12 | + var reg_url = /^[^\?]+\?([\w\W]+)$/, | ||
| 13 | + reg_para = /([^&=]+)=([\w\W]*?)(&|$|#)/g, | ||
| 14 | + arr_url = reg_url.exec(window.location.href), | ||
| 15 | + ret = {}; | ||
| 16 | + if (arr_url && arr_url[1]) { | ||
| 17 | + var str_para = arr_url[1], | ||
| 18 | + result; | ||
| 19 | + while ((result = reg_para.exec(str_para)) != null) { | ||
| 20 | + ret[result[1]] = result[2]; | ||
| 21 | + } | ||
| 22 | + } | ||
| 23 | + return ret; | ||
| 24 | +} | ||
| 25 | +//获取xxx.html | ||
| 26 | +function GetUrlRelativePath() { | ||
| 27 | + var url = document.location.toString(); | ||
| 28 | + var arrUrl = url.split("//"); | ||
| 29 | + | ||
| 30 | + var start = arrUrl[1].indexOf("/"); | ||
| 31 | + var relUrl = arrUrl[1].substring(start); //stop省略,截取从start开始到结尾的所有字符 | ||
| 32 | + | ||
| 33 | + if (relUrl.indexOf("?") != -1) { | ||
| 34 | + relUrl = relUrl.split("?")[0]; | ||
| 35 | + } | ||
| 36 | + return relUrl; | ||
| 37 | +} | ||
| 38 | + | ||
| 39 | +//获取wakeupOrInstall传来的参数 | ||
| 40 | +function parseQueryStringData(data) { | ||
| 41 | + var reg_url = /^[^\?]+\?([\w\W]+)$/, | ||
| 42 | + reg_para = /([^&=]+)=([\w\W]*?)(&|$|#)/g, | ||
| 43 | + arr_url = reg_url.exec(data), | ||
| 44 | + ret = {}; | ||
| 45 | + if (arr_url && arr_url[1]) { | ||
| 46 | + var str_para = arr_url[1], | ||
| 47 | + result; | ||
| 48 | + while ((result = reg_para.exec(str_para)) != null) { | ||
| 49 | + ret[result[1]] = result[2]; | ||
| 50 | + } | ||
| 51 | + } | ||
| 52 | + return ret; | ||
| 53 | +} | ||
| 54 | +//唤起app | ||
| 55 | +function wakeupOrInstall(data) { | ||
| 56 | + var timestamp = Date.parse(new Date()); | ||
| 57 | + openInstallData = parseQueryStringData("http://wjjh5.cnlive.com?" + data); | ||
| 58 | + openInstallData.channelCodeName = channelCodeName; | ||
| 59 | + openInstallData.timestamp = timestamp; | ||
| 60 | + openInstallData.changeSecDefChannel = true; //安卓默认定位二级频道 | ||
| 61 | + //console.log(openInstallData); | ||
| 62 | + mm = new OpenInstall( | ||
| 63 | + { | ||
| 64 | + /*appKey必选参数,openinstall平台为每个应用分配的ID*/ | ||
| 65 | + appKey: appKey, | ||
| 66 | + /*可选参数,自定义android平台的apk下载文件名;个别andriod浏览器下载时,中文文件名显示乱码,请慎用中文文件名!*/ | ||
| 67 | + //apkFileName : 'com.fm.openinstalldemo-v2.2.0.apk', | ||
| 68 | + /*可选参数,是否优先考虑拉起app,以牺牲下载体验为代价*/ | ||
| 69 | + //preferWakeup:true, | ||
| 70 | + /*自定义遮罩的html*/ | ||
| 71 | + //mask:function(){ | ||
| 72 | + // return "<div id='openinstall_shadow' style='position:fixed;left:0;top:0;background:rgba(0,255,0,0.5);filter:alpha(opacity=50);width:100%;height:100%;z-index:10000;'></div>" | ||
| 73 | + //}, | ||
| 74 | + /*openinstall初始化完成的回调函数,可选*/ | ||
| 75 | + channelCode: channelName, | ||
| 76 | + onready: function() { | ||
| 77 | + /*在app已安装的情况尝试拉起app*/ | ||
| 78 | + /*不管是iOS还是安卓必须在openInstall后台打开启用scheme按钮才能执行schemeWakeup方法*/ | ||
| 79 | + /*在ios9.2以下schemeWakeup方法才能在openInstall初始化完毕之后执行拉起app操作, | ||
| 80 | + ios9.2以上必须通过点击触发wakeupOrInstall方法才能拉起app */ | ||
| 81 | + /*在安卓里只要打开了启用scheme按钮,schemeWakeup方法就会执行*/ | ||
| 82 | + /*隐藏以下代码是为了解决安卓网家家app内部打开h5会弹出跳转外部应用的bug*/ | ||
| 83 | + //var m = this; | ||
| 84 | + //m.schemeWakeup(); | ||
| 85 | + } | ||
| 86 | + }, | ||
| 87 | + openInstallData | ||
| 88 | + ); | ||
| 89 | + | ||
| 90 | + mm.wakeupOrInstall(); | ||
| 91 | +} | ||
| 92 | +// channelName通过channelName获取的渠道包名channelCodeName获取到的渠道包名 | ||
| 93 | +var channelName = "tg_dstg", | ||
| 94 | + pathPrefix = "", | ||
| 95 | + channelCodeName = "TGDSTG", | ||
| 96 | + sid = getUrlParam("sid"), //sid | ||
| 97 | + mm, | ||
| 98 | + wrtcTop, | ||
| 99 | + wrtcBtn, | ||
| 100 | + type = "shop", | ||
| 101 | + openInstallData; | ||
| 102 | +// if (channelName.indexOf('xwh') > -1) { | ||
| 103 | +// channelName = 'xwh' | ||
| 104 | +// } | ||
| 105 | + | ||
| 106 | +// 判断测试环境和生产环境给appKey赋值 | ||
| 107 | +// appKey = 'gzqtwt' //测试appKey | ||
| 108 | +let appKey; | ||
| 109 | +let url = document.domain; | ||
| 110 | +if (url.toLowerCase() === "managemall.cnlive.com" || url.toLowerCase() === "manageshop.cnlive.com") { | ||
| 111 | + appKey = "vfkj9x"; //正式appKey | ||
| 112 | +} else { | ||
| 113 | + appKey = "gzqtwt"; //测试appKey | ||
| 114 | +} | ||
| 115 | +//初始化openInstall方法 | ||
| 116 | +function openInstallReady() { | ||
| 117 | + var timestamp = Date.parse(new Date()); | ||
| 118 | + openInstallData = parseQueryString(); | ||
| 119 | + openInstallData.channelCodeName = channelCodeName; | ||
| 120 | + openInstallData.timestamp = timestamp; | ||
| 121 | + openInstallData.changeSecDefChannel = true; //安卓默认定位二级频道 | ||
| 122 | + openInstallData.type = type; | ||
| 123 | + // 处理礼物通过openinstall唤起APP | ||
| 124 | + let share_mold = encodeURIComponent(decodeURIComponent(openInstallData.share_mold)); | ||
| 125 | + let shop_type = encodeURIComponent(decodeURIComponent(openInstallData.shop_type)); | ||
| 126 | + let shop_to = encodeURIComponent(decodeURIComponent(openInstallData.shop_to)); | ||
| 127 | + let shop_shop_type = encodeURIComponent(decodeURIComponent(openInstallData.shop_shop_type)); | ||
| 128 | + // 把值链接的方式绑定到shopShoptype | ||
| 129 | + let shopCollection = | ||
| 130 | + "shop_shop_type=" + | ||
| 131 | + shop_shop_type + | ||
| 132 | + "&shop_to=" + | ||
| 133 | + shop_to + | ||
| 134 | + "&shop_type=" + | ||
| 135 | + shop_type + | ||
| 136 | + "&share_mold=" + | ||
| 137 | + share_mold; | ||
| 138 | + // Base64位编码加密 | ||
| 139 | + // var CryptoJS = require('crypto-js') | ||
| 140 | + var wordArray = CryptoJS.enc.Utf8.parse(shopCollection); | ||
| 141 | + let shopData = encodeURIComponent(CryptoJS.enc.Base64.stringify(wordArray)); | ||
| 142 | + openInstallData.shopData = shopData; | ||
| 143 | + mm = new OpenInstall( | ||
| 144 | + { | ||
| 145 | + /*appKey必选参数,openinstall平台为每个应用分配的ID*/ | ||
| 146 | + appKey: appKey, | ||
| 147 | + /*可选参数,自定义android平台的apk下载文件名;个别andriod浏览器下载时,中文文件名显示乱码,请慎用中文文件名!*/ | ||
| 148 | + //apkFileName : 'com.fm.openinstalldemo-v2.2.0.apk', | ||
| 149 | + /*可选参数,是否优先考虑拉起app,以牺牲下载体验为代价*/ | ||
| 150 | + //preferWakeup:true, | ||
| 151 | + /*自定义遮罩的html*/ | ||
| 152 | + //mask:function(){ | ||
| 153 | + // return "<div id='openinstall_shadow' style='position:fixed;left:0;top:0;background:rgba(0,255,0,0.5);filter:alpha(opacity=50);width:100%;height:100%;z-index:10000;'></div>" | ||
| 154 | + //}, | ||
| 155 | + /*openinstall初始化完成的回调函数,可选*/ | ||
| 156 | + channelCode: channelName, | ||
| 157 | + onready: function() { | ||
| 158 | + /*在app已安装的情况尝试拉起app*/ | ||
| 159 | + /*不管是iOS还是安卓必须在openInstall后台打开启用scheme按钮才能执行schemeWakeup方法*/ | ||
| 160 | + /*在ios9.2以下schemeWakeup方法才能在openInstall初始化完毕之后执行拉起app操作, | ||
| 161 | + ios9.2以上必须通过点击触发wakeupOrInstall方法才能拉起app */ | ||
| 162 | + /*在安卓里只要打开了启用scheme按钮,schemeWakeup方法就会执行*/ | ||
| 163 | + /*隐藏以下代码是为了解决安卓网家家app内部打开h5会弹出跳转外部应用的bug*/ | ||
| 164 | + //var m = this; | ||
| 165 | + //m.schemeWakeup(); | ||
| 166 | + } | ||
| 167 | + }, | ||
| 168 | + openInstallData | ||
| 169 | + ); | ||
| 170 | +} | ||
| 171 | + | ||
| 172 | +// $.ajax({ | ||
| 173 | +// url: "//apiwjj.cnlive.com/Daren/common/getLatestApk.action", | ||
| 174 | +// type: "GET", | ||
| 175 | +// dataType: "json", | ||
| 176 | +// data: { | ||
| 177 | +// channelId: channelName | ||
| 178 | +// }, | ||
| 179 | +// success: function(res) { | ||
| 180 | +// channelCodeName = res.data.apkChannelName; | ||
| 181 | +// if (window.location.href.indexOf("singingActivityDescription.html") > -1) { | ||
| 182 | +// wakeupOrInstallWrtcTop(); | ||
| 183 | +// var item = | ||
| 184 | +// "type=web&pathPrefix=/cnBlockMore.html&channelName=901&blockId=608&blockType=27&contentType=14&title=%E4%BD%9C%E5%93%81%E5%B1%95%E7%A4%BA&moreUrl=http%3A%2F%2Fcms.cnlive.com%3A8768%2FcontentApi%2FtcysgList&isVotingSearch=%E6%8C%89%E7%BC%96%E5%8F%B7%2F%E5%90%8D%E7%A7%B0%E6%90%9C%E7%B4%A2"; | ||
| 185 | +// wakeupOrInstallWrtcBtn(item); | ||
| 186 | +// } else if (window.location.href.indexOf("cnLtyInvitation.html") > -1) { | ||
| 187 | +// //领头雁邀请页面拉起领头雁报名页面处理 | ||
| 188 | +// var item = | ||
| 189 | +// "type=web&pathPrefix=/cnLty.html&channelName=&isShowTitle=true&inviterUid=" + | ||
| 190 | +// sid; | ||
| 191 | +// wakeupOrInstallLtyInvitationTop(item); | ||
| 192 | +// } else { | ||
| 193 | +// openInstallReady(); | ||
| 194 | +// } | ||
| 195 | +// }, | ||
| 196 | +// error: function(err) { | ||
| 197 | +// // alert("接口请求失败!") | ||
| 198 | +// } | ||
| 199 | +// }); | ||
| 200 | +// 本地测试 | ||
| 201 | +openInstallReady(); |