更新时间:2022-10-2
钉钉JSAPI如何使用及相关注意事项。
概述
H5微应用JSAPI为应用提供了调用原生控件的能力,帮助开发者高效使用获取手机基础信息、定位等手机系统的能力,同时可以直接使用扫一扫、分享、钉盘等钉钉特有的能力,带给微应用接近原生代码的体验。
钉钉微应用PC端开发和移动端开发已经统一,均可使用下面方式进行引入调用。
准备工作
推荐开发者使用npm的方式进行开发,不仅可在开发环境轻松调试,也可放心地在生产环境打包部署使用,享受整个生态圈和工具链带来的诸多好处。
- 使用npm安装。
- 浏览器引入。
在浏览器中使用 script 和 link 标签直接引入文件,并使用全局变量 dd。
JSAPI鉴权
钉钉提供的JSAPI有很多是手机的基础能力,对这些JSAPI的调用不需要进行鉴权(即不需要进行dd.config),只需要保证在dd.ready里面调用即可。对于一些钉钉业务相关、安全相关的JSAPI的调用,需要开发者先进行鉴权然后再调用。
了解JSAPI是否需要鉴权,请查看JSAPI总览。
关于JSAPI鉴权的详细信息,请参考JSAPI鉴权。
调用JSAPI组件
所有JSAPI组件的调用,必须在dd.ready里面执行。
dd.ready(function() {// dd.ready参数为回调函数,在环境准备就绪时触发,jsapi的调用需要保证在该回调函数触发后调用,否则无效。 dd.runtime.permission.requestAuthCode({corpId: "corpid",onSuccess: function(result) {/*{ code: 'hYLK98jkf0m' //string authCode }*/ },onFail : function(err) {} }); });
通过error接口处理失败验证
dd.config验证失败会执行error函数,错误信息可以在返回的error参数中查看,下面为error信息示例:
dd.error(function(error){ /** { errorMessage:"错误信息",// errorMessage 信息会展示出钉钉服务端生成签名使用的参数,请和您生成签名的参数作对比,找出错误的参数 errorCode: "错误码" } **/ alert('dd error: ' + JSON.stringify(error)); });

接口约定
- 所有接口都为异步。
- 接受一个object类型的参数。
- 成功回调 onSuccess(某些异步接口的成功回调,将在事件触发时被调用,具体详情请查看相关onSuccess回调时机)。
- 失败回调 onFail
更新时间:2022-10-2
钉钉提供的前端JSAPI总览。
扫码体验

同时,钉钉提供了前端API调试工具JSAPI Explorer,供开发者体验提供的前端JSAPI功能。
分类 | 接口说明 | JSAPI名称 | 是否需鉴权 | Android | iOS | PC |
免登 | runtime.permission.requestAuthCode | 不需要 | 支持 | 支持 | 支持 | |
runtime.permission.requestOperateAuthCode | 需要 | 支持 | 支持 | 支持 | ||
设备 | device.base.getPhoneInfo | 不需要 | 支持 | 支持 | 不支持 | |
device.base.getUUID | 需要 | 支持 | 支持 | 不支持 | ||
device.base.getInterface | 需要 | 支持 | 支持 | 不支持 | ||
device.base.getWifiStatus | 不需要 | 支持 | 支持 | 不支持 | ||
device.connection.getNetworkType | 不需要 | 支持 | 支持 | 不支持 | ||
device.nfc.nfcRead | 不需要 | 支持 | 不支持 | 不支持 | ||
device.nfc.nfcWrite | 需要 | 支持 | 不支持 | 不支持 | ||
biz.util.setScreenKeepOn | 不需要 | 支持 | 支持 | 不支持 | ||
runtime.monitor.getLoadTime | 不需要 | 支持 | 支持 | 不支持 | ||
device.base.openSystemSetting | 不需要 | 不支持 | 支持 | 不支持 | ||
device.base.openSystemSetting | 不需要 | 支持 | 不支持 | 不支持 | ||
日期和月历 | biz.util.datepicker | 不需要 | 支持 | 支持 | 不支持 | |
biz.util.timepicker | 不需要 | 支持 | 支持 | 不支持 | ||
biz.util.datetimepicker | 不需要 | 支持 | 支持 | 不支持 | ||
biz.calendar.chooseDateTime | 不需要 | 支持 | 支持 | 不支持 | ||
biz.calendar.chooseOneDay | 不需要 | 支持 | 支持 | 不支持 | ||
biz.calendar.chooseHalfDay | 不需要 | 支持 | 支持 | 不支持 | ||
biz.calendar.chooseInterval | 不需要 | 支持 | 支持 | 不支持 | ||
通讯录选人 | biz.contact.complexPicker | 需要 | 支持 | 支持 | 支持 | |
biz.contact.departmentsPicker | 需要 | 支持 | 支持 | 支持 | ||
biz.contact.createGroup | 需要 | 支持 | 支持 | 不支持 | ||
biz.contact.setRule | 需要 | 支持 | 支持 | 不支持 | ||
biz.contact.chooseMobileContacts | 需要 | 支持 | 支持 | 不支持 | ||
biz.contact.choose | 需要 | 不支持 | 不支持 | 支持 | ||
角色 | biz.contact.rolesPicker | 需要 | 支持 | 支持 | 不支持 | |
业务 | biz.util.share | 不需要 | 支持 | 支持 | 不支持 | |
biz.util.chosen | 不需要 | 支持 | 支持 | 不支持 | ||
biz.clipboardData.setData | 需要 | 支持 | 支持 | 不支持 | ||
biz.microApp.openApp | 不需要 | 支持 | 支持 | 不支持 | ||
导航栏 | 拼接dd_nav_bgcolor参数 | 不需要 | 支持 | 支持 | 不支持 | |
拼接dd_orientation参数 | 不需要 | 支持 | 支持 | 不支持 | ||
biz.navigation.setTitle | 不需要 | 支持 | 支持 | 支持 | ||
biz.navigation.setIcon | 不需要 | 支持 | 支持 | 不支持 | ||
biz.navigation.setLeft | 不需要 | 不支持 | 支持 | 支持 | ||
biz.navigation.close | 不需要 | 支持 | 支持 | 不支持 | ||
biz.navigation.quit | 不需要 | 不支持 | 不支持 | 支持 | ||
biz.navigation.goBack | 不需要 | 支持 | 支持 | 不支持 | ||
biz.navigation.replace | 不需要 | 支持 | 支持 | 不支持 | ||
弹窗 | device.notification.alert | 不需要 | 支持 | 支持 | 支持 | |
device.notification.confirm | 不需要 | 支持 | 支持 | 支持 | ||
device.notification.prompt | 不需要 | 支持 | 支持 | 支持 | ||
device.notification.vibrate | 不需要 | 支持 | 支持 | 不支持 | ||
device.notification.showPreloader | 不需要 | 支持 | 支持 | 不支持 | ||
device.notification.hidePreloader | 不需要 | 支持 | 支持 | 不支持 | ||
device.notification.toast | 不需要 | 支持 | 支持 | 支持 | ||
device.notification.actionSheet | 不需要 | 支持 | 支持 | 支持 | ||
device.notification.modal | 不需要 | 支持 | 支持 | 不支持 | ||
device.notification.extendModal | 不需要 | 支持 | 支持 | 不支持 | ||
biz.util.multiSelect | 不需要 | 支持 | 支持 | 不支持 | ||
会话 | biz.chat.chooseConversationByCorpId | 需要 | 支持 | 支持 | 支持 | |
biz.chat.toConversation | 需要 | 支持 | 支持 | 不支持 | ||
biz.chat.openSingleChat | 需要 | 支持 | 支持 | 不支持 | ||
电话 | biz.telephone.call | 需要 | 支持 | 支持 | 不支持 | |
biz.telephone.showCallMenu | 需要 | 支持 | 支持 | 不支持 | ||
biz.telephone.checkBizCall | 需要 | 支持 | 支持 | 不支持 | ||
biz.telephone.quickCallList | 需要 | 支持 | 支持 | 支持 | ||
DING | biz.ding.create | 需要 | 支持 | 支持 | 支持 | |
biz.ding.post | 需要 | 不支持 | 不支持 | 支持 | ||
文件 | biz.util.isLocalFileExist | 不需要 | 不支持 | 不支持 | 支持 | |
biz.util.openLocalFile | 不需要 | 不支持 | 不支持 | 支持 | ||
biz.util.uploadFile | 不需要 | 支持 | 不支持 | 不支持 | ||
biz.util.downLoadFile | 不需要 | 不支持 | 不支持 | 支持 | ||
存储 | util.domainStorage.setItem | 不需要 | 支持 | 支持 | 不支持 | |
util.domainStorage.getItem | 不需要 | 支持 | 支持 | 不支持 | ||
util.domainStorage.removeItem | 不需要 | 支持 | 支持 | 不支持 | ||
钉盘 | biz.cspace.saveFile | 需要 | 支持 | 支持 | 不支持 | |
biz.util.uploadAttachment | 需要 | 支持 | 支持 | 支持 | ||
biz.cspace.preview | 需要 | 支持 | 支持 | 支持 | ||
biz.cspace.chooseSpaceDir | 需要 | 支持 | 支持 | 不支持 | ||
图片 | biz.util.chooseImage | 需要 | 支持 | 支持 | 不支持 | |
biz.util.compressImage | 不需要 | 支持 | 支持 | 不支持 | ||
biz.util.previewImage | 不需要 | 支持 | 支持 | 支持 | ||
地图 | device.geolocation.get | 需要 | 支持 | 支持 | 不支持 | |
device.geolocation.start | 需要 | 支持 | 支持 | 不支持 | ||
device.geolocation.stop | 需要 | 支持 | 支持 | 不支持 | ||
device.geolocation.status | 不需要 | 支持 | 支持 | 不支持 | ||
biz.map.locate | 需要 | 支持 | 支持 | 不支持 | ||
biz.map.search | 需要 | 支持 | 支持 | 不支持 | ||
biz.map.view | 需要 | 支持 | 支持 | 不支持 | ||
音频 | device.audio.startRecord | 需要 | 支持 | 支持 | 不支持 | |
device.audio.stopRecord | 需要 | 支持 | 支持 | 不支持 | ||
device.audio.onRecordEnd | 需要 | 支持 | 支持 | 不支持 | ||
device.audio.download | 需要 | 支持 | 支持 | 不支持 | ||
device.audio.play | 需要 | 支持 | 支持 | 不支持 | ||
device.audio.pause | 需要 | 支持 | 支持 | 不支持 | ||
device.audio.resume | 需要 | 支持 | 支持 | 不支持 | ||
device.audio.stop | 需要 | 支持 | 支持 | 不支持 | ||
device.audio.onPlayEnd | 需要 | 支持 | 支持 | 不支持 | ||
device.audio.translateVoice | 需要 | 支持 | 支持 | 不支持 | ||
摇一摇 | device.accelerometer.watchShake | 不需要 | 支持 | 支持 | 不支持 | |
device.accelerometer.clearShake | 不需要 | 支持 | 支持 | 不支持 | ||
UI控件 | ui.input.plain | 不需要 | 支持 | 支持 | 不支持 | |
ui.progressBar.setColors | 不需要 | 支持 | 支持 | 不支持 | ||
ui.pullTorefresh.enable | 不需要 | 支持 | 支持 | 不支持 | ||
ui.pullToRefresh.stop | 不需要 | 支持 | 支持 | 不支持 | ||
ui.pullToRefresh.disable | 不需要 | 支持 | 支持 | 不支持 | ||
ui.webViewBounce.enable | 不需要 | 不支持 | 支持 | 不支持 | ||
ui.webViewBounce.disable | 不需要 | 不支持 | 支持 | 不支持 | ||
扫码 | biz.util.scan | 不需要 | 支持 | 支持 | 不支持 | |
biz.util.scanCard | 需要 | 支持 | 支持 | 不支持 | ||
支付 | biz.alipay.pay | 需要 | 支持 | 支持 | 不支持 | |
转屏横屏 | 拼接dd_orientation=auto参数 | 不需要 | 支持 | 支持 | 不支持 | |
拼接dd_orientation参数 | 不需要 | 支持 | 支持 | 不支持 | ||
拼接dd_full_screen=true参数 | 不需要 | 支持 | 支持 | 不支持 | ||
拼接dd_nav_translucent=true参数 | 不需要 | 支持 | 支持 | 不支持 | ||
device.screen.rotateView | 不需要 | 支持 | 支持 | 不支持 | ||
device.screen.resetView | 不需要 | 支持 | 支持 | 不支持 | ||
外部联系人 | biz.contact.externalComplexPicker | 需要 | 支持 | 支持 | 不支持 | |
biz.contact.externalEditForm | 需要 | 支持 | 支持 | 不支持 | ||
自定义联系人 | biz.customContact.choose | 需要 | 支持 | 支持 | 支持 | |
biz.customContact.multipleChoose | 需要 | 支持 | 支持 | 支持 | ||
打开新页面 | biz.util.open | 需要 | 支持 | 支持 | 支持 | |
biz.util.openLink | 不需要 | 支持 | 支持 | 支持 | ||
biz.util.openModal | 不需要 | 不支持 | 不支持 | 支持 | ||
biz.util.openSlidePanel | 不需要 | 不支持 | 不支持 | 支持 | ||
biz.util.invokeWorkbench | 需要 | 不支持 | 不支持 | 支持 | ||
biz.tabwindow.isTab | 不需要 | 不支持 | 不支持 | 支持 | ||
打开应用 | biz.navigation.navigateToPage | 不需要 | 支持 | 支持 | 不支持 | |
biz.navigation.navigateBackPage | 不需要 | 支持 | 支持 | 不支持 | ||
数据加解密 | biz.util.encrypt | 需要 | 支持 | 支持 | 不支持 | |
biz.util.decrypt | 需要 | 支持 | 支持 | 不支持 | ||
视频会议 | biz.conference.videoConfCall | 需要 | 支持 | 支持 | 支持 | |
办公电话 | biz.conference.getCloudCallInfo | 需要 | 支持 | 支持 | 支持 | |
biz.conference.createCloudCall | 需要 | 支持 | 支持 | 支持 | ||
biz.conference.getCloudCallList | 需要 | 支持 | 支持 | 支持 | ||
在线课堂 | biz.live.startClassRoom | 需要 | 不支持 | 不支持 | 支持 | |
授权 | biz.auth.requestAuthInfo | 需要 | 支持 | 支持 | 不支持 | |
biz.auth.requestAuthInfo | 需要 | 支持 | 支持 | 不支持 | ||
biz.auth.requestAuthInfo | 需要 | 支持 | 支持 | 不支持 | ||
专属钉钉 | biz.realm.getUserExclusiveInfo | 不需要 | 支持 | 支持 | 支持 | |
biz.ATMBle.exclusiveLiveCheck | 需要 | 支持 | 支持 | 不支持 |
更新时间:2022-10-2
钉钉提供的JSAPI有很多是手机的基础能力,对这些JSAPI的调用不需要进行鉴权(不需要进行dd.config),只需要在dd.ready里调用。对于一些钉钉业务、安全相关的JSAPI的调用,需要先鉴权,然后再调用。
了解JSAPI是否需要鉴权,请查看JSAPI鉴权。
接入必读
- 鉴权是针对微应用页面实现的。如果当前页面用到需要鉴权的JSAPI,此页面就需要执行鉴权流程。钉钉开放平台会获取当前页面中需要鉴权的JSAPI,然后执行鉴权。
要求开发者的签名signature值必须与开放平台的保持一致。 - 针对VUE单页面应用,鉴权需要对父页面实现,因为计算签名方法不支持路由页面地址。
实现流程如下,当使用了需要鉴权的子页面加载时,需要刷新父页面,使父页面完成鉴权流程,然后该子页面上就可以调用需要鉴权的JSAPI。
步骤一:获取access_token
- 企业内部应用可通过获取企业内部应用的access_token接口获取。
- 第三方企业应用可通过获取第三方应用授权企业的accessToken接口获取。
必须使用当前微应用的参数获取access_token,
步骤二:获取jsapi_ticket
通过获取jsapi_ticket接口获取jsapi_ticket时,请注意:
- 企业内部应用和第三方企业应用获取jsapi_ticket后,当jsapi_ticket未过期时,再次调用get_jsapi_ticket接口获取到的jsapi_ticket和老的jsapi_ticket值相同,只是过期时间续期2小时。
- 企业内部应用获取jsapi_ticket,一个appKey对应一个jsapi_ticket,所以在使用的时候需要将jsapi_ticket以appKey为维度进行缓存下来(设置缓存过期时间2小时),并不需要每次都通过接口拉取。
步骤三:获取签名参数
在前端进行鉴权之前,需要获取以下签名所需的参数:
参数 | 说明 | 开发企业内部应用 | ISV开发第三方企业应用 |
---|---|---|---|
url | 当前网页的URL,不包含#及其后面部分。 说明 如果是单页面应用,请参考本文的最上方开发前必读。 | — | — |
nonceStr | 自定义固定字符串。 | — | — |
agentId | 应用的标识 | 可以在开发者后台的应用详情页中获取。 | 可以从授权信息中获取到。 |
timeStamp | 时间戳 | 当前时间,但是前端和服务端进行校验时候的值要一致。 | 当前时间,但是前端和服务端进行校验时候的值要一致。 |
corpId | 企业ID | 企业的corpid,可以在开发者后台首页获取。 | 通过在页面地址上追加? |
步骤四:计算签名
在服务端通过sign(ticket
, nonceStr
, timeStamp
, url
)计算前端校验需要使用的签名信息。
示例代码:
import java.net.URL;import java.net.URLDecoder;import java.security.MessageDigest;import java.util.Formatter;import java.util.Random;/** * 计算dd.config的签名参数 **/public class DdConfigSign {/** * 计算dd.config的签名参数 * * @param jsticket通过微应用appKey获取的jsticket * @param nonceStr自定义固定字符串 * @param timeStamp 当前时间戳 * @param url 调用dd.config的当前页面URL * @return * @throws Exception */ public static String sign(String jsticket, String nonceStr, long timeStamp, String url) throws Exception {String plain = "jsapi_ticket=" + jsticket + "&noncestr=" + nonceStr + "×tamp=" + String.valueOf(timeStamp) + "&url=" + decodeUrl(url);try { MessageDigest sha1 = MessageDigest.getInstance("SHA-256"); sha1.reset(); sha1.update(plain.getBytes("UTF-8"));return byteToHex(sha1.digest()); } catch (Exception e) {throw new Exception(e.getMessage()); } }// 字节数组转化成十六进制字符串 private static String byteToHex(final byte[] hash) { Formatter formatter = new Formatter();for (byte b : hash) { formatter.format("%02x", b); }String result = formatter.toString(); formatter.close();return result; }/** * 因为ios端上传递的url是encode过的,android是原始的url。开发者使用的也是原始url, * 所以需要把参数进行一般urlDecode * * @param url * @return * @throws Exception */ private static String decodeUrl(String url) throws Exception { URL urler = new URL(url); StringBuilder urlBuffer = new StringBuilder(); urlBuffer.append(urler.getProtocol()); urlBuffer.append(":");if (urler.getAuthority() != null && urler.getAuthority().length() > 0) { urlBuffer.append("//"); urlBuffer.append(urler.getAuthority()); }if (urler.getPath() != null) { urlBuffer.append(urler.getPath()); }if (urler.getQuery() != null) { urlBuffer.append('?'); urlBuffer.append(URLDecoder.decode(urler.getQuery(), "utf-8")); }return urlBuffer.toString(); } public static String getRandomStr(int count) {String base = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; Random random = new Random(); StringBuffer sb = new StringBuffer();for (int i = 0; i < count; i++) { int number = random.nextInt(base.length()); sb.append(base.charAt(number)); }return sb.toString(); } }
步骤五:引入使用的JS
步骤六:JSAPI鉴权
示例代码:
- dd.config中所有的参数必须直接来自服务端,不能直接在前端定义。
- 一个页面只需要调用一次dd.config即可,重复调用会复用第一次调用的参数,单页应用(SPA)的router切换视为同一个页面。
dd.config({agentId: '', // 必填,微应用ID corpId: '',//必填,企业ID timeStamp: '', // 必填,生成签名的时间戳 nonceStr: '', // 必填,自定义固定字符串。 signature: '', // 必填,签名 type:0/1, //选填。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', ] // 必填,需要使用的jsapi列表,注意:不要带dd。}); dd.error(function (err) { alert('dd error: ' + JSON.stringify(err)); })//该方法必须带上,用来捕获鉴权出现的异常信息,否则不方便排查出现的问题
参数说明:
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
agentId | String | 是 | 微应用ID。 |
corpId | String | 是 | 企业的corpid。 |
timeStamp | String | 是 | 生成签名的时间戳。 |
nonceStr | String | 是 | 自定义固定字符串。 |
signature | String | 是 | JSAPI签名,可以参考简易教程中的获取签名的示例代码。 |
type | number | 否 | 如果是要调用服务窗的jsapi,请填1。 |
jsApiList | Array | 是 | 需要调用的jsapi列表。 |
步骤七:调用JSAPI
完成鉴权后,便可以在dd.ready里调用JSAPI了。
代码示例:
dd.ready(function() { dd.biz.contact.choose({ multiple: true, //是否多选:true多选 false单选; 默认true users: ['10001', '10002', ...], //默认选中的用户列表,员工userid;成功回调中应包含该信息 corpId: 'dingb4ff1079f84f8d54', //企业id max: 10, //人数限制,当multiple为true才生效,可选范围1-1500 onSuccess: function(data) { /* data结构 [{"name": "张三", //姓名 "avatar": "http://g.alicdn.com/avatar/zhangsan.png" //头像图片url,可能为空 "emplId": '0573', //员工userid }, ... ] */ }, onFail : function(err) {} });
代码示例
- 企业内部应用:JSAPI权限验证配置Demo-Java版本
- 第三方企业应用:JSAPI权限验证配置Demo-PHP版本
- 前端鉴权示例:PHP版本Demo.js
常见问题
- dd.config错误说明,提示“jsapi ticket读取失败”
"jsapi ticket读取失败", 这个错误是因为钉钉服务器没有成功读取到该企业的jsticket数据,原因可能为: - 报错提示“无效的agent_id”
需要检查appkey和agent_id所对应的应用,是否为同一个应用,必须是同一个应用下的agent_id和appkey才可以正常使用。
查看以下两项的值是否属于同一个应用。例如appkey对应的应用的agent_id为23456,b所对应的agent_id为23457,agent_id不同,可判断不是同一个应用,则会报错。 - 免登报错52013,签名校验失败
免登是指用户进入应用后,无需输入钉钉用户名和密码,应用程序可自动获取当前用户身份,进而登录系统的流程。
获取微应用免登授权码
使用以下代码获取免登授权码(调用此api不需要进行鉴权,即不需要进行dd.config)。获取的免登授权码有效期5分钟,且只能使用一次。接口说明,请参考获取微应用免登授权码
例如,微应用首页地址为https://www.dingtalk.com,需要获取当前访问用户的企业corpId值,微应用首页地址可改为https://www.dingtalk.com?corpId=$CORPID$。在进入该首页地址页面时,使用js方法获取当前页面URL,即可获取corpId值。
dd.ready(function() { dd.runtime.permission.requestAuthCode({corpId: "ding12345xxx", // 企业idonSuccess: function (info) {code = info.code // 通过该免登授权码可以获取用户身份 }});});
通过免登授权码换取用户身份
可以通过免登授权码和access_token获取用户的userid,然后通过userid获取用户的详细信息。详情请参考企业内部应用免登。
更新时间:2022-10-2
调用runtime.permission.requestAuthCode获取微应用免登授权码。
调试
访问JSAPI Explorer在线调试该接口。
使用说明
调用此api不需要进行鉴权,即不需要进行dd.config。
客户端 | Android | iOS | PC |
---|---|---|---|
钉钉版本 | 支持 | 支持 | 支持 |
dd.runtime.permission.requestAuthCode({corpId: "corpid",onSuccess: function(result) {/*{ code: 'hYLK98jkf0m' //string authCode }*/ },onFail : function(err) {} })
参数说明
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
corpId | String | 是 | 企业的corpid,由前端从URL中获取。 说明 第三方企业应用可以在微应用的首页URL中使用$CORPID$做为参数占位符,钉钉容器会将$CORPID$替换为当前访问用户的企业corpId。 |
返回结果
参数 | 说明 |
---|---|
code | 授权码,有效期5分钟,且只能使用一次,使用后会失效。 |
更新时间:2022-10-2
调用runtime.permission.requestOperateAuthCode获取微应用反馈式操作的临时授权码。
使用说明
客户端 | Android | iOS | PC |
---|---|---|---|
钉钉版本 | 支持 | 支持 | 支持 |
dd.runtime.permission.requestOperateAuthCode({corpId: "corpid",agentId:"agentId",onSuccess: function(result) {/*{ code: 'hYLK98jkf0m' //string authCode }*/ },onFail : function(err) {} })
参数说明
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
corpId | String | 是 | 企业的corpid,由前端从URL中获取。 说明 第三方企业应用可以在微应用的首页URL中使用$CORPID$做为参数占位符,钉钉容器会将$CORPID$替换为当前访问用户的企业corpId。 |
agentId | String | 是 | 微应用ID,可以从授权信息中获取到。必须与dd.config的agentId一致。 |
返回结果
参数 | 说明 |
---|---|
code | 授权码,有效期5分钟,且只能使用一次。 |
更新时间:2022-10-2
调用device.base.getPhoneInfo获取手机基础信息。
调试
访问JSAPI Explorer在线调试该接口。
使用说明
客户端 | Android | iOS | PC |
---|---|---|---|
支持说明 | 支持 | 支持 | 不支持 |
dd.device.base.getPhoneInfo({ onSuccess : function(data) { /* { screenWidth: 1080, // 手机屏幕宽度 screenHeight: 1920, // 手机屏幕高度 brand:'Mi', // 手机品牌 model:'Note4', // 手机型号 version:'7.0', // 版本 netInfo:'wifi', // 网络类型 wifi/4g/3g operatorType:'xx' // 运营商信息 } */ }, onFail : function(err) {} });
返回结果
参数 | 说明 |
---|---|
screenWidth | 手机屏幕宽度。 |
screenHeight | 手机屏幕高度。 |
brand | 手机品牌。 |
model | 手机型号。 |
version | 版本。 |
netInfo | 网络类型: wifi、2g、3g、4g、unknown、none。 none表示离线。 |
operatorType | 运营商信息。 |
更新时间:2022-10-2
调用device.base.getUUID获取uuid。
调试
访问JSAPI Explorer在线调试该接口。
使用说明
客户端 | Android | iOS | PC |
---|---|---|---|
支持说明 | 支持 | 支持 | 不支持 |
dd.device.base.getUUID({ onSuccess : function(data) { /* { uuid: '3udbhg98ddlljokkkl' // } */ }, onFail : function(err) {} });
返回结果
参数 | 说明 |
---|---|
uuid | 通用唯一识别码。 |
更新时间:2022-10-2
调用device.base.getInterface获取热点接入信息。
调试
访问JSAPI Explorer在线调试该接口。
使用说明
客户端 | Android | iOS | PC |
---|---|---|---|
支持说明 | 支持 | 支持 | 不支持 |
dd.device.base.getInterface({ onSuccess : function(data) { /* { ssid: 'alibaba-inc', macIp: '3c:12:aa:09' } */ }, onFail : function(err) {} });
返回结果
参数 | 说明 |
---|---|
ssid | 热点ssid。 |
macIp | 热点mac地址。 |
更新时间:2022-10-2
调用device.base.getWifiStatus获取wifi状态。
调试
访问JSAPI Explorer在线调试该接口。
使用说明
客户端 | Android | iOS | PC |
---|---|---|---|
支持说明 | 支持 | 支持 | 不支持 |
dd.device.base.getWifiStatus({ onSuccess : function(data) {/* { status: 1 // 1 :enable;0 : disable } */ }, onFail : function(err) {} });
返回结果
参数 | 说明 |
---|---|
status | 当前连接wifi的状态:
|
更新时间:2022-10-2
调用device.connection.getNetworkType获取网络类型。
调试
访问JSAPI Explorer在线调试该接口。
使用说明
客户端 | Android | iOS | PC |
---|---|---|---|
支持说明 | 支持 | 支持 | 不支持 |
dd.device.connection.getNetworkType({ onSuccess : function(data) { /* { result: 'wifi' // result值: wifi 2g 3g 4g unknown none none表示离线 } */ }, onFail : function(err) {} });
返回结果
参数 | 说明 |
---|---|
result | 网络类型:wifi、2g、3g、4g、unknown、none。 none表示离线。 |
更新时间:2022-10-2
调用device.nfc.nfcRead读取NFC芯片内容。
调试
访问JSAPI Explorer在线调试该接口。
使用说明
首先调用此JSAPI,再把芯片放上去,即可读取。调用一次jsapi读取一次信息,支持NDEF的数据交换格式。
客户端 | Android | iOS | PC |
---|---|---|---|
支持说明 | 支持(有NFC功能的手机) | 不支持 | 不支持 |
dd.device.nfc.nfcRead({ onSuccess : function(data) { /* {content: 'alibaba-inc'} */ },onFail : function(err) {} })
返回结果
参数 | 说明 |
---|---|
content | NFC芯片的内容。 |
更新时间:2022-10-2
调用device.nfc.nfcWrite实现NFC数据写入。
调试
访问JSAPI Explorer在线调试该接口。
使用说明
首先调用此JSAPI,再把芯片放上去,即可读取。调用一次jsapi读取一次信息,支持NDEF的数据交换格式。
客户端 | Android | iOS | PC |
---|---|---|---|
支持说明 | 支持(有NFC功能的手机) | 不支持 | 不支持 |
dd.device.nfc.nfcWrite({ content : "aaa", onSuccess : function(data) { }, onFail : function(err) { } });
返回结果
参数 | 说明 |
---|---|
content | NFC芯片的内容。 |
更新时间:2022-10-2
调用biz.util.setScreenKeepOn设置屏幕常亮,防止熄屏。
H5容器关闭后自动失效。
使用说明
客户端 | Android | iOS | PC |
---|---|---|---|
支持说明 | 支持(钉钉版本≥5.1.26) | 支持(钉钉版本≥5.1.26) | 不支持 |
dd.biz.util.setScreenKeepOn({ isKeep:true, onSuccess: function() {}, onFail: function() {} } });
参数说明
参数 | 类型 | 是否必填 | 描述 |
---|---|---|---|
isKeep | Boolean | 是 | 是否保持常亮,默认值false。 |
onSuccess | Function | 否 | 调用成功的回调函数。 |
onFail | Function | 否 | 调用失败的回调函数。 |
更新时间:2022-10-2
调用runtime.monitor.getLoadTime获取H5容器启动时间。
使用说明
客户端 | Android | iOS | PC |
---|---|---|---|
支持说明 | 支持(钉钉版本≥6.0.10.x) | 支持(钉钉版本≥6.0.10.x) | 不支持 |
dd.runtime.monitor.getLoadTime({ type:'RuntimeLaunchTime', onSuccess: function() {}, onFail: function() {} } });
参数说明
参数 | 类型 | 是否必填 | 描述 |
---|---|---|---|
type | String | 是 |
|
onSuccess | Function | 否 | 调用成功的回调函数。 |
onFail | Function | 否 | 调用失败的回调函数。 |
返回结果
成功
参数 | 类型 | 说明 |
---|---|---|
time | Number | 所查询对应的时间。 |
type | String |
|
失败
error | 描述 |
---|---|
3 | 内部错误。 |
更新时间:2022-10-2
调用device.base.openSystemSetting打开iOS系统设置页面。
使用说明
客户端 | Android | iOS | PC | 是否需鉴权 |
---|---|---|---|---|
支持说明 | 不支持 | 支持(钉钉版本≥6.3.15) | 不支持 | 否 |
dd.device.base.openSystemSetting({ onSuccess : function() { }, onFail : function() { } })
参数说明
参数 | 类型 | 是否必填 | 描述 |
---|---|---|---|
onSuccess | Function | 否 | 调用成功的回调函数。 |
onFail | Function | 否 | 调用失败的回调函数。 |
更新时间:2022-10-2
调用device.base.openSystemSetting打开系统设置。
使用说明
客户端 | Android | iOS | PC | 是否需鉴权 |
---|---|---|---|---|
支持说明 | 支持(钉钉版本≥4.6.36) | 不支持 | 不支持 | 否 |
dd.device.base.openSystemSetting({ action: "android.settings.BLUETOOTH_SETTINGS", param: "extended data", data: "data param", onSuccess : function() { }, onFail : function() { } })
参数说明
参数 | 类型 | 是否必填 | 描述 |
---|---|---|---|
action | String | 是 | Android系统中action的概念。 例如:android.settings.BLUETOOTH_SETTINGS:打开蓝牙设置页面 更多action参考详情。 |
param | Json | 否 | Android系统中跳转系统应用所需的extra参数。 |
data | String | 否 | Android系统中跳转系统应用所需的data参数。 |
onSuccess | Function | 否 | 调用成功的回调函数。 |
onFail | Function | 否 | 调用失败的回调函数。 |
返回结果
参数 | 说明 |
---|---|
3 | 未知错误 |