更新记录
1.0.2(2024-03-23)
- 修复分享小程序时在线图片问题
1.0.1(2023-09-11)
- 优化iOS回调
1.0.0(2023-09-07)
企业微信授权登录 分享文本、图片、文件、视频、链接网页、小程序到企业微信 打开企业微信 企业微信是否已经安装
查看更多平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:4.4 - 14.0 | armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 | 适用版本区间:9 - 17 |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
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
- 管理员登录企业微信管理后台,选择企业应用
- 选择已有应用或添加应用,进入应用详情页面。
- 选择“企业微信授权登录”,在设置界面填写iOS App的BundleId,设置完成后系统自动生成应用程序scheme。
- 在项目的manifest.json的App其他常用设置-iOS设置-UrlSchemas里面增加企业应用生成的scheme
- 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))
});