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

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

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

技术原理

环信即时通讯 IM Unity SDK 提供 IChatManager、Message 和 IChatThreadManager 类,用于管理子区消息,支持你通过调用 API 在项目中实现如下功能:

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

消息收发流程如下:

  1. 客户端从应用服务器获取 token。
  2. 客户端 A 和 B 登录即时通讯。
  3. 客户端 A 向客户端 B 发送消息。消息发送至即时通讯 IM 服务器,服务器将消息传递给客户端 B。对于子区消息,服务器投递给子区内其他每一个成员。客户端 B 收到消息后,SDK 触发事件。客户端 B 监听事件并获取消息。

子区创建和查看如下图:

前提条件

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

  • 已集成环信 IM (1.0.5 或以上版本) 的基本功能,账户登录成功。
  • 完成 SDK 初始化,详见 快速开始。
  • 了解环信即时通讯 IM 的使用限制,详见 使用限制。
  • 联系商务开通子区功能。

实现方法

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

发送子区消息

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

示例代码如下:

// 创建一条文本消息,`content` 为消息文字内容,`chatThreadId` 为子区 ID。 Message msg = Message.
CreateTextSendMessage(chatThreadId, content); // 设置消息类型,子区消息需要将 `ChatType` 设置为 
`GroupChat`。 msg.MessageType = MessageType.Group // 设置消息标记 `IsThread` 为 `true`。
 mmsg.IsThread = true; // 发送消息时可以设置 `CallBack` 的实例,获得消息发送的状态。
可以在该回调中更新消息的显示状态。例如消息发送失败后的提示等等。 SDKClient.Instance.ChatManager.
SendMessage(ref msg, new CallBack( onSuccess: () => { Debug.Log($"SendTxtMessage success. msgid:
{msg.MsgId}"); }, onProgress: (progress) => { Debug.Log($"SendTxtMessage progress :{progress.
ToString()}"); }, onError: (code, desc) => { Debug.Log
($"SendTxtMessage failed, code:{code}, desc:{desc}"); } )); 
 

接收子区消息

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

子区有新增消息时,子区所属群组的所有成员收到 IChatThreadManagerDelegate#OnUpdateMyThread 回调,子区成员收到 IChatManagerDelegate#OnMessagesReceived 回调。

示例代码如下:

//继承并实现 IChatManagerDelegate。 public class ChatManagerDelegate : IChatManagerDelegate 
{ //实现 OnMessagesReceived 回调。 public void OnMessagesReceived(List<Message> messages) 
{ //收到消息,遍历消息列表,解析和显示。 } } // 申请并注册监听。 ChatManagerDelegate adelegate 
= new ChatManagerDelegate(); SDKClient.Instance.ChatManager.AddChatManagerDelegate(adelegate); 
// 移除监听。 SDKClient.Instance.ChatManager.RemoveChatManagerDelegate(adelegate); 
 

撤回子区消息

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

子区有消息撤回时,子区所属群组的所有成员收到 IChatThreadManagerDelegate#OnUpdateMyThread 回调,子区成员收到 IChatManagerDelegate#OnMessagesRecalled 回调。

示例代码如下:

//继承并实现 IChatManagerDelegate。 public class ChatManagerDelegate : IChatManagerDelegate 
{ //实现 OnMessagesRecalled 回调。 public void OnMessagesRecalled(List<Message> messages) 
{ //收到消息,遍历消息列表,解析和显示。 } } //申请并注册监听。 ChatManagerDelegate adelegate 
= new ChatManagerDelegate(); SDKClient.Instance.ChatManager.AddChatManagerDelegate(adelegate); 
//移除监听。 SDKClient.Instance.ChatManager.RemoveChatManagerDelegate(adelegate); 
 

获取子区消息

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

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

从服务器获取子区消息,请参考 从服务器获取消息 (消息漫游)。

管理本地子区消息

调用 EMChatManager#getAllConversations() 会返回单聊和群聊的会话,不会返回子区会话,你可以从本地数据库中读取指定会话的消息:

// 需要指定会话类型为 `ConversationType.Group`,且 `isChatThread` 设置为 `true` Conversation conversation
 = SDKClient.Instance.ChatManager.GetConversation(chatThreadId, EMConversationType.GroupChat,
 createIfNotExists, isChatThread); // 如需处理本地数据库中消息,用以下方法到数据库中获取,
SDK 会将这些消息自动存入此会话 conversation.LoadMessages(startMsgId, count, direct, new 
ValueCallBack<List<Message>>( onSuccess: (list) => { Console.WriteLine($"LoadMessages found 
{list.Count} messages"); foreach (var it in list) { Debug.Log($"message id: {it.MsgId}"); } },
 onError: (code, desc) => { Debug.Log($"LoadMessages failed, code:{code}, desc:{desc}"); } )); 
 

注意

可以通过 Conversation#IsThread() 判断当前会话是否是子区会话。

相似文档
  • 即时通讯 IM SDK 提供消息举报接口。开发者可以在客户端调用该接口举报违规消息。当服务器端审核服务收到举报消息后,会将举报消息存储到数据库,并在 Console 展示。审核员可在 Console 查看举报记录,并进行相应处理。
  • 本文主要介绍在调用环信即时通讯 Unity SDK 中的接口过程中,SDK 返回的错误码和错误信息。 你可以根据如下错误码及错误信息了解出错的可能原因,并采取响应措施。 环信即时通讯 Unity SDK 在运行过程中,可能通过如下方式返回错误码和错误信息: 调用方法失败时的返回值。 通过 onError 回调报告错误码。
  • 环信小程序 SDK 为各端小程序开发提供一套完整的技术解决方案,在各端小程序的开发环境下,集成 IM 相关的功能更加便捷、高效。让您的小程序快速获得安全稳定的 IM 能力,集成简单,使用方便,帮助您快速拓展业务,赢得先机。
  • 版本 V4.1.4 Dev 2023-3-16(开发版)新增特性: [IM SDK] 新增 群成员自定义属性功能并增加自定义属性更新事件实现群成员设置和获取在群组中的昵称和头像等属性。 [IM SDK] 在消息创建参数中新增 deliverOnlineOnly 字段实现发消息只投递给在线用户。若开启了该功能,用户离线时消息不投递。
  • 注册环信账号: 开发者需要在环信管理后台 注册并创建应用,来获取唯一 appKey,SDK 初始化时需要配置 appKey。 搭建微信小程序开发环境: 首先需要下载并安装 开发者工具 (opens new window),然后按照微信小程序的 接入流程 (opens new window)一步步创建一个小程序
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部