更新记录

1.0.2(2024-03-23)

  1. 修复分享小程序时在线图片问题

1.0.1(2023-09-11)

  1. 优化iOS回调

1.0.0(2023-09-07)

企业微信授权登录 分享文本、图片、文件、视频、链接网页、小程序到企业微信 打开企业微信 企业微信是否已经安装

查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 14.0 armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 适用版本区间:9 - 17

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


前言

企业微信授权登录,分享文本、图片、文件、视频、链接网页、小程序到企业微信, 打开企业微信、企业微信是否已经安装

快速接入

参考企业微信开发者中心文档在企业微信管理后台创建应用,并开通app登录权限https://developer.work.weixin.qq.com/document/path/91193

  1. 管理员登录企业微信管理后台,选择企业应用
  2. 选择已有应用或添加应用,进入应用详情页面。
  3. 选择“企业微信授权登录”,在设置界面填写iOS App的BundleId,设置完成后系统自动生成应用程序scheme。
  4. 在项目的manifest.json的App其他常用设置-iOS设置-UrlSchemas里面增加企业应用生成的scheme
  5. android的最低版本minSdkVersion改成21

支持定制,联系方式 QQ:252797991


var enterpriseWeChat = uni.requireNativePlugin("wrs-enterpriseWeChat");

说明解析参数名词

  • appId: 企业唯一标识。创建企业后显示在,我的企业 CorpID字段,即:企业ID
  • agentId: 企业微信应用的AgentId
  • schema: 企业微信应用开通生成的SCHEMA
  • appPkg: 包名
  • appName: app应用名称

接口API

  • 初始化SDK

            var params = {}
            if(this.isAndroid) {
                params.schema = this.schema
            } else {
                params.schema = this.schema
                params.corpId = this.appId //   企业ID
                params.agentId = this.agentId
            }
            enterpriseWeChat.initSDK(params)
  • 检查是否已经安装企业微信

enterpriseWeChat.isWWAppInstalled((resp)=>{
    var suc = resp.suc
})
  • 打开企业微信

enterpriseWeChat.openWWApp((resp)=>{
    var suc = resp.suc
})
  • 获取企业微信安装链接地址,仅支持iOS

enterpriseWeChat.getAppInstallUrl((resp)=>{
    var url = resp.url
})
  • 设置iOS回调 iOS的登录结果和分享结果都是通过这里回调的

            if(!this.isAndroid) {
                // iOS的登录结果和分享结果都是通过这里回调的
                enterpriseWeChat.setCallback((resp)=>{
                    this.showMsg(JSON.stringify(resp))
                    var opt = resp.opt;
                    if(opt == 'onResp') {
                        var respClass = resp.respClass;
                        if(respClass) {
                            if(respClass == 'WWKSSOResp') { // ios登录授权回调
                                var errCode = resp.errCode;
                                switch (errCode) {
                                    // 授权登录成功
                                    case 0:
                                        this.showMsg("登录成功")
                                        break;
                                        // 登录取消
                                    case 1:
                                        this.showMsg("登录取消")
                                        break;
                                        // 登录失败
                                    case 2:
                                        this.showMsg("登录失败")
                                        break;
                                    default:
                                        break;
                                }
                            }
                        }
                    }
                });
            }
  • 企业微信登录

                var params = {}
                params.sch = this.schema; // 企业微信应用生成的SCHEMA
                params.appId = this.appId; // 企业唯一标识。创建企业后显示在,我的企业 CorpID字段,企业ID
                params.agentId = this.agentId; // 企业微信应用的AgentId
                params.state =
                "dd"; // 用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加session进行校验
                // android的登录结果回调通过这里的第二个参数回调,iOS的登录回调通过setCallback里回调
                enterpriseWeChat.sendAuthMessage(params, (resp) => {
                    this.showMsg(JSON.stringify(resp))
                    var errCode = resp.errCode
                    switch (errCode) {
                        // 授权登录成功
                        case 0:
                            this.showMsg("登录成功")
                            break;
                            // 登录取消
                        case 1:
                            this.showMsg("登录取消")
                            break;
                            // 登录失败
                        case 2:
                            this.showMsg("登录失败")
                            break;
                        default:
                            break;
                    }
                });
  • 企业微信分享文本

                var params = {};
                params.txt = "您好,亲爱的客户,很高心为您服务";
                params.appPkg = this.appPkg;
                params.appName = this.appName;
                params.appId = this.appId;
                params.agentId = this.agentId;
                enterpriseWeChat.sendMediaText(params);
  • 企业微信分享图片

                var absPath = plus.io.convertLocalFileSystemURL("_www")
                // Android获取的absPath以/结尾,iOS获取的absPath不是/结尾 
                if (absPath.endWith('/')) {
                    absPath = absPath.substring(0, absPath.length - 1)
                }
                var filePath = absPath + '/static/test.png'

                var params = {};
                params.fileName = "test";
                params.filePath = filePath;

                params.appPkg = this.appPkg;
                params.appName = this.appName;
                params.appId = this.appId;
                params.agentId = this.agentId;
                enterpriseWeChat.sendMediaImage(params);
  • 企业微信分享文件

                var absPath = plus.io.convertLocalFileSystemURL("_www")
                // Android获取的absPath以/结尾,iOS获取的absPath不是/结尾 
                if (absPath.endWith('/')) {
                    absPath = absPath.substring(0, absPath.length - 1)
                }
                var filePath = absPath + '/static/test.pdf'

                var params = {};
                params.fileName = "test";
                params.filePath = filePath;

                params.appPkg = this.appPkg;
                params.appName = this.appName;
                params.appId = this.appId;
                params.agentId = this.agentId;
                enterpriseWeChat.sendMediaFile(params);
  • 企业微信分享视频

                var absPath = plus.io.convertLocalFileSystemURL("_www")
                // Android获取的absPath以/结尾,iOS获取的absPath不是/结尾 
                if (absPath.endWith('/')) {
                    absPath = absPath.substring(0, absPath.length - 1)
                }
                var filePath = absPath + '/static/test.mp4'

                var params = {};
                params.fileName = "test";
                params.filePath = filePath;

                params.appPkg = this.appPkg;
                params.appName = this.appName;
                params.appId = this.appId;
                params.agentId = this.agentId;
                enterpriseWeChat.sendMediaVideo(params);
  • 企业微信分享链接

                var params = {};
                params.thumbUrl =
                    "https://img2.baidu.com/it/u=3012806272,1276873993&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=500";
                params.webpageUrl = "https://www.baidu.com";
                params.title = "百度";
                params.description = "百度链接";

                params.appPkg = this.appPkg;
                params.appName = this.appName;
                params.appId = this.appId;
                params.agentId = this.agentId;
                enterpriseWeChat.sendMediaLink(params);
  • 企业微信分享小程序

                var absPath = plus.io.convertLocalFileSystemURL("_www")
                // Android获取的absPath以/结尾,iOS获取的absPath不是/结尾 
                if (absPath.endWith('/')) {
                    absPath = absPath.substring(0, absPath.length - 1)
                }
                var filePath = absPath + '/static/test.png'

                var params = {};
                params.username = "gh_dde54cb88ce7@app"; //必须是应用关联的小程序,注意要有@app后缀
                params.description = "dddddd";
                params.path = "/pages/plugin/index.html?plugid=1cbd3b7c8674e61769436b5e354ddb2f";
                params.image = filePath;
                params.title = "测试_MaHow";

                params.appPkg = this.appPkg;
                params.appName = this.appName;
                params.appId = this.appId;
                params.agentId = this.agentId;
                params.schema = this.schema;
                // android的登录结果回调通过这里的第二个参数回调,iOS的登录回调通过setCallback里回调
                enterpriseWeChat.sendMediaMiniProgram(params, (resp) => {
                    this.showMsg(JSON.stringify(resp))
                });

如果觉得可以就点个👍吧,欢迎粉丝收藏,土豪打赏,您的关注就是我们创作的动力!

隐私、权限声明

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

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

插件不采集任何数据

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

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