更新记录

2.0.20250401(2025-04-01)

更新预览截图

2.0.6(2025-03-31)

更新README

2.0.5(2025-03-31)

更新README

查看更多

平台兼容性

Vue2 Vue3
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
HBuilderX 3.6.8,Android:5.0,iOS:10,HarmonyNext:不支持 × × × × × ×
钉钉小程序 快手小程序 飞书小程序 京东小程序 鸿蒙元服务
× × × × ×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
× × × × × × × × ×

前提准备(获取钉钉appid与开启分享参照文档末尾官方文档操作)

  • Andoird包名
  • IOS包名(Bundle Id)
  • 钉钉appId (别名Client Id)
  • redirectUri(钉钉应用后台设置的Uri)

Android (1) 修改AndroidManifest.xml

修改uni_modules/cms-dingding/utssdk/app-android/AndroidManifest.xml中的包名为自己的Android包名

Android (2)修改DDAuthActivity.kt/DDShareActivity.kt

  1. (试用/非源码版步骤)点击下载Kotlin代码压缩包
  2. (试用/非源码版步骤)将压缩包内的DDAuthActivity.kt/DDShareActivity.kt文件参照下方步骤放在对应位置
  3. 修改uni_modules/cms-dingding/utssdk/app-android/ddauth/DDAuthActivity.kt中的包名为自己的Android包名
  1. 修改uni_modules/cms-dingding/utssdk/app-android/ddauth/DDShareActivity.kt中的包名为自己的Android包名

Android (3)打包自定义基座包确保andorid包名与上面修改的一致

IOS (1)修改Info.plist

  1. 修改uni_modules/cms-dingding/utssdk/app-ios/Info.plist替换钉钉AppId

上述配置完毕后制作自定义基座包继续下方操作

初始化SDK(后续授权和分享都需在此步之后)

import {
    dingSdkInit
} from '@/uni_modules/cms-dingding';

// 初始化钉钉SDK
dingSdkInit({
    appId: "此处填写你的Client ID",
    redirectUri: "此处填写你的redirectUri",
    bundleId: "此处填写你的bundleId(IOS包名)",
    responseType: "code",
    scope: "openid",
    state: "state",
    prompt: "consent",
})

授权

若未安装钉钉时会以H5方式授权

import {
    dingAuth,
} from '@/uni_modules/cms-dingding';

dingAuth({
    success: code => {
        console.log('success:', code)
    },
    fail: (error, state) => {
        console.log('fail:', error, state)
    }
});

分享文本

sendTextMessage({
    data: "hello",
    success(errCode, errMsg) {
        console.log("sendTextMessage success",errCode, errMsg);
    },
    fail(errCode, errMsg) {
        console.log("sendTextMessage fail", errCode, errMsg);
    }
})

方法/结构


// 分享入参
export type BaseShareOption = {
    data : string;
    success ?: (errCode : number, errMsg : string) => void;
    fail ?: (errCode : number, errMsg : string) => void;
}

// 发送网页链接Opiton
export type SendWebPageOptions = {
    url : string;
    title : string;
    content : string;
    thumbUrl : string;
    success ?: (errCode : number, errMsg : string) => void;
    fail ?: (errCode : number, errMsg : string) => void;
}

// 钉钉初始化Option
export type SetDingSdkOption = {
    appId : string;
    redirectUri : string;
    responseType ?: string;
    scope ?: string;
    state ?: string;
    prompt ?: string;
    bundleId ?: string;
}

// 授权入参
export type DingAuthOption = {
    success ?: (res : string) => void;
    fail ?: (error : string, msg : string) => void;
}

// 初始化钉钉SDK
export type DingSdkInit = (opt : SetDingSdkOption) => void;
// 授权
export type DingAuth = (opt : DingAuthOption) => void;
// 是否安装钉钉
export type IsDingtalkInstalled = () => Boolean;
// 是否支持分享
export type IsDDSupportAPI = () => Boolean;
// 分享文本消息
export type SendTextMessage = (opt : BaseShareOption) => void;
// 分享本地图片
export type SendLocalImage = (opt : BaseShareOption) => void;
// 分享Base64图片
export type SendBase64Image = (opt : BaseShareOption) => void;
// 分享在线图片
export type SendOnlineImage = (opt : BaseShareOption) => void;
// 发送网页消息
export type SendWebPageMessage = (opt : SendWebPageOptions) => void;

完整示例代码

