DCloud_App_Array
DCloud_App_Array
  • 发布:2014-09-24 16:08
  • 更新:2024-11-18 13:26
  • 阅读:116721

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 陈锐 Potato1314 小诺小言 3***@qq.com 3***@qq.com skysowe 1***@163.com Smart900zhang i***@163.com aliang888 我不是大v 诸葛逍遥 123wangyi 大图APP 六七四十二 5***@qq.com s***@163.com

要回复文章请先登录注册

今天回复我了吗

今天回复我了吗

我想请问下,在别的app调用我们的APP的时候,我们APP再返回到别的APP
2019-07-03 14:09
今天回复我了吗

今天回复我了吗

"urltypes": [{
"urlidentifier": "vip.xxxx.www",
"urlschemes": [
"xxx"
]
}]
是这样子配置的吗,云打包了 在safari中调不起来
2019-06-25 16:52
众汇联创

众汇联创

回复 DCloud_App_Array :
非常感谢。好像我把schemes里的下划线去掉就好用了
2019-05-16 09:21
DCloud_App_Array

DCloud_App_Array (作者)

回复 众汇联创 :
配置后需要提交云端打包才能生效,是在哪里调不起来?如果是自己写另外一个应用,需将scheme添加到另外一个应用的scheme白名单中。
如果还有问题请提供应用的appid(manifest.json中的id字段值)
2019-05-15 18:06
众汇联创

众汇联创

/* 应用发布信息 */
"android": {
"schemes": ["xxx"],
/* android打包配置 */
"permissions": [
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
"<uses-permission android:name=\"android.permission.INSTALL_PACKAGES\"/>",
"<uses-permission android:name=\"android.permission.INTERNET\"/>"
]
},
"ios": {
"urltypes": [{
"urlidentifier": "com.xx.xx",
"urlschemes": ["xxx"]
}],
/* urlscheme白名单 */
"urlschemewhitelist": ["xxxx"]
}

uni-app是这样配置吧?为什么重新打包后还调用不起来呢。用同样的方法调用taobao://能打开淘宝,调用我自己的scheme就打不开。求帮忙啊,折腾了三个星期了
2019-05-15 16:02
2***@qq.com

2***@qq.com

一个h5页面,然后我想判断一下app是否安装,然后安装就打开,没有安装就跳转到App Store
2019-05-05 11:52
2***@qq.com

2***@qq.com

回复 DCloud_App_Array :
我们继承了钉钉分享,这个newintent事件就监听不到了 ,之前用newintent是可以监听到的。
我的意思是resume事件不能获取到plus.runtime.arguments里的参数吗?
2019-04-11 16:30
DCloud_App_Array

DCloud_App_Array (作者)

回复 2***@qq.com :
如果是应用从后台切换到前台,应该监听newintent事件(使用HelloH5+应用测试是可以正常获取参数的):
document.addEventListener("newintent",function(){
console.log( currentTimeString()+" 从第三方应用启动:"+plus.runtime.arguments );
}, false );
2019-04-11 13:10
2***@qq.com

2***@qq.com

回复 DCloud_App_Array :
你好 ,使用plus.runtime.arguments 获取唤起app的url的参数时,必须使用 newintent 方法才行吗 ?
2019-04-10 15:49
2***@qq.com

2***@qq.com

使用plus.runtime.arguments 获取唤起app的url的参数时,必须使用 newintent 方法才行吗 ?使用resume不可以吗?
最近ios项目介入了钉钉分享,发现监测不到newintent事件了。求解答
2019-04-10 13:44