互动消息是用于加强直播间消息沟通、提升交互体验的服务。提供了丰富、易集成的SDK,可在用户开发的直播应用中轻松集成评论、弹幕、点赞等功能。本文介绍微信小程序集成互动消息应用的操作步骤。
前提条件
服务端集成
客户端集成前,请确保已完成服务端集成,并提供客户端访问的获取鉴权Token的接口。详细操作,请参见服务端集成。
小程序后台配置服务器域名
- 登录微信公众平台。 
- 在左侧导航栏选择开发 > 开发管理。 
- 在开发设置页面,将如下域名配置到服务器域名中。 - request合法域名:以HTTPS开头的域名 - https://slsrole.alicdn.com https://videocloud.cn-hangzhou.log.aliyuncs.com
- socket合法域名:以wss开头的域名 - wss://rcoims.rtn.aliyuncs.com
 
集成小程序SDK文件
下载SDK文件
单击下载 微信小程序SDK 到本地,将下载的alivc-im.bin改名为alivc-im.zip,然后解压得到 alivc-im.js和alivc-im.wasm.br两个文件。
原生小程序项目集成文件
如果您的项目是原生微信小程序项目,可以通过以下2步将SDK集成到项目中:
- 将alivc-im.js 、alivc-im.wasm.br 两个文件复制到项目 /lib 文件夹下。 
- 修改初始化时指定引入的 wasm 的地址,详细请查看初始化。 
项目目录结构请参考下方的示例:
.
├── lib
│   ├── alivc-im.js
│   ├── alivc-im.wasm.br
├── pages
│   ├── index
│   │   ├── index.js
│   │   ├── index.json
│   │   ├── index.wxml
│   │   └── index.wxssuni-app 项目集成文件
如果您的项目是基于 uni-app 框架编译为微信小程序的,可通过以下3步集成SDK到项目中:
- 将 alivc-im.js 文件放入 /lib 文件夹下。 
- 将 alivc-im.wasm.br 文件放入 /static/mp-weixin 文件夹下。这样编译时就能将alivc-im.wasm.br 文件拷贝到编译后的生产目录中。 
- 将初始化 init 接口的 locateFile 返回的地址修改为 /static/mp-weixin/alivc-im.wasm.br,详细请查看初始化。 
项目目录结构请参考下方的示例:
.
├── lib
│   ├── alivc-im.js
├── static
│   ├── mp-weixin
│   │   ├── alivc-im.wasm.br
├── pages
│   ├── index
│   │   ├── index.vueTaro 项目集成文件
如果您的项目是基于 Taro 解决方案编译为微信小程序的,可通过以下4步集成SDK到项目中:
- 将 alivc-im.js 文件放入 /src/lib 文件夹下。 
- 将 alivc-im.wasm.br 文件放入 /static 文件夹下。 
- 修改项目配置文件 /config/index.js 的 copy 配置项将 /static 文件夹从源码目录直接拷贝到编译后的生产目录中。 - 参考下方示例修改配置文件: - const config = { projectName: "demo", outputRoot: "dist", copy: { patterns: [ // 将 static 文件夹拷贝到代码编译后的生产目录下 { from: 'static', to: 'dist/static' } ], options: {}, }, // 省略其他配置项 }; module.exports = function (merge) { if (process.env.NODE_ENV === "development") { return merge({}, config, require("./dev")); } return merge({}, config, require("./prod")); };
- 将初始化 init 接口的 locateFile 返回的地址修改为 /static/alivc-im.wasm.br,详细请查看初始化。 
项目目录结构请参考下方的示例:
.
├── config
│   ├── index.js
│   ├── dev.js
│   ├── prod.js
├── static
│   ├── alivc-im.wasm.br
├── src
│   ├── lib
│   │   ├── alivc-im.js
│   ├── pages
│   │   ├── index
│   │   │   ├── index.tsx使用SDK
SDK使用需遵循如下操作顺序:
- 初始化 
- 登录 
- 相关操作 
- 登出 
- 反初始化 
- 其他 
其中相关操作包含群组操作和消息操作,详细说明如下:
注意事项
各ID需遵循以下规则
| appid | 最长64位,仅限于A~Z,a~z, 0~9及“-”, 不能包含其他字符 | 
| userid | 最长64位,仅限于A~Z,a~z, 0~9及“-”, 不能包含其他字符 | 
| groupid | 最长64位,仅限于A~Z,a~z, 0~9及“-”, 不能包含其他字符 | 
初始化
使用前需要进行初始化,可以在相关业务模块的主入口设置。
登录
登录需要鉴权信息,请确保已完成前提条件,即已通过服务端获取到鉴权信息,包括:timestamp、nonce、token等值。
群组操作
以下操作需要确保login异步操作成功后,方可执行。
获取群组管理器
添加和移除群组操作监听器
创建群组
仅限管理员调用,否则会调用失败。
您最多可以创建5,000个群组(已关闭的群组不计入此额度)。为了确保资源的有效利用,请务必及时关闭不再使用的群组。
关闭群组
仅限群主/群管理员调用,否则会调用失败。
进入群组
离开群组
查询群组信息
修改群组信息
支持修改群扩展信息和设置管理员,仅限群主/群管理员调用,否则会调用失败。
查询群组最近成员列表
查询群组全部成员
仅限群主/群管理员调用,否则会调用失败。
对群组进行禁言
仅限群主/群管理员调用,否则会调用失败。
对群组取消禁言
仅限群主/群管理员调用,否则会调用失败。
对群组的用户进行禁言
仅限群主/群管理员调用,否则会调用失败。
对群组用户取消禁言
仅限群主/群管理员调用,否则会调用失败。
查询群组内被禁言的用户列表
仅限群主/群管理员调用,否则会调用失败。
消息操作
获取消息管理器
添加和移除消息操作监听器
单发消息
群发消息
删除/撤回群消息
该接口执行成功后,接收者会收到回调。
查询最近群发消息列表
加入群组后,调用该接口可返回最近50条消息,所有类型的用户均可调用。
查询全部群发消息列表
仅限群主/群管理员调用,否则会调用失败。普通用户建议使用listRecentMessage接口获取最近50条消息。
查询历史消息
该接口主要用户直播结束后的历史消息回放,用户无需进入群组可查询,比较耗时,在直播过程中不建议使用,该接口后续会收费。
登出
await engine.logout();反初始化
登出后如无需再进行登录,可以进行反初始化操作,SDK会对底层操作实例进行释放。
engine.unInit()其他
辅助API接口,用于一些业务场景的判断和处理。
# 判断SDK是否已初始化,业务侧可用此接口判断SDK是否已经实例化
ImEngine.isInitialized();
# 判断当前是否已登录(若是登录中会返回false),只有已登录状态,才可以执行入群、登出等登录后的操作
engine.isLogin();
# 判断当前是否已登出(若是登录中会返回false),只有登出状态才能执行登录操作
engine.isLogout();