<template>
    <view style="padding-top: 300rpx;">
        <button type="primary" @click="isDingtalkInstalled">是否安装钉钉</button>
        <button type="primary" @click="isDDSupportAPI">钉钉是否可分享</button>
        <button type="primary" @click="dingAuth">授权登录</button>
        <button type="primary" @click="sendTextMessage">分享文字</button>
        <button type="primary" @click="sendBase64Image">分享base64图片(图片过大会失败)</button>
        <button type="primary" @click="sendOnlineImage">分享http/https图片</button>
        <button type="primary" @click="sendWebPageMessage">分享链接</button>
        <button type="warn" @click="sendLocalImage">分享本地图片(Andorid测试未通过)(IOS限10M)</button>
    </view>
</template>

<script>

    import {
        dingSdkInit,
        dingAuth,
        isDDSupportAPI,
        isDingtalkInstalled,
        sendTextMessage,
        sendLocalImage,
        sendBase64Image,
        sendOnlineImage,
        sendWebPageMessage,
    } from '@/uni_modules/cms-dingding';

    export default {
        onLoad() {
            // 初始化钉钉SDK
            dingSdkInit({
                appId: "钉钉 client ID",
                redirectUri: "钉钉 redirectUri",
                bundleId: "IOS bundle Id",
                responseType: "code",
            })
        },
        methods: {
            dingAuth() {
                dingAuth({
                    success: code => {
                        console.log('success:', code)
                    },
                    fail: (error, state) => {
                        console.log('fail:', error, state)
                    }
                });
            },
            isDingtalkInstalled() {
                uni.showToast({
                    title: isDingtalkInstalled() ? "钉钉已安装" : "没有安装钉钉",
                    icon: "none"
                })

            },
            isDDSupportAPI() {
                uni.showToast({
                    title: isDDSupportAPI() ? "钉钉可以分享" : "钉钉不可以分享",
                    icon: "none"
                })
            },
            sendTextMessage() {
                sendTextMessage({
                    data: "hello",
                    success(errCode, errMsg) {
                        console.log("sendTextMessage success",errCode, errMsg);
                    },
                    fail(errCode, errMsg) {
                        console.log("sendTextMessage fail", errCode, errMsg);
                    }
                })
            },
            sendLocalImage() {
                uni.chooseImage({
                    count: 1,
                    success(res) {
                        plus.io.resolveLocalFileSystemURL(res.tempFilePaths[0], (entry) => {

                            entry.file((file) => {
                                console.log('file.fullPath:',file.fullPath);
                                sendLocalImage({
                                    data: file.fullPath,
                                    success(errCode, errMsg) {
                                        console.log("sendLocalImage success",errCode, errMsg);
                                    },
                                    fail(errCode, errMsg) {
                                        console.log("sendLocalImage fail", errCode,
                                            errMsg);
                                    }
                                })
                            }, (e) => {
                                console.log('error---', e)
                            });

                        });
                    }
                })

            },
            sendBase64Image() {

                uni.chooseImage({
                    count: 1,
                    success(res) {

                        plus.io.resolveLocalFileSystemURL(res.tempFilePaths[0], (entry) => {
                            entry.file((file) => {

                                let reader = new plus.io.FileReader();
                                reader.readAsDataURL(file);
                                reader.onloadend = (e) => {
                                    sendBase64Image({
                                        data: e.target.result,
                                        success(errCode, errMsg) {
                                            console.log("sendBase64Image success",errCode, errMsg);
                                        },
                                        fail(errCode, errMsg) {
                                            console.log("sendBase64Image fail",
                                                errCode,
                                                errMsg);
                                        }
                                    })
                                };

                            }, (e) => {
                                console.log('error---', e)
                            });

                        });

                    }
                })

            },
            sendOnlineImage() {
                sendOnlineImage({
                    data: "https://env-00jxt1cobn8u-static.normal.cloudstatic.cn/weixin.jpg",
                    success(errCode, errMsg) {
                        console.log("sendOnlineImage success",errCode, errMsg);
                    },
                    fail(errCode, errMsg) {
                        console.log("sendOnlineImage fail", errCode,
                            errMsg);
                    }
                })
            },
            sendWebPageMessage() {

                sendWebPageMessage({
                    url: "https://env-00jxt1cobn8u-static.normal.cloudstatic.cn/threejsVR/#/",
                    title: "标题11",
                    content: "内容22",
                    thumbUrl: "https://env-00jxt1cobn8u-static.normal.cloudstatic.cn/weixin.jpg",
                    success(errCode, errMsg) {
                        console.log("sendWebPageMessage success",errCode, errMsg);
                    },
                    fail(errCode, errMsg) {
                        console.log("sendWebPageMessage fail", errCode,
                            errMsg);
                    }
                })
            }
        }
    }
</script>

如何获取Clien ID / appid?

如何获取redirectUri?

应用如何开启分享配置

钉钉官方文档说明

有疑问,需要帮助?

隐私、权限声明

1. 本插件需要申请的系统权限列表:

<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问