已下载APP只需要唤醒时(微信里面直接打开用wx-open-launch-app(挺麻烦的建议看清文档再做需要安卓ios配合))
使用callapp-lib插件
//安装
npm install --save callapp-lib
//引入(我是封装的公共方法在 mixin.js中引入)
import CallApp from 'callapp-lib';
this.options = {
scheme: { //打开IOS的标识
protocol: ''
},
intent: { //打开安卓标识
package: '', //安卓协议 com.tencent.mm weixin
scheme: 'xxx',
},
appstore: '', //App Store地址
yingyongbao: 'xxx', //应用宝地址
fallback: '', //唤端失败后跳转的地址。
timeout: 3000, //等待唤端的时间(单位: ms),超时则判断为唤端失败。
}
this.callLib = new CallApp(this.options);
this.callLib.open({
path: 'h5',
param, // 打开APP某个页面时需要接收的参数
// 自定义唤端失败回调函数,传递callback会覆盖callapp-lib库中默认的唤端失败处理逻辑
callback: function() {
console.log('唤端失败的处理');
uni.navigateTo({
url: '/download'
})
}
});
但没有下载APP 走callLib的唤端失败的处理 写一个下载页面
根据不同手机型号跳转到不同的商店 安卓我写了遮罩层 用默认浏览器打开下载app
const ua = navigator.userAgent;
let isAndroid = ua.indexOf("Android") > -1 || ua.indexOf("Linux") > -1; //android终端
let isIOS = !!ua.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
const isHuawei = ua.match(/huawei/i);
const isHonor = ua.match(/honor/i);
const isOppo = ua.match(/oppo/i);
const isOppoR15 = ua.match(/pacm00/i);
const isVivo = ua.match(/vivo/i);
const isXiaomi = ua.match(/mi\s/i);
const isXIAOMI = ua.match(/xiaomi/i);
const isXiaomi2s = ua.match(/mix\s/i);
const isRedmi = ua.match(/redmi/i);
//判断是不是微信
let isWeixin =
ua.toLowerCase().match(/MicroMessenger/i) == "micromessenger";
// 如果是安卓微信端打开,引导去浏览器打开
if (isAndroid&&isWeixin) {
this.isMask = true;
return;
}
let url = "";
if (isAndroid) {
if (isHuawei || isHonor) {
url = this.huawei
} else if (isOppo || isOppoR15) {
url = this.oppo
} else if (isVivo) {
url = this.vivo
} else if (isXiaomi || isRedmi || isXiaomi2s || isXIAOMI) {
url = this.xiaomi
} else {
url = this.yingyongbao
}
} else if (isIOS) {
url = this.ios;
}
window.location.href = url
wx-open-launch-app从微信直接打开app
微信内网页跳转APP功能
太麻烦了,因为我服务号与开放平台账号不是同一个主体 换主体等了很久,还有APP必须接入微信的openSDK 要不然不让跳