一、IOS
ios的浏览器唤起app的方式一般有两种,url schema和universal link两种方式,universal link适合ios9+以后的系统。测试过钉钉app内置的浏览器,url schema方式不起作用,universal link的方式可以使用。
二、Android
Android的浏览器唤起app的方式有三种,一种是deep links(类似url schema),一种是app links(有点类似ios的universal link),还有一种是chrome(intent://host/#Intent;scheme=;package=;end)内置的intent方式。
目前在钉钉app内置的浏览器中三种方式都试过,都没有成功唤起app。
在浏览器中试过url schema可以唤起,chrome的intent也可以,app links没有成功,看网上说app links的方式国内不能使用。
再一个就是使用钉钉的jsapi来唤起app,这个接口再现有的文档中已经没用介绍了,但是在js的文件中还保留,这个api只能够唤起app,目前没有找到方式传递参数。
dd.device.launcher.launchApp({
app:', //iOS:应用scheme;Android:应用包名
activity :'', //仅限Android,打开指定Activity,可不传。如果为空,就打开App的Main入口Activity
onSuccess : function(data) {
alert(JSON.stringify(data));
},
onFail : function(err) {
alert(JSON.stringify(err));
}
调用这个api需要在钉钉开放平台中创建应用,获得响应的ticket
dd.config({
agentId: // 必填,微应用ID
corpId: ,//必填,企业ID
timeStamp: '1648629796000', // 必填,生成签名的时间戳
nonceStr: '123456', // 必填,自定义固定字符串。
signature:, // 必填,签名
type:0, //选填。0表示微应用的jsapi,1表示服务窗的jsapi;不填默认为0。该参数从dingtalk.js的0.8.3版本开始支持
jsApiList : [
'runtime.info',
'biz.contact.choose',
'device.notification.confirm',
'device.notification.alert',
'device.notification.prompt',
'biz.ding.post',
'biz.util.openLink',
'device.launcher.launchApp',
'device.launcher.checkInstalledApps'
] // 必填,需要使用的jsapi列表,注意:不要带dd。
});
还有一个接口,可以检测系统有没有安装对应的app
dd.device.launcher.checkInstalledApps({
apps: [''], //iOS:应用scheme;Android:应用包名
onSuccess : function(data) {
alert(JSON.stringify(data));
},
onFail : function(err) {
alert(JSON.stringify(err));
}
});