DCloud_App_Array
DCloud_App_Array
  • 发布:2014-09-24 16:08
  • 更新:2022-08-24 17:51
  • 阅读:112708

iOS平台设置UrlSchemes,实现被第三方应用调用

分类:HTML5+

此文档不再维护,请参考新文档地址:https://uniapp.dcloud.io/tutorial/app-ios-schemes

如果你的App想要在手机系统中注册一个scheme协议,方便其他App调用你的App,那么可以根据本文设置。

设置UrlSchemes

可视化界面配置

打开项目的manifest.json文件,在“App常用其它设置”页面“iOS设置”下的UrlSchemes中配置scheme字段:

注意:多个scheme使用','分割

代码视图配置

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

  • 5+App项目
    在manifest.json文件的"plus"->"distribute"->"apple"节点下添加urltypes数据
  • 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://。

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

浏览器中通过href启动应用

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

<a href="test://abc">test:<a><br/>

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);

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);   
}

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

如果是离线打包,自行在原生工程中配置

iOS平台设置UrlSchemes白名单
Android平台设置UrlSchemes,实现被第三方应用调用

26 关注 分享
dreamboycx Trust 2***@qq.com 8***@qq.com 知行合一 dipper echoer hylong 1***@qq.com 陈锐 4***@qq.com 小诺小言 3***@qq.com 3***@qq.com skysowe 1***@163.com Smart900zhang i***@163.com aliang888 我不是大v 诸葛逍遥 123wangyi 大图APP 六七四十二 5***@qq.com s***@163.com

要回复文章请先登录注册

4***@qq.com

4***@qq.com

回复 1***@163.com :
解决了么?
2022-08-24 17:51
x***@163.com

x***@163.com

回复 1***@163.com :
解决了吗哥,安卓可以支付宝授权网页登录,ios打开支付宝后不能返回直接APP了
2022-05-21 17:06
b***@163.com

b***@163.com

回复 a***@163.com :
"urltypes" : "XXXX",
"capabilities" : {
"entitlements" : {
"com.apple.developer.associated-domains" : [ "XXX.XXX" ]
}
}
2022-03-24 10:32
b***@163.com

b***@163.com

回复 8***@qq.com :
你跳转的时候schemes协议//后面就是你要写的参数,如果是对象先字符串编码一下再传,如果是字符串直接写,最后接收的时候你就解析你自己传过来的字符串就好了,你到时基座调试打印就看的明明白白了
2022-03-24 10:30
b***@163.com

b***@163.com

回复 123qing123 :
hbuilder这个约定的字符串云打包需要配置在APP常用其它设置里面
2022-03-24 10:27
b***@163.com

b***@163.com

回复 123qing123 :
因为要云打包过后你的清单文件里面的配置才生效,比如你想要自定义的这个schemes协议跳转,离线打包如果你发现很多功能和你预期不一样,不要怀疑自己,那是因为本地缺失了一些东西,离线打包算是废了,云打包才有那些东西
2022-03-24 10:25
123qing123

123qing123

安卓使用标准基座, <a href="hbuilder://121212">打开APP</a>为什么无效
2022-03-17 14:04
8***@qq.com

8***@qq.com

怎么传多个参数
2021-10-19 14:46
a***@163.com

a***@163.com

无论是打包还是使用手机的usb调试都一样,究竟是demo问题还是我的配置出了问题?
2021-10-11 17:11
a***@163.com

a***@163.com

我的ios 配置了 UrlSchemes,怎么自己写个demo用a标签打开的时候没有效果的?
"urltypes" : [
{
"urlidentifier" : "com.91yu.m",
"urlschemes" : ["jiuyu"]
}
]
2021-10-11 17:09