低代码如何集成多平台(企业微信、钉钉、飞书)SDK,且听我细细道来

news2024/11/26 2:10:44

前言

我们是一家做低代码产品开发的公司,我司的低代码产品支持在多个平台环境内使用:有钉钉、企业微信、微信、飞书、Web浏览器(如谷歌),后续还会接入更多平台。面对这么多平台,每个平台的SDK可能一致,可能不一致。那我们如何集成多平台SDK呢?且听我细细道来......

目的

集成多平台SDK(webIntegrationSdk的目的是为了在低代码产品中能够同时支持多个平台的SDK功能和特性。通过集成不同平台的SDK,可以让前端研发在同一个低代码开发环境内,只需编写一次代码,就可以在不同平台上使用对应的SDK。

具体来说,集成多平台SDK的目的主要有以下几点:

1.一致的开发体验:通过集成不同平台的SDK,可以在低代码开发环境中提供一致的开发接口和工具,让开发人员能够通过统一的方式开发不同平台的应用,减少学习成本和开发难度。

2.多平台适配:每个平台都有自己的特性和限制,通过集成多个平台的SDK,可以针对不同平台的特性进行适配,确保应用在不同平台上运行正常,并且能够最大程度地利用平台提供的能力和功能。

3.扩展生态系统:集成多平台SDK可以拓展低代码产品的生态系统,使其能够覆盖更广泛的用户群体和应用场景。通过支持不同的平台,可以满足用户在多个平台上开发和部署应用的需求,提升产品竞争力。

总之,集成多平台SDK的目的是为了提供一致的开发体验、多平台适配和拓展生态系统,让低代码产品能够在不同平台上运行和部署应用,满足用户的多样化需求。

设计

使用

第一步:业务代码按需引入不同平台的JS文件。

第二步:安装集成多平台SDK webIntegrationSdk

npm install @do1/web-integration-sdk
/**
 * 创建WebIntegrationSdk实例
 * @param {Boolean} isDebug 是否打开调试机制 【非必传】
 */

const qiqiaoInstance = new WebIntegrationSdk({
  // 建议开发环境默认开启,生产环境通过开关/缓存控制开启
  isDebug: true
})
const agentConfigParams = {}
const configParams = {}
if (qiqiaoInstance?.config) {
  qiqiaoInstance.config({
    // 可指定渠道:WORK_WEIXIN、DING_TALK、FEISHU
    channel: 'WORK_WEIXIN',
    configParams,
    // 企业微信agentConfig鉴权参数,存在agentConfigParams参数 & 有值才会去执行agentConfig。
    agentConfigParams,
    onReady: () => {
      // 当鉴权完成时触发的回调函数
      // 在这里可以开始使用SDK
    },
    onError: (err) => {
      // 当鉴权失败时触发的回调函数
    }
  })
}

鉴权方法 - 参数详解

config

参数
类型
必填
默认值
说明
平台差异说明
channel
String
有三个值:WORK_WEIXIN、DING_TALK、FEISHU
configParams
Object
渠道商config接口所需的参数集合,详情参考各个渠道商文档说明

注意:jsApiList传除标准API外的值,标准API默认会进行鉴权

agentConfigParams
Object
agentConfigParams: 企业微信agentConfig参数集合,详情参考 wx.agentConfig - 接口文档 - 企业微信开发者中心

钉钉、飞书不支持

onReady
Fucntion
当鉴权完成时触发的回调函数
onError
Fucntion
当鉴权失败时触发的回调函数

企业微信:参数详情 => 使用说明 - 接口文档 - 企业微信开发者中心

钉钉:参数详情 => JSAPI鉴权 - 钉钉开放平台

飞书:参数详情 =>  开发文档 - 飞书开放平台

标准API列表

附各大平台各自API文档

企业微信:客户端JSAPI文档 =>概述 - 接口文档 - 企业微信开发者中心

钉钉:客户端JSAPI文档 => 客户端API总览 - 钉钉开放平台

飞书:客户端JSAPI文档 =>  开发文档 - 飞书开放平台

closeWindow

使用:window.qiqiao.closeWindow

描述:关闭页面

OBJECT参数说明

参数
类型
必填
默认值
说明
平台差异说明
success
Function
成功回调
企业微信、飞书不支持
fail
Function
失败回调
企业微信、飞书不支持
complete
Function
完成回调
企业微信、飞书不支持
openDefaultBrowser

使用:window.qiqiao.openDefaultBrowser

描述:在渠道商APP内置浏览器打开对应url,飞书不支持

OBJECT参数说明

参数
类型
必填
默认值
说明
平台差异说明
url
String
要打开的url
success
Function
成功回调
钉钉PC端不支持
fail
Function
失败回调
钉钉PC端不支持
complete
Function
完成回调
企业微信、钉钉PC端不支持
openEnterpriseChat

使用:window.qiqiao.openEnterpriseChat

描述:打开单人会话(飞书不支持,钉钉仅支持移动端)

OBJECT参数说明

参数
类型
必填
默认值
说明
平台差异说明
userIds
String
用户ID
corpId
String
企业ID
企业微信不支持
success
Function
成功回调
fail
Function
失败回调
complete
Function
完成回调
企业微信不支持
scanQRCode

使用:window.qiqiao.scanQRCode

描述:扫一扫

OBJECT参数说明

参数

类型

必填

默认值

说明

平台差异说明

noInvoke

详情查看企业微信JSAPI文档

钉钉、飞书不支持

desc

String

描述,具体请查看企业微信扫一扫 - 接口文档 - 企业微信开发者中心

钉钉、飞书不支持

scanType

企业微信、飞书:Array

钉钉:String

可以指定扫二维码:条形码、一维码

钉钉:barCode、qr

企业微信、飞书:['qrCode','barCode']

barCodeInput

boolean

false

是否支持手动输入条形码

钉钉、企业微信不支持

needResult

Number

默认为0,扫描结果由企业微信处理,1则直接返回扫描结果

success

Function

成功回调

fail

Function

失败回调

complete

Function

完成回调

企业微信、飞书不支持

chooseImage

使用:window.qiqiao.chooseImage

描述:选择图片

OBJECT参数说明

参数

类型

必填

默认值

说明

平台差异说明

count

Number

最多可以选择的图片数量

sizeType

Array

 ['original', 'compressed'],

可以指定是原图还是压缩图,默认二者都有

钉钉、飞书不支持

sourceType

Function

['album', 'camera']

可以指定来源是相册还是相机,默认二者都有

defaultCameraMode

String

使用相机拍摄的默认摄像头,细节请查看渠道商文档

企业微信是batch、normal

图像接口 - 接口文档 - 企业微信开发者中心

钉钉是back、front

chooseImage - 钉钉开放平台

飞书是back、front 开发文档 - 飞书开放平台

isSaveToAlbum

Number

1

使用相机拍摄后图片是否保存到相册,

细节请查看渠道商文档

● 0:不保存。

● 1:保存。

secret

false

细节请查看钉钉JSAPI文档

chooseImage - 钉钉开放平台

企业微信、飞书不支持

success

Function

成功回调

fail

Function

失败回调

complete

Function

完成回调

shareAppMessage

使用:window.qiqiao.shareAppMessage

描述:实现分享功能

OBJECT参数说明

参数

类型

必填

默认值

说明

平台差异说明

title

String

企业微信:是

钉钉:是

飞书:否(详情看开发文档 - 飞书开放平台)

分享标题

企业微信、飞书不支持

desc

String

分享描述

link

String

分享链接

success

Function

成功回调

企业微信不支持

contentType

Array

指定内容的类型 ["text: 文本", "image:图片", 'url': 在线链接] 

企业微信、钉钉不支持

imgUrl

String

分享图标/图片链接

type

String

分享类型:

0:全部组件默认

1:只能分享到钉钉

2:不能分享,只有刷新按钮

企业微信、飞书不支持

fail

Function

失败回调

企业微信不支持

complete

Function

完成回调

飞书不支持

结语

通过集成多平台SDK,我们的低代码产品能够在不同平台上提供一致的开发体验、多平台适配和拓展生态系统的能力。无论是在钉钉、企业微信、微信、飞书还是Web浏览器上,开发人员只需编写一次代码,就能够在不同平台上使用对应的SDK功能和特性。这样的集成方案不仅减少了开发人员的学习成本和开发难度,也提升了产品的竞争力和用户的满意度。

我们的使用文档详细介绍了集成多平台SDK的步骤和使用方法,开发人员可按照文档进行操作,快速集成SDK,并在多个平台上开发和部署应用。同时,我们会不断更新和维护SDK,以适应新平台的接入和不同平台的变化,确保产品始终能够在各个平台上运行正常。

集成多平台SDK是为了满足用户的多样化需求和应用场景。在未来,我们还会继续接入更多平台,提供更多功能和能力,进一步拓展低代码产品的生态系统。我们致力于为开发人员提供更好的开发体验和更广阔的应用领域,助力他们快速开发出强大的应用,实现数字化转型和业务增长。


作者介绍:
道一云,成立于2004年,是中国低代码领域的领导厂商、腾讯战略投资企业、腾讯生态核心合作伙伴。拥有自主知识产权管理软件产品百余项,涵盖数字化应用构建低代码平台-七巧、全场景智能业务分析BI-七析、千人千面、数智化办公企业级门户-七星以及30多款开箱即用的场景应用。

欢迎关注:
公众号:道一云低代码(do1info)
官网:道一云七巧 - 可视化、智能化、数字化应用构建
免费体验:道一云产品免费试用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1577605.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

磁盘类型与IOPS性能指标

目录 1.磁盘的访问模式 2.磁盘分类 2.1 HDD机械磁盘 2.1.1 机械磁盘性能 2.1.2 IOPS 2.1.3 提升IOPS性能手段 2.1.4 RAID技术 RAID 0 RAID 1 RAID 5 RAID 6 RAID 10 RAID 50 RAID总结 2.2 SSD固态硬盘 2.2.1 查看磁盘调度算法 2.2.2 修改磁盘调度算法 2.2.3 …

lottery-攻防世界

题目 flag在这里要用钱买,这是个赌博网站。注册个账号,然后输入七位数字,中奖会得到相应奖励。 githacker获取网站源码 ,但是找到了flag文件但是没用。 bp 抓包发现api.php,并且出现我们的输入数字。 根据题目给的附…

DNFOMP:杂乱环境中自动驾驶汽车导航的动态神经场最优运动规划器

DNFOMP:杂乱环境中自动驾驶汽车导航的动态神经场最优运动规划器 附赠自动驾驶学习资料和量产经验:链接 摘要 本文介绍了DNFOMP:杂乱环境中自动驾驶汽车导航的动态神经场最优运动规划器。动态变化环境中的运动规划是自动驾驶中最复杂的挑战之…

RA8900CE计时芯片介绍及开发方案

计时芯片 就是一个需要连接32.768k晶振的RTC芯片 规格书阅读 首先我们先读懂这个芯片是怎么用的。 引脚表 封装是这样的,一共10个引脚。 基本上一看这个引脚表就知道大概。 T1和T2是工厂测试的,不用管。 SCL和SDA是IIC通讯用的。 FOUT和FOE就是链…

文献速递:深度学习胰腺癌诊断--胰腺肿瘤的全端到端深度学习诊断

Title 题目 Fully end-to-end deep-learning-based diagnosis of pancreatic tumors 胰腺肿瘤的全端到端深度学习诊断 01 文献速递介绍 胰腺癌是最常见的肿瘤之一,预后不良且通常是致命的。没有肿瘤的患者只需要进一步观察,而胰腺肿瘤的诊断需要紧…

C/C++中局部变量static用法实例

1. 普通局部变量存储于进程栈空间,使用完毕会立即释放,静态局部变量使用static修饰符定义,即使在声明时未赋初值,编译器也会把它初始化为0,并且静态局部变量存储于进程的全局数据区,即使函数返回&#xff0…

用three.js做一个3D汉诺塔游戏(下)

本文由孟智强同学原创。 接上期:《用three.js做一个3D汉诺塔游戏(上)》 在上一期,我们成功地搭建了基础的 3D 场景。在本期中,我们将对场景进行优化,使其在视觉上更加真实,并为场景中的物体添加…

golang es查询的一些操作,has_child,inner_hit,对索引内父子文档的更新

1.因为业务需要查询父文档以及其下子文档,搞了很久才理清楚。 首先还是Inner_hits,inner_hits只能用在nested,has_child,has_parents查询里面 {"query": {"nested": {"path": "comments","query": {"match…

vulhub之fastjson篇-1.2.27-rce

一、启动环境 虚拟机:kali靶机:192.168.125.130/172.19.0.1(docker地址:172.19.0.2) 虚拟机:kali攻击机:192.168.125.130/172.19.0.1 本地MAC:172.XX.XX.XX 启动 fastjson 反序列化导致任意命令执行漏洞 环境 1.进入 vulhub 的 Fastjson 1.2.47 路径 cd /../../vulhub/fa…

企业IT运维事中故障定位方法及工具

企业IT故障定位指诊断故障直接原因或根因,故障定位有助于故障恢复动作更加有效。故障定位通常是整个故障过程中耗时最长的环节,定位的目标围绕在快速恢复的基础上,而非寻找问题根因,后者由问题管理负责。通常大部分可用性故障&…

GEE案例——小流域汇流计算以缅甸仰光为例(如何绘制除小流域内的河道)

简介 本案例主要介绍如何实现小流域内河流汇流的计算,这里需要用到地形中的坡度以及卷积的计算内容。 流域 流域是指一个地理区域内所有水流都会汇集到同一个主要水体(如河流、湖泊或海洋)的区域。流域由周围山脉、丘陵和地形特征所定义,其中的水流通过降水、融雪和地下…

计算机网络针对交换机的配置

实验 目的 交换机的基本配置,交换机VLAN配置 实验条件 Windows,Cisco packet tracer 实验 内容 交换机的基本配置,交换机VLAN配置 实验 过程 一、交换机的基本配置 进入特权模式 Switch>enable 进入配置模式 Switch#configure ter…

德国SycoTec义齿雕刻机主轴 助力高精密雕铣加工

随着科技的不断进步,义齿加工机械在牙科领域的应用越来越广泛。为了满足市场对高精度、高效率义齿加工设备的需求,SycoTec高速电主轴凭借其卓越的性能和可靠的质量,为CNC四轴、五轴义齿加工设备、五轴联动义齿加工中心、CAM/CAD义齿雕刻机、椅…

算法题中nextInt(),nextLine()的易错陷阱

nextInt()读取空格或回车前的整数 nextLine()读取回车前的一行,空格不会中断读取 陷阱代码如下: public class nextInt {public static void main(String[] args) {Scanner scannernew Scanner(System.in);System.out.println("请输入字符串数组…

C++11可变模板参数:海纳百川的Args

目录 一、可变模板参数的概念及功能 1.1Args的概念与使用 1.2获取args中的参数 二、emplace可变模板参数的实际应用 三、逗号表达式展开参数包 一、可变模板参数的概念及功能 1.1Args的概念与使用 C11的新特性可变参数模板能够让您创建可以接受可变参数的函数模板和类模板…

item_get_app在竞品分析中的应用与效果评估

item_get_app作为淘宝开放平台的重要API接口,为商家在竞品分析中提供了强大的数据支持。在竞争激烈的电商市场中,竞品分析是商家不可或缺的一环,而item_get_app的应用则使得这一分析过程更加高效、精准。通过调用item_get_app接口&#xff0c…

C语言 08 类型转换

一种类型的数据转换为另一种类型的数据&#xff0c;这种操作称为类型转换。 类型转换分为自动类型转换和强制类型转换。 自动类型转换 比如现在希望将一个 short 类型的数据转换为 int 类型的数据&#xff1a; #include <stdio.h>int main(){short s 10;// 直接将s的…

Redis: 配置文件详解(Redis.conf)

文章目录 一、Units二、INCLUDES三、NETWORK四、GENERAL五、SECURITY六、LIMITS 一、Units 单位&#xff0c;配置大小单位&#xff0c;开头定义了一些基本的度量单位&#xff0c;只支持bytes&#xff0c;不支持bit&#xff0c;大小写不敏感 二、INCLUDES 包含&#xff0c;多…

275. 传纸条(DP)

题目描述 小渊和小轩是好朋友也是同班同学&#xff0c;他们在一起总有谈不完的话题。一次素质拓展活动中&#xff0c;班上同学安排坐成一个 m 行 n 列的矩阵&#xff0c;而小渊和小轩被安排在矩阵对角线的两端&#xff0c;因此&#xff0c;他们就无法直接交谈了。幸运的是&…

easyExcel - 按模板导出

目录 前言一、情景介绍二、文档介绍2.1 读取模板2.2 填充模板 三、代码示例3.1 案例一&#xff1a;工资表3.2 案例二&#xff1a;报价单 四、我所遇到的问题 前言 Java-easyExcel入门教程&#xff1a;https://blog.csdn.net/xhmico/article/details/134714025 之前有介绍过如…