上云无忧 > 文档中心 > 环信IM即时通讯使用教程(React-Native) - 管理子区消息
IM即时通讯
环信IM即时通讯使用教程(React-Native) - 管理子区消息

文档简介:
子区消息消息类型属于群聊消息类型,与普通群组消息的区别是需要添加 isChatThread 标记。本文介绍即时通讯 IM React Native SDK 如何发送、接收以及撤回子区消息。
*此产品及展示信息均由环信官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

子区消息消息类型属于群聊消息类型,与普通群组消息的区别是需要添加 isChatThread 标记。本文介绍即时通讯 IM React Native SDK 如何发送、接收以及撤回子区消息。

技术原理

即时通讯 IM React Native SDK 提供 ChatManager、ChatMessage 和 ChatMessageThread 类,用于管理子区消息,支持你通过调用 API 在项目中实现如下功能:

  • 发送子区消息
  • 接收子区消息
  • 撤回子区消息
  • 获取子区消息

如上图所示,消息收发流程如下:

  1. 用户 A 发送一条消息到消息服务器;
  2. 对于子区消息,服务器投递给子区内其他每一个成员;
  3. 用户收到消息。

子区创建和查看如下图:

前提条件

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

  • 已集成 1.0.5 或以上版本 SDK 的基本功能,完成 SDK 初始化,详见 快速开始 及 SDK 集成概述。
  • 了解即时通讯 IM 的使用限制,详见 使用限制。
  • 联系商务开通子区功能。

实现方法

本节介绍如何使用即时通讯 IM React Native SDK 提供的 API 实现上述功能。

发送子区消息

发送子区消息和发送群组消息的方法基本一致,详情请参考 发送消息。唯一不同的是,发送子区消息需要指定标记 isChatThread 为 true。

示例代码如下:

// targetId: 消息接收对象 ID // content: 文本消息内容 // chatType: 会话类型 // isChatThread: 是否是子区消息,
这里设置为 `true`,即是子区消息 ChatMessage message = ChatMessage.createTextMessage(targetId, content,
 chatType, {isChatThread}); // 发送消息时可以设置回调,接收消息的发送状态和结果 // 详见 [2.4.6.2]
(./2.4.6.2messages_RN) const callback = new ChatMessageCallback(); // 发送消息。 ChatClient.getInstance()
 .chatManager.sendMessage(message, callback) .then(() => { // 消息发送动作完成,会在这里打印日志。 
// 消息的发送结果通过回调返回 console.log("send message operation success."); }) .catch((reason) => 
{ // 消息发送动作失败,会在这里打印日志。 console.log("send message operation fail.", reason); }); 
 

接收子区消息

接收消息的具体逻辑,请参考 接收消息,此处只介绍子区消息和其他消息的区别。

子区有新增消息时,子区所属群组的所有成员收到 ChatMessageEventListener#onChatMessageThreadUpdated 回调,子区成员收到 ChatMessageEventListener#onMessagesReceived 回调。

示例代码如下:

// 继承并实现 `ChatMessageEventListener` class ChatMessageEvent implements ChatMessageEventListener 
{ onMessagesReceived(messages: ChatMessage[]): void { console.log(`onMessagesReceived: `, messages);
 } onChatMessageThreadUpdated(msgThread: ChatMessageThreadEvent): void { console.log(`onChatMessageThreadUpdated:
 `, msgThread); } // 其他回调接收省略,实际开发需添加 } // 注册监听器 const listener = new ChatMessageEvent();
 ChatClient.getInstance().chatManager.addMessageListener(listener); // 移除监听器 ChatClient.getInstance()
.chatManager.removeMessageListener(listener); // 移除所有监听器。 ChatClient.getInstance()
.chatManager.removeAllMessageListener(); 
 

撤回子区消息

接收消息的具体逻辑,请参考 撤回消息,此处只介绍子区消息和其他消息的区别。

子区有消息撤回时,子区所属群组的所有成员收到 ChatMessageEventListener#onChatMessageThreadUpdated 回调,子区成员收到 ChatMessageEventListener#onMessagesRecalled 回调。

示例代码如下:

// 继承并实现 `ChatMessageEventListener` class ChatMessageEvent implements ChatMessageEventListener
 { onMessagesRecalled(messages: ChatMessage[]): void { console.log(`onMessagesRecalled: `, messages);
 } onChatMessageThreadUpdated(msgThread: ChatMessageThreadEvent): void { console.log(`onChatMessageThreadUpdated:
 `, msgThread); } // 其他回调接收省略,实际开发中需添加 } 
 

获取子区消息

进入单个子区会话后默认展示最早消息,用户可以从服务器获取子区历史消息;当你需要合并处理本地和服务器拉取到的消息(例如有用户撤回子区消息的提示是 SDK 在本地生成的一条消息)的时候,可以选择从本地获取子区消息。

从服务器获取子区消息(消息漫游)

从服务器获取子区消息,请参考 从服务器获取消息。

管理本地子区消息

群成员可以调用 getThreadConversation 方法获取子区会话,然后从本地数据库中读取指定会话的消息:

// 获取子区会话 ChatClient.getInstance() .chatManager.getThreadConversation(convId, createIfNeed) .then((conv)
 => { // 从本地数据库获取子区会话消息 conv .getMessages(convId, convType, startMsgId, direction, loadCount) 
.then((messages) => { console.log('success.', messages); }) .catch((reason) => { console.log('fail.', reason);
 }); }) .catch((reason) => { console.log('fail.', reason); });

相似文档
  • 环信即时通讯 IM SDK 提供消息举报接口。开发者可以在客户端调用该接口举报违规消息。当服务器端审核服务收到举报消息后,会将举报消息存储到数据库,并在环信即时通讯 IM Console 展示。审核员可在环信即时通讯 IM Console 查看举报记录,并进行相应处理。
  • 通过本文可以实现一个集成聊天 SDK 的简单 app。 实现原理: 下图展示在客户端发送和接收一对一文本消息的工作流程。 如上图所示,发送和接收单聊消息的步骤如下: 客户端向你的应用服务器请求 Token,你的应用服务器返回 Token。 客户端 A 和客户端 B 使用获得的 Token 登录环信即时通讯系统。 客户端 A 发送消息到环信即时通讯服务器。 环信即时通讯服务器将消息发送到客户端 B,客户端 B 接收消息。
  • 介绍 flutter 集成相关内容。 前提条件: 开始前,请注册有效的环信即时通讯 IM 开发者账号和取得 App key,见 环信即时通讯云管理后台 (opens new window)。 集成环境: 具体见 开发环境要求。
  • 4.0.0+4 修复: 安卓构建视频消息崩溃的问题。 4.0.0+3 修复: 安卓 onRemovedFromChatRoom 不回调。 4.0.0+2 修复: 修复List。 修复图片消息和视频消息转换失败;
  • 功能描述: 环信即时通讯 IM 支持多种消息类型,开发者可以方便地对本地会话、消息进行管理,可以从服务端获取历史会话和消息,提供送达回执和已读回执能力。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部