接收消息

大约 4 分钟

接收消息

环信即时通讯 IM 的小程序 SDK 可以实现文本、图片、音频、视频和文件等类型的消息的接收。

前提条件

开始前,请确保满足以下条件:

接收文本消息

  • 你可以通过 addEventHandler 注册监听器监听消息事件。你可以添加多个事件。当不再监听事件时,请确保删除监听器。
  • 当消息到达时,接收方会收到 onTextMessage 回调。每个回调包含一条或多条消息。你可以遍历消息列表,并可以解析和展示回调中的消息。
  • 对于聊天室消息,你可以通过消息的 broadcast 属性判断该消息是否为通过 REST API 发送的聊天室全局广播消息
// 使用 `addEventHandler` 监听回调事件
conn.addEventHandler("eventName", {
  onTextMessage: function (message) {},
  
});

接收附件消息

  • 语音、图片、视频和文件消息本质上是附件消息。
  • 接收方可以自行下载语音、图片、图片缩略图、视频和文件。
  • 环信即时通讯 IM 支持消息附件下载鉴权功能。该功能默认关闭,如要开通需联系环信商务。该功能开通后,用户须调用 SDK 的 API EC.utils.download 下载消息附件。

接收语音消息

接收方收到 onAudioMessage 回调,根据消息 url 字段获取语音文件的服务器地址,从而获取语音文件。

// 使用 `addEventHandler` 监听回调事件
conn.addEventHandler("eventName", {
  // 当前用户收到语音消息。
  onAudioMessage: function (message) {
    // 语音文件在服务器的地址。
    console.log(message.url);
  },
});

接收图片消息

接收方收到 onImageMessage 回调,根据消息 url 字段获取图片文件的服务器地址,从而获取图片文件。

// 使用 `addEventHandler` 监听回调事件
conn.addEventHandler("eventName", {
  onImageMessage: function (message) {},
});

接收 GIF 图片消息

自小程序 SDK 4.14.0 开始,支持接收 GIF 图片消息。

与普通消息相同,接收 GIF 图片消息时,接收方会收到 onImageMessage 回调方法。接收方收到消息后,读取消息体的 isGif 属性,若值是 true, 则为 GIF 图片消息。

onImageMessage: (message) => {
    if(message.isGif){
        // 图片为GIF
    }
}

接收视频消息

接收方收到 onVideoMessage 回调,根据消息 url 字段获取视频文件的服务器地址,从而获取视频文件。

// 使用 `addEventHandler` 监听回调事件
conn.addEventHandler("eventName", {
  // 当前用户收到视频消息。
  onVideoMessage: function (message) {
    // 视频文件在服务器的地址。
    console.log(message.url);
    // 视频首帧缩略图文件在服务器的地址。
    console.log(message.thumb);
  },
});

接收文件消息

接收方收到 onFileMessage 回调,根据消息 url 字段获取文件的服务器地址,从而获取文件。

// 使用 `addEventHandler` 监听回调事件
conn.addEventHandler("eventName", {
  // 当前用户收到文件消息。
  onFileMessage: function (message) {
    // 文件在服务器的地址。
    console.log(message.url);
  },
});

接收位置消息

接收方收到 onLocationMessage 回调,需要将该位置的经纬度,借由第三方的地图服务,将位置在地图上显示出来。

// 使用 `addEventHandler` 监听回调事件
conn.addEventHandler("eventName", {
  onLocationMessage: function (message) {},
});

接收透传消息

透传消息是通知指定用户采取特定操作的命令消息。接收方自己处理透传消息。

提示

透传消息发送后,不支持撤回。

接收方通过 onCmdMessage 回调接收透传消息。

// 使用 `addEventHandler` 监听回调事件
conn.addEventHandler("eventName", {
  onCmdMessage: function (message) {},
});

接收自定义消息

自定义消息为用户自定义的键值对,包括消息类型和消息内容。

接收方通过 onCustomMessage 回调接收自定义消息。

// 使用 `addEventHandler` 监听回调事件
conn.addEventHandler("eventName", {
  onCustomMessage: function (message) {},
});

接收合并消息

为了方便消息互动,即时通讯 IM 自 4.2.0 版本开始支持将多个消息合并在一起进行转发。

提示

该功能在 uniapp 中暂不支持运行到原生手机端。

接收合并消息与接收普通消息的操作相同,唯一不同是对于合并消息来说,消息接收事件为 onCombineMessage

对于不支持合并转发消息的 SDK 版本,该类消息会被解析为文本消息,消息内容为 compatibleText 携带的内容,其他字段会被忽略。

合并消息实际上是一种附件消息。收到合并消息后,你可以调用 downloadAndParseCombineMessage 方法下载合并消息附件并解析出原始消息列表。

connection
  .downloadAndParseCombineMessage({
    url: msg.url,
    secret: msg.secret,
  })
  .then((res) => {
    console.log("合并消息解析后的消息列表", res);
  });