目标

5+App 或 uniapp 中 设置UrlSchemes,实现被第三方应用调用

原文

https://ask.dcloud.net.cn/article/409

详细

设置UrlSchemes

打开项目的manifest.json文件,切换到“代码视图”

  • 5+App项目

    在manifest.json文件的”plus”->”distribute”->”google”下添加schemes节点数据如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    复制代码"plus": {  
    "distribute": {
    "google": {
    "schemes": [
    "test"
    ],
    //...
    },
    //...
    },
    //...
    },
    //...
  • uni-app项目
    把上面的schemes节点数据放到manifest.json的”app-plus”->”distribute”->”android”节点下

    image-20210518231134853

值域说明:为字符串数组,每个字符串为一个urlscheme,使用小写字母(不要使用特殊字符、中文),可设置多个。比如设置为test,那么其他App呼起你的app的scheme协议就是test://。

保存后提交App云端打包生效

浏览器中通过href启动应用

安装应用后,我们可以在html页面中,通过href直接调用应用:

1
复制代码<a href="test://abc">test:<a><br/>

5+ APP中处理urlscheme启动传递的参数

在其它应用中通过href调用Url Scheme传递过来的值,可以通过plus.runtime.arguments获取
其值为完整的urlscheme字符串,如上面href的值启动应用后获取的plus.runtime.arguments值为“test://abc”
代码示例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
document.addEventListener('plusready',function(){  
checkArguments();
},false);
// 判断启动方式
function checkArguments(){
console.log("plus.runtime.launcher: "+plus.runtime.launcher);
var args= plus.runtime.arguments;
if(args){
// 处理args参数,如直达到某新页面等
}
}
// 处理从后台恢复
document.addEventListener('newintent',function(){
console.log("addEventListener: newintent");
checkArguments();
},false);

uni-app中处理urlscheme启动传递的参数

在App.vue的onShow里可以直接获取

1
2
3
4
5
6
onShow: function() {  
var args= plus.runtime.arguments;
if(args){
// 处理args参数,如直达到某新页面等
}
}

**HBuilder/HBuilderX自带真机运行基座的UrlSchemes为”hbuilder://“**,方便开发者调测。

如果是本地(离线)打包,请自行在原生工程中配置

iOS平台请参考:
iOS平台通过UrlSchemes与第三方应用相互调用