Android平台、iOS平台设置UrlSchemes,实现被第三方应用调用
如果你的App想要在手机系统中注册一个scheme协议,方便其他App调用你的App,那么可以根据本文设置。
一、安卓平台设置
1、设置UrlSchemes
打开项目的manifest.json文件,切换到“代码视图”
(1)5+App项目:在manifest.json文件的"plus"->"distribute"->"google"下添加schemes节点数据如下:
"plus": {
"distribute": {
"google": {
"schemes": [
"test"
],
//...
},
//...
},
(2)uni-app项目:把上面的schemes节点数据放到manifest.json的"app-plus"->"distribute"->"android"节点下
(3)值域说明:
为字符串数组,每个字符串为一个urlscheme,使用小写字母(不要使用特殊字符、中文),可设置多个。比如设置为test,那么其他App呼起你的app的scheme协议就是test://。
保存后提交App云端打包生效。
2、浏览器中通过href启动应用
安装应用后,我们可以在html页面中,通过href直接调用应用:
<a href="test://abc">test:<a>
3、uni-app中处理urlscheme启动传递的参数
在App.vue的onShow里可以直接获取
onShow: function() {
var args= plus.runtime.arguments;
if(args){
// 处理args参数,如直达到某新页面等
}
}
4、5+ APP中处理urlscheme启动传递的参数
在其它应用中通过href调用Url Scheme传递过来的值,可以通过plus.runtime.arguments获取,其值为完整的urlscheme字符串,如上面href的值启动应用后获取的plus.runtime.arguments值为“test://abc”。代码示例如下:
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);
二、iOS平台设置
1、设置UrlSchemes
(1)可视化界面配置:打开项目的manifest.json文件,在“App常用其它设置”页面“iOS设置”下的UrlSchemes中配置scheme字段:
注意:多个scheme使用','分割
2、代码视图配置:打开项目的manifest.json文件,切换到“代码视图”
(1)5+App项目:在manifest.json文件的"plus"->"distribute"->"apple"节点下添加urltypes数据
(2)uni-app项目:在manifest.json的"app-plus"->"distribute"->"ios"节点下添加urltypes数据
urltypes节点数据如下:
"plus": {
"distribute": {
"apple": {
"urltypes": [
{
"urlidentifier":"com.xxx.test",
"urlschemes": [
"test"
]
}
],
//...
},
//...
},
//...
},
//...
值域说明:urlidentifier为标识,可自定义,格式为反向域名格式;
urlschemes为要指定的scheme值,字符串数组,使用小写字母,可设置多个。 比如设置为test,那么其他App呼起你的app的scheme协议就是test://。
3、uni-app中处理urlscheme启动传递的参数
在App.vue 中onLaunch 里获取
onLaunch: function() {
plus.globalEvent.addEventListener('newintent', (e)=>{
var args= plus.runtime.arguments;
if(args){
// 处理args参数,如直达到某新页面等
}
});
}
在App.vue的onShow里获取
onShow: function() {
setTimeout(function(){
var args= plus.runtime.arguments;
if(args){
// 处理args参数,如直达到某新页面等
}
},10);
}