前言
我们是一家做低代码产品开发的公司,我司的低代码产品支持在多个平台环境内使用:有钉钉、企业微信、微信、飞书、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)
官网:道一云七巧 - 可视化、智能化、数字化应用构建
免费体验:道一云产品免费试用