Commit 4a38b9adc4f1cb16db3ef2d41297523017f0e068
1 parent
f6263acc
对接openinstall
Showing
5 changed files
with
470 additions
and
28 deletions
index.html
| ... | ... | @@ -12,6 +12,24 @@ |
| 12 | 12 | <meta http-equiv="expires" content="0"> |
| 13 | 13 | <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9" /> |
| 14 | 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 | 33 | </head> |
| 16 | 34 | <body> |
| 17 | 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 | 1 | <template> |
| 2 | 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 | 9 | <div class="box"> |
| 4 | 10 | <div class="logo-box"> |
| 5 | 11 | <img src="static/img/call_app_logo.png" class="img" /> |
| ... | ... | @@ -12,47 +18,66 @@ |
| 12 | 18 | </template> |
| 13 | 19 | |
| 14 | 20 | <script> |
| 21 | + | |
| 22 | + // 导入跳转方法组件 | |
| 23 | + import openAppOld from "@/common/openAppOld.js"; | |
| 24 | + import maskLayer from "@/components/maskLayer/maskLayer"; | |
| 25 | + | |
| 15 | 26 | export default { |
| 16 | 27 | data: function () { |
| 17 | 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 | 42 | methods: { |
| 23 | 43 | |
| 24 | 44 | /** |
| 25 | 45 | * H5唤起App按钮事件 |
| 26 | 46 | */ |
| 27 | 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 | 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 | 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 | 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(); | ... | ... |