uniapp接入openinstall配置
1、h5页面调用方法
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-mobile-web-app-capable" content="yes" /><!-- home screen app 全屏 -->
<meta name="apple-mobile-web-app-status-bar-style" content="black" /><!-- 状态栏 -->
<meta http-equiv="Access-Control-Allow-Origin" content="*">
<meta name="keywords" content="红叉">
<link rel="icon" href="#" type="image/x-icon"/>
<script type="text/javascript" charset="UTF-8" src="https://web.cdn.openinstall.io/openinstall.js"></script>
<title>红叉App</title>
<script>
//移动端rem适配
;(function(win, lib) {
var doc = win.document;
var docEl = doc.documentElement;
var metaEl = doc.querySelector('meta[name="viewport"]');
var flexibleEl = doc.querySelector('meta[name="flexible"]');
var dpr = 0;
var scale = 0;
var tid;
var flexible = lib.flexible || (lib.flexible = {});
if (metaEl) {
console.warn('将根据已有的meta标签来设置缩放比例');
var match = metaEl.getAttribute('content').match(/initial\-scale=([\d\.]+)/);
if (match) {
scale = parseFloat(match[1]);
dpr = parseInt(1 / scale);
}
} else if (flexibleEl) {
var content = flexibleEl.getAttribute('content');
if (content) {
var initialDpr = content.match(/initial\-dpr=([\d\.]+)/);
var maximumDpr = content.match(/maximum\-dpr=([\d\.]+)/);
if (initialDpr) {
dpr = parseFloat(initialDpr[1]);
scale = parseFloat((1 / dpr).toFixed(2));
}
if (maximumDpr) {
dpr = parseFloat(maximumDpr[1]);
scale = parseFloat((1 / dpr).toFixed(2));
}
}
}
if (!dpr && !scale) {
var isAndroid = win.navigator.appVersion.match(/android/gi);
var isIPhone = win.navigator.appVersion.match(/iphone/gi);
var devicePixelRatio = win.devicePixelRatio;
if (isIPhone) {
// iOS下,对于2和3的屏,用2倍的方案,其余的用1倍方案
if (devicePixelRatio >= 3 && (!dpr || dpr >= 3)) {
dpr = 3;
} else if (devicePixelRatio >= 2 && (!dpr || dpr >= 2)){
dpr = 2;
} else {
dpr = 1;
}
} else {
// 其他设备下,仍旧使用1倍的方案
dpr = 1;
}
scale = 1 / dpr;
}
docEl.setAttribute('data-dpr', dpr);
if (!metaEl) {
metaEl = doc.createElement('meta');
metaEl.setAttribute('name', 'viewport');
metaEl.setAttribute('content', 'initial-scale=' + scale + ', maximum-scale=' + scale + ', minimum-scale=' + scale + ', user-scalable=no');
if (docEl.firstElementChild) {
docEl.firstElementChild.appendChild(metaEl);
} else {
var wrap = doc.createElement('div');
wrap.appendChild(metaEl);
doc.write(wrap.innerHTML);
}
}
function refreshRem(){
var width = docEl.getBoundingClientRect().width;
if (width / dpr > 540) {
width = 540 * dpr;
}
var rem = width / 10;
docEl.style.fontSize = rem + 'px';
flexible.rem = win.rem = rem;
}
win.addEventListener('resize', function() {
clearTimeout(tid);
tid = setTimeout(refreshRem, 300);
}, false);
win.addEventListener('pageshow', function(e) {
if (e.persisted) {
clearTimeout(tid);
tid = setTimeout(refreshRem, 300);
}
}, false);
if (doc.readyState === 'complete') {
doc.body.style.fontSize = 12 * dpr + 'px';
} else {
doc.addEventListener('DOMContentLoaded', function(e) {
doc.body.style.fontSize = 12 * dpr + 'px';
}, false);
}
refreshRem();
flexible.dpr = win.dpr = dpr;
flexible.refreshRem = refreshRem;
flexible.rem2px = function(d) {
var val = parseFloat(d) * this.rem;
if (typeof d === 'string' && d.match(/rem$/)) {
val += 'px';
}
return val;
}
flexible.px2rem = function(d) {
var val = parseFloat(d) / this.rem;
if (typeof d === 'string' && d.match(/px$/)) {
val += 'rem';
}
return val;
}
})(window, window['lib'] || (window['lib'] = {}));
</script>
<script>
var data = OpenInstall.parseUrlParams();///openinstall.js中提供的工具函数,解析url中的所有查询参数
new OpenInstall({
/*appKey必选参数,openinstall平台为每个应用分配的ID*/
appKey : "t7heo9",
/*OpenInstall初始化完成的回调函数,可选*/
onready : function() {
var vm = this;
document.getElementById("download").onclick = function (){
vm.schemeWakeup(); //唤起app
vm.wakeupOrInstall(); //下载app
openinstall.getInstall( //待确定h5页面要不要加(获取所传参数方法)
8,
function(result) {
console.log('getInstall : channel=' + result.channelCode + ', data=' + result.bindData);
}
);
};
}
}, data);
// 初始化方法
window.onload = function(){
var dom = document.getElementById("xpopup");
var page = document.getElementById("body");
var ua = window.navigator.userAgent.toLowerCase();
if(ua.match(/MicroMessenger/i) == 'micromessenger'){
dom.style.display="black";
page.style.overflow="hidden";
return true; //是微信
}else{
dom.style.display="none";
return false; //不是微信
}
}
//解决ios下 双击放大问题!
var lastTouchEnd = 0;
document.documentElement.addEventListener('touchend', function (event) {
var now = Date.now();
if (now - lastTouchEnd <= 300) {
event.preventDefault();
}
lastTouchEnd = now;
}, false);
</script>
</head>
<body id='body' style="overflow-x:hidden">
<div id="hc">
<!-- 微信浏览器弹窗 -->
<div class="images ximg" id="xpopup">
<img class="w80" src="https://sizex-app.oss-accelerate.aliyuncs.com/92066ce78abb4d0ab9a5f29a78c005ab/base/landing-popup.png">
</div>
<!-- 顶部标题 -->
<div class="image" id="download" >
<img src="https://sizex-app.oss-accelerate.aliyuncs.com/92066ce78abb4d0ab9a5f29a78c005ab/base/landing-header.png">
</div>
<!-- 下载app领福利 -->
<div class="image" id="downloadBtn" >
<img src="https://sizex-app.oss-accelerate.aliyuncs.com/92066ce78abb4d0ab9a5f29a78c005ab/base/landing-content.png">
</div>
<!-- 商品列表 -->
<div class="image" id="downloadButton" >
<img src="https://sizex-app.oss-accelerate.aliyuncs.com/92066ce78abb4d0ab9a5f29a78c005ab/base/landing-product.png">
</div>
<!-- 底部小程序二维码 -->
<div class="image">
<img src="https://sizex-app.oss-accelerate.aliyuncs.com/92066ce78abb4d0ab9a5f29a78c005ab/base/landing-bottom.png">
</div>
</div>
</body>
<style>
* {
padding: 0;
margin: 0;
}
.image{
width: 100%;
}
.images{
height: 100%;
position: absolute;
width: 100%;
z-index: 10;
top: 0px;
background-color: rgba(0,0,0,0.7);
}
.image img{width: 100%;}
.w80{
position: absolute;
width: 80%;
top:30px;
right: 30px;
z-index: 10;
}
.ximg{
position: absolute;
width: 100%;
z-index: 10;
top: 0px;
}
</style>
</html>
app.vue
onLaunch: async (options)=>{
// #ifdef APP-PLUS
//openinstall插件安装绑粉功能实现
const openinstall = uni.requireNativePlugin('openinstall-plugin');
await openinstall.init();
await openinstall.getInstall(8, //获取安装绑定用户数据
async (result)=>{
if(result.bindData){
let xdata = JSON.parse(result.bindData);
await uni.setStorageSync('shareId',xdata.uuid);
}
}
);
APPUpdate(); //判断app是否需要升级
// #endif
// #ifdef MP-WEIXIN
this.autoUpdate();
//#endif
},