项目作者: open-dingtalk

项目描述 :
支持在钉钉客户端的所有容器(Web,Native or Weex)中调用JS-API(All-in Mobile)
高级语言: JavaScript
项目地址: git://github.com/open-dingtalk/dingtalk-javascript-sdk.git


Dingtalk JavaScript SDK

JavaScript SDK For Dingtalk

安装

  1. npm install dingtalk-javascript-sdk --save

注意:使用 --save 将版本信息存储起来,方便后续升级维护。

使用

入口weex-entry.js:

  1. import { createElement, render } from 'rax';
  2. import App from './app.js';
  3. render(<App></App>);

业务app.js:

  1. import { createElement, Component, render} from 'rax';
  2. import View from 'rax-view';
  3. import Text from 'rax-text';
  4. import dingtalk from 'dingtalk-javascript-sdk';
  5. export default class App extends Component{
  6. render(){
  7. return(
  8. <View>
  9. <Text onPress={
  10. ()=>{
  11. dingtalk.ready(function(){
  12. const dd = dingtalk.apis;
  13. dd.biz.util.openLink({
  14. url: 'https://github.com/icepy/dingtalk-javascript-sdk'
  15. })
  16. })
  17. }
  18. }>
  19. Hello World icepy !!!
  20. </Text>
  21. </View>
  22. );
  23. }
  24. }

注意:

  • 调用js-api时需要写在dingtalk.ready方法中

例子:

  1. import dingtalk from 'dingtalk-javascript-sdk';
  2. dingtalk.ready(function(){
  3. const dd = dingtalk.apis;
  4. dd.biz.navigation.setTitle({
  5. title: 'icepy'
  6. });
  7. })
  • 如果你有签名的需要,可以调用dingtalk.config,将你的签名对象传入,整个应用的周期内,你应该只可以调用一次config方法

例子:

  1. import dingtalk from 'dingtalk-javascript-sdk';
  2. dingtalk.config({
  3. any Object your server response sign
  4. });
  • 你可以使用error注册一个error函数,与H5保持一致

例子:

  1. import dingtalk from 'dingtalk-javascript-sdk';
  2. dingtalk.error(function(err){
  3. console.log(err);
  4. });
  • 正常的js-api可以通过dingtalk.apis来获取

例子:

  1. import dingtalk from 'dingtalk-javascript-sdk';
  2. dingtalk.ready(function(){
  3. const dd = dingtalk.apis;
  4. });

apis 描述

  • config (Function | 参数 Object | 返回值 void) 配置签名对象
  • ready (Function | 参数 Function Callback | 返回值 void) 使用js-api必须写在ready callback中
  • error (Function | 参数 Object )权限校验失败时
  • apis (Object)必须在ready方法中使用,钉钉 js-api 列表(与H5一致)
  • on 注册一个事件(与H5中的addEventListener保持一致)
  • off 注销一个事件(与H5中的removeEventListener保持一致)

其他API的具体使用方法请参考 https://open-doc.dingtalk.com/doc2/detail?spm=0.0.0.0.O1cH5b&treeId=171&articleId=104906&docType=1

降级H5之后如何使用

为了达到让你的应用可以同时使用两种环境下的js-api,你应该继续使用 import dingtalk from 'dingtalk-javascript-sdk 的方式来引入模块,在这个模块中会自动判断环境给你导出相应的SDK模块。

H5环境:

  1. import dingtalk from 'dingtalk-javascript-sdk';
  2. dingtalk.ready(function(){
  3. const dd = dingtalk.apis;
  4. // 设置导航
  5. dd.biz.navigation.setTitle({
  6. title: 'icepy'
  7. });
  8. });

统一的事件回调机制

当你注册了事件之后,触发事件将由客户端来执行。

  • 页面resume事件

当页面重新可见并可以交互的时候,钉钉客户端会触发这个事件。

  1. import dingtalk from 'dingtalk-javascript-sdk';
  2. dingtalk.ready(function(){
  3. dingtalk.on('resume',function(){
  4. // do something
  5. })
  6. });
  • 页面pause事件

当页面不可见时,钉钉客户端会触发这个事件。

  1. import dingtalk from 'dingtalk-javascript-sdk';
  2. dingtalk.ready(function(){
  3. dingtalk.on('pause',function(){
  4. // do something
  5. })
  6. });
  • 导航栏 navRightButton 事件

导航栏右侧按钮的点击事件。

  1. import dingtalk from 'dingtalk-javascript-sdk';
  2. dingtalk.ready(function(){
  3. const dd = dingtalk.apis;
  4. dd.biz.navigation.setRight({
  5. control: true,
  6. show: true,
  7. text: 'icepy'
  8. })
  9. dingtalk.on('navRightButton',function(){
  10. // do something
  11. })
  12. })

如果想让你注册的navRightButton客户端可以正常的触发,需要在设置setRight时传controltrue

  • 导航栏 navTitle 事件

导航栏上title的点击事件

  1. import dingtalk from 'dingtalk-javascript-sdk';
  2. dingtalk.ready(function(){
  3. dingtalk.on('navTitle',function(){
  4. // do something
  5. })
  6. });
  • 导航栏 navHelpIcon 事件

导航栏上点击icon时会触发的事件

  1. import dingtalk from 'dingtalk-javascript-sdk';
  2. dingtalk.ready(function(){
  3. const dd = dingtalk.apis;
  4. dd.biz.navigation.setIcon({
  5. showIcon: true,
  6. iconIndex: 101
  7. })
  8. dingtalk.on('navHelpIcon',function(){
  9. // do something
  10. })
  11. });
  • 导航栏 backbutton 事件

导航栏左侧按钮的点击事件,注意:这个事件触发之后会自动返回

  1. import dingtalk from 'dingtalk-javascript-sdk';
  2. dingtalk.ready(function(){
  3. const dd = dingtalk.apis;
  4. dd.biz.navigation.setLeft({
  5. show: true,
  6. control: true,
  7. text: 'icepy'
  8. });
  9. dingtalk.on('backbutton',function(){
  10. //do something
  11. })
  12. })

如果想让你注册的backbutton客户端可以正常的触发,需要在设置setLeft时传controltrue

  • 导航栏 navMenu 事件

当你在导航栏右侧设置了多个按钮,你就需要注册navMenu事件来处理点击。

  1. import dingtalk from 'dingtalk-javascript-sdk';
  2. dingtalk.ready(function(){
  3. dingtalk.on('navMenu',function(){
  4. // do something
  5. })
  6. })