一、市场部分常见app包名
二、判断是否安装了某款app并唤醒(以微信为例)
注意:Android平台需要通过设置appInf的pname属性(包名)进行查询。 iOS平台需要通过设置appInf的action属性(Scheme)进行查询,在iOS9以后需要添加白名单才可查询,在manifest.json文件plus->distribute->apple->urlschemewhitelist节点下添加(如urlschemewhitelist:[“weixin”])。
这里使用HTML5的api: plus.runtime.isApplicationExist.(appInf)
// #ifdef APP-PLUS
// #endif
//条件编译:否则浏览器会报错:plus is not defined
//请使用真机查看效果
// #ifdef APP-PLUS
const isApp = plus.runtime.isApplicationExist({
pname: 'com.tencent.mm'
});
if (isApp) {
//已安装
plus.runtime.launchApplication({
pname: "com.tencent.mm",
action: "weixin://",
}, (e) => {
console.log("e", e)
})
} else {
// 没有安装
console.log('没有安装', '999999999');
}
// #endif
三、传递参数(以唤醒微信为例)
(示例):唤醒并且传递参数还是使用 plus.runtime.launchApplication(appInf,err) 函数 其中appInf 对象的extra key 为传递到其他引用参数,传递必须为对象
// #ifdef APP-PLUS
// #endif
//条件编译:否则浏览器会报错:plus is not defined
//请使用真机查看效果
// #ifdef APP-PLUS
const isApp = plus.runtime.isApplicationExist({
pname: 'com.tencent.mm'
});
let senddata = {"uid":110,"username":"zhangsan","nickname":"张三","email":"917466880@qq.com"}
if (isApp) {
//已安装
plus.runtime.launchApplication({
pname: "com.tencent.mm",
action: "weixin://",
extra: senddata //传递的参数
}, (e) => {
uni.showToast({
title: "打开失败",
icon: "none"
})
console.log("e", e)
})
} else {
// 没有安装
console.log('没有安装', '999999999');
}
// #endif
四、接收其他APP传递过来的参数
1、Android - 2.2+ (支持) :
如果是第三方APP调用,则把传递过来的参数组合成JSON格式字符串,如“{“name”:“admin”,“password”:“123456”}”; 如果是通过URL Scheme调用则将协议头(前缀)和参数组合成字符串,如“streamapp://name=XiaoMing&password=123456”。
2、iOS - 4.3+ (支持) :
把第三方传递过来的参数组合成字符串,如“name=admin&password=123456”,建议第三方程序传递JSON格式字符串; 注:由于iOS平台原生传递参数与URL Scheme一致,通过URL Scheme启动应用时也没有协议头数据(前缀)。
//第三方程序调用时传递给程序的参数 plus.runtime.arguments
JSON.stringify(plus.runtime.arguments)
五、温馨提示:
使用plus 开始的方法需要条件编译否则会在h5端出错,
如果在uniapp 里面使用不需要注册对应的事件
在vue 中使用也必须在真机里面使用,所有的plus开始的函数必须要通过window.plus.xxx