使用腾讯RTC构建一个类似Discord的平台

10 分钟阅读
Feb 18, 2025

场景概述

Discord 是一个免费的在线实时消息应用程序和数字分发平台,旨在为社区服务。它允许游戏、教育和商业领域的用户通过软件的聊天频道相互交流消息、图片、视频和音频。

Discord platform for real-time communication, featuring chat channels, video conferencing

Discord 概念

  • 服务器:在 Discord 中,有一种群聊形式,称为服务器(类似于社区),与普通通信软件的群组不同,服务器所有者可以在服务器中创建自己的社区。
  • 频道:在服务器中,可以创建聊天频道,包括语音频道和文本频道。语音频道可用于游戏广播、聊天等。频道可以与身份组集成各种权限,使 Discord 社区系统更加多样化。
  • 线程:用户可以在线程中讨论特定主题。

应用产品

腾讯 RTC 聊天

基本集成指南

创建聊天应用

本教程基于聊天。因此,您需要在控制台中创建一个应用。

Create a Chat Application in Tencent RTC Console



应用成功创建后,您可以在聊天控制台的基本信息页面查看应用的基本信息。

了解相关配置和功能

要使用聊天实现 Discord 功能,您需要提前了解与聊天相关的基本概念以及本教程中提到的一些适当术语,包括但不限于以下内容:

  • SDKAppID:聊天为每个应用分配一个 SDKAppID。应用的 SDKAppID 可以在控制台中创建应用后的应用详细信息页面查看,并在初始化聊天 SDK 和计算用户登录票时使用。有关更多信息,请参见 UI SDK 初始化登录
  • 密钥:应用的密钥可以在聊天控制台应用详细信息页面查看,并用于计算用户的 SDK 登录票。
  • 用户账户:只有拥有聊天账户的用户才能登录聊天。当用户通过客户端 SDK 成功 登录 时,聊天后台会自动为用户创建聊天账户。此外,您可以使用聊天提供的服务器 API 将用户导入聊天的用户系统
  • 群组:到目前为止,聊天提供 五种类型的群组 以适应不同场景,用户可以发送和接收消息。
  • Webhook 配置:您可以主动集成聊天提供的客户端和服务器 API,当特定业务逻辑被触发时,聊天会自动将必要的信息返回给您的服务器。您需要做的就是在聊天控制台的Webhook 配置模块中完成相关配置。聊天提供多种 webhook 配置,并确保 webhook 事件的高可靠性。您可以使用 webhooks 实现各种自定义需求。
  • 自定义字段:默认情况下,聊天为开发者提供符合大多数需求的字段。它还为每个模块提供以下自定义字段,以满足用户对扩展字段的需求:

注意:

要使用自定义字段,您可以在控制台中配置它们,然后通过 SDK/API 进行读写。

集成客户端和服务器 SDK



要实现与 Discord 相关的功能,您需要集成聊天 SDK。聊天提供多样且易于使用的 SDK 和服务器 API。如果您使用相同的 SDKAppID 登录应用,消息将在客户端之间同步。根据您的业务需求场景和技术堆栈选择合适的 SDK。

特定场景实现

如上图所示,Discord 的功能包括服务器、频道和线程。不同的服务器用于不同的内容。例如,我们有荣耀之王服务器和和平精英服务器。您可以在服务器中创建不同类型的频道,例如文本频道、语音频道和公告频道。用户在频道中相互沟通。如果他们对某个主题有更多想法,他们可以创建一个线程进行进一步讨论。以下将逐一介绍如何通过聊天实现这些关键的 Discord 功能。

注意:

对于代码演示,我们以 Android 客户端(Java SDK)为例。有关其他 SDK 版本 API 调用的示例,请参见集成方案(无 UI)

服务器

创建服务器

分析发现 Discord 服务器列表具有以下特点:

  1. 服务器可以拥有大量用户。
  2. 用户实际上并不在服务器中相互沟通,而是仅在服务器中的频道或线程中聊天。
  3. 服务器中的历史聊天消息需要存储在漫游服务器上。
  4. 用户可以自由访问服务器。
  5. 可以在服务器中创建频道。

虽然聊天提供五种类型的群组,但只有社区群组符合 Discord 服务器的特征。聊天社区群组允许用户自由加入和离开,支持最多 100,000 名成员,并存储消息历史记录。要加入该群组,用户需要搜索群组 ID 并发送申请,该申请不需要管理员批准即可加入该群组。

您可以使用createGroup API 创建服务器(群组)。请注意,群组类型应为社区,并且setSupportTopic 必须设置为true,以便在服务器中创建频道。以下是示例代码:

V2TIMGroupInfo  groupinfo = new V2TIMGroupInfo();
groupinfo.setGroupName("测试服务器");
groupinfo.setSupportTopic(true);
// 初始群组成员
List<V2TIMCreateGroupMemberInfo> memberList = new LinkedList<V2TIMCreateGroupMemberInfo>();
// 其他设置,例如服务器头像
V2TIMManager.getGroupManager().createGroup(groupinfo, memberList, new V2TIMValueCallback<String>() {
            @Override
            public void onError(int i, String s) {
                // 创建失败
            }

            @Override
            public void onSuccess(String s) {
                // 服务器创建成功,返回服务器 ID。
            }
});

在 API 调用成功后,服务器 ID 将在onSuccess回调中返回,稍后在创建频道时将使用该 ID。

注意:您还可以使用聊天提供的服务器创建 API。关键参数如下:

{
    "Type": "Community", // 群组类型(必填)
    "Name": "TestCommunityGroup", // 群组名称(必填)
    "SupportTopic": 1// 是否支持话题选项。有效值:`1`:是;`0`:否。
}

###### Server list

There is a list of servers that the current user has joined on the far left of Discord. For the community scenario, Chat provides a dedicated API for querying the server list.

```java
V2TIMManager.getGroupManager().getJoinedCommunityList(new V2TIMValueCallback<List<V2TIMGroupInfo>>() {
            @Override
            public void onSuccess(List<V2TIMGroupInfo> v2TIMGroupInfos) {
                // The server list is got successfully, and the basic information of the server list is provided in the returned `List<V2TIMGroupInfo>`.
            }

            @Override
            public void onError(int i, String s) {
              // Failed to get the service list.
            }
});

返回的 V2TIMGroupInfo 提供基本的服务器信息。然而,返回的服务器信息不包括未读消息计数和自定义状态等信息。为了实现与Discord相同的效果,我们需要使用Chat提供的其他API来实现服务器列表的未读消息计数,这将在文档后面讨论。

服务器类别

当创建一个服务器时,将为其创建一个默认类别。在服务器创建后,您可以创建一个新类别。在Chat中,服务器本质上是一个社区。因此,我们可以为社区组设置自定义字段以实现服务器类型特性。要使用自定义组字段,请执行以下步骤:

1. 在控制台中启用自定义字段 key

2. 使用客户端SDK或服务器API读取/写入自定义字段。

通过使用服务器API 客户端SDK

注意:

社区组功能仅在终极版中可用。在为社区组设置自定义字段之前,您需要购买终极版。

服务器的未读消息计数和自定义状态的显示



如前所述,获取已加入服务器列表的API不返回未读消息计数和服务器状态等信息。需要注意的是,我们不仅需要获取这些数据,还需要监听这些数据的变化,以便及时更新客户端UI。由于服务器由Chat社区组实现,而社区组不会在Chat中生成对话,因此我们需要统计所有公共和私有频道对话中的未读消息总数。我们可以使用getUnreadCount API 获取公共频道的未读消息计数,并使用 getConversation API 获取私有频道的未读消息计数(因为私有频道是由工作组实现的)。

// 公共频道
List<String> conversationIDList = new LinkedList();
conversationIDList.add("GROUP_$GROUPID");
V2TIMManager.getConversationManager().getConversationList(conversationIDList, new V2TIMValueCallback<List<V2TIMConversation>>() {
            @Override
            public void onError(int i, String s) {
                // 获取服务器的会话信息失败
            }

            @Override
            public void onSuccess(V2TIMConversationList List<V2TIMConversation>) {
               // 成功获取服务器的会话信息
            }
});
// 私有频道
V2TIMManager.getGroupManager().getTopicInfoList(groupID, topicIDList, new V2TIMValueCallback<List<V2TIMTopicInfoResult>>() {
                @Override
                public void onSuccess(List<V2TIMTopicInfoResult> v2TIMTopicInfoResults) {

                }

                @Override
                public void onError(int i, String s) {
                }
});

要实现服务器的自定义状态功能,我们可以使用setConversationCustomData API 设置自定义服务器会话数据。

List<String> conversationIDList = new LinkedList();
String customData = "忙碌"
V2TIMManager.getConversationManager().setConversationCustomData(conversationIDList, customData, new V2TIMValueCallback<List<V2TIMConversationOperationResult>>() {
            @Override
            public void onSuccess(List<V2TIMConversationOperationResult> v2TIMConversationOperationResults) {
                // 自定义组会话数据设置成功
            }

            @Override
            public void onError(int i, String s) {
                // 设置自定义组会话数据失败
            }
});

当与服务器会话相关的数据发生变化时,客户端需要尝试更新UI显示。为了监听服务器会话的变化,Chat提供了相应的事件监听器功能 addConversationListener该回调函数将在以下情况下被触发:

1. 服务器消息被添加、删除或修改。

2. 服务器消息的未读计数发生变化。

3. 自定义服务器信息被修改。

4. 服务器被固定到顶部。

5. 服务器的消息接收配置被修改。

6. 服务器标记被修改。

7. 服务器组被修改。

8. ...

V2TIMConversationListener conversationLister = new V2TIMConversationListener() {
            @Override
            public void onSyncServerStart() {
            }

            @Override
            public void onSyncServerFinish() {
            }

            @Override
            public void onSyncServerFailed() {
            }

            @Override
            public void onNewConversation(List<V2TIMConversation> conversationList) {
            }

            @Override
            public void onConversationChanged(List<V2TIMConversation> conversationList) {
            }
            @Override
            public void onTotalUnreadMessageCountChanged(long totalUnreadCount) {
            }

            @Override
            public void onConversationGroupCreated(String groupName, List<V2TIMConversation> conversationList) {
            }

            @Override
            public void onConversationGroupDeleted(String groupName) {
            }

            @Override
            public void onConversationGroupNameChanged(String oldName, String newName) {
            }

            @Override
            public void onConversationsAddedToGroup(String groupName, List<V2TIMConversation> conversationList) {、
            }

            @Override
            public void onConversationsDeletedFromGroup(String groupName, List<V2TIMConversation> conversationList) {
            }
}
V2TIMManager.getConversationManager().addConversationListener(conversationLister);

总结来说,我们可以使用 getJoinedCommunityListgetConversationList APIs 以及 addConversationListener 回调来实现显示服务器列表的Discord功能。

频道

在一个服务器中可以创建多个频道。如下图所示,频道是在服务器下创建的,频道可以放置在不同的类别中。



用户可以邀请其他人加入频道并修改频道的基本设置。用户大多数聊天都在频道中进行,因此频道能力在Discord中至关重要。Discord中的频道能力对应于Chat中的主题能力。Chat的社区组提供在组中创建主题的能力。

默认频道

当创建一个服务器时,Discord将为服务器创建四个默认频道。Chat也可以实现这样的功能。过程如下:

1. 通过群组创建后 webhook通知业务服务器服务器创建成功。

2. 业务方确定创建的组是否为社区组,以免影响与其他组有关的业务。

3. 根据服务器属性在服务器上创建主题

在服务器上创建主题的参数如下:

{
    "GroupId": "@TGS#_@TGS#cQVLVHIM62CJ", // 主题的组ID,必填
    "TopicId": "@TGS#_@TGS#cQVLVHIM62CJ@TOPIC#_TestTopic", // 自定义主题ID,选填
    "TopicName": "TestTopic", // 主题名称,必填
    "From_Account": "1400187352", // 创建主题的成员
    "CustomString": "这是自定义字符串",// 自定义字符串
    "FaceUrl": "http://this.is.face.url", // (可选)主题头像URL
    "Notification": "这是主题通知", // (可选)主题通知
    "Introduction": "这是主题介绍" // (可选)主题介绍
}

创建频道

在Discord客户端,用户可以在不同的频道类别下创建频道,如下图所示:

在Discord中创建频道相当于在Chat的社区组中创建主题。在Chat中创建主题时,您可以设置主题的类别和基本信息。



您可以使用createTopicInCommunity API实现相关功能。

String groupID = "服务器ID"
V2TIMTopicInfo info = new V2TIMTopicInfo();
info.setCustomString("{'categray':'游戏','type':'文本'}") // 设置频道类别和类型
// 为`V2TIMTopicInfo`设置基本信息
V2TIMManager.getGroupManager().createTopicInCommunity(groupID, info, new V2TIMValueCallback<String>() {
            @Override
            public void onSuccess(String s) {
                // 频道创建成功
            }

            @Override
            public void onError(int i, String s) {
                // 创建频道失败
            }
});

在创建频道时,您可以调用V2TIMTopicInfo 方法来设置频道信息,并调用setCustomString API设置频道类别和类型。



在创建频道时,您可以指定它是否为私有频道。私有频道与普通频道不同:

1. 用户在加入服务器后不会自动加入私有频道。

2. 用户只能在被服务器管理员邀请的情况下加入私有频道。

因此,我们可以使用工作组来实现私有频道功能。然而,与服务器绑定的私有频道的信息需要存储在业务方。

频道类型

在Discord中创建频道时,您可以将频道类型设置为语音或文本。文本频道允许基于文本、表情符号和图片的聊天,而语音频道允许音频/视频聊天。请注意,用户一次只能在一个语音频道中。要加入新的语音频道,用户需要离开当前加入的语音频道。

请注意以下几点:

1. 创建频道时,需要设置频道类型。查找频道创建部分中的设置方法。

2. 当用户加入语音频道时,系统需要确定用户是否已经在另一个语音频道中。

3. 用户在一个应用程序中一次只能加入一个语音频道。

4. Chat目前没有提供查询用户是否在语音频道及在哪个语音频道的API。这部分数据需要由业务方维护。

关于上述最后一点,开发者可以使用Chat提供的群组加入和离开的回调来维护用户的语音频道状态,并将状态存储在业务方。请注意,Chat提供的回调可能会有延迟,这意味着在用户离开一个语音频道后,用户可能无法立即加入另一个语音频道。因此,为了解决这个问题,我们还可以使用客户端实时向业务服务器报告用户的语音频道加入或离开的状态。

邀请用户加入频道

用户可以通过三种方式加入频道:

1. 被其他用户邀请加入服务器。当用户加入服务器时,用户会加入所有服务器的公共频道。

2. 搜索服务器然后加入服务器。

3. 被服务器管理员邀请加入私有频道。

根据社区的特点,用户只需加入服务器即可加入公共频道。

1. 支持通过精确的群组ID搜索加入服务器。

2. 支持通过邀请加入服务器。

3. 支持主动申请加入服务器,无需批准。

设置频道

您可以静音或解除静音频道,并配置频道的通知。相应的API是setAllMutesetGroupReceiveMessageOpt

// 设置频道的基本信息
V2TIMManager.getGroupManager().setTopicInfo(topicInfo, new V2TIMCallback() {
    @Override
    public void onSuccess() {
        // 配置成功
    }

    @Override
    public void onError(int i, String s) {
        // 配置失败
    }
});
// 设置频道的消息接收选项
String groupID = "topicid"
int opt = 0; 
V2TIMManager.getMessageManager().setGroupReceiveMessageOpt(groupID, opt, new V2TIMCallback() {
    @Override
    public void onSuccess() {

    }

    @Override
    public void onError(int i, String s) {

    }
});

频道消息列表

您可以使用getHistoryMessageList API获取频道的历史消息。

final V2TIMMessageListGetOption option = new V2TIMMessageListGetOption();
option.setGroupID("频道ID");
option.setCount(20);
// 其他设置
V2TIMManager.getMessageManager().getHistoryMessageList(option, new V2TIMValueCallback<List<V2TIMMessage>>() {
    @Override
    public void onSuccess(List<V2TIMMessage> v2TIMMessages) {
        // 成功获取频道的历史消息
    }

    @Override
    public void onError(int code, String desc) {
        // 获取频道的历史消息失败
    }
});

频道的未读消息计数

频道的未读消息计数与服务器的未读消息计数不同。服务器的未读消息计数在会话信息中,而频道的未读消息计数在频道的基本信息中。我们可以使用群组回调onTopicInfoChanged 提供的Chat实时获取未读消息计数。

String groupID = "服务器ID";
List< String > topicIDList= new LinkedList(); // 频道消息列表
V2TIMManager.getGroupManager().getTopicInfoList(groupID, topicIDList, new V2TIMValueCallback<List<V2TIMTopicInfoResult>>() {
    @Override
    public void onSuccess(List<V2TIMTopicInfoResult> v2TIMTopicInfoResults) {
        // 获取频道信息,例如频道ID、名称和未读消息计数
    }

    @Override
    public void onError(int i, String s) {

    }
});

频道成员列表

加入服务器的用户将默认加入服务器下的所有公共频道。因此,要获取公共频道成员列表,您只需获取服务器的群组成员列表。以下是获取公共频道成员列表的方法:

String groupID = "服务器ID";
int filter = 0; // 群组成员角色:管理员、普通成员...
long nextSeq = 0;// 分页参数
V2TIMManager.getGroupManager().getGroupMemberList(groupID, filter, nextSeq , new V2TIMValueCallback<V2TIMGroupMemberInfoResult>() {
    @Override
    public void onError(int i, String s) {
        CommonUtil.returnError(result,i,s);
    }

    @Override
    public void onSuccess(V2TIMGroupMemberInfoResult v2TIMGroupMemberInfoResult) {

    }
});

要获取私有频道的成员列表,您还可以调用getGroupMemberList API,但传入私有频道的群组ID。

身份证权限

对于权限组,用户可以根据需要定义权限,并为不同的权限组配置不同的权限和成员,从而使用户能够通过权限管理组。社区组可以通过权限组进行管理。权限组的管理比固定角色的管理员更灵活,适合成员和主题较多的社区。

有关在客户端集成权限组的示例,请参见:无UI集成 > 社区主题 > 权限组

有关在服务器端集成权限组的示例,请参见:服务器端API > REST API > 权限组管理 > 创建权限组

线程

线程是针对频道中特定主题的讨论组。用户可以浏览特定主题内的消息摘要,线程的摘要也可以在频道的消息列表中查看。线程也被视为Chat中的一个组。

创建线程

线程可以单独创建,也可以与频道中的消息绑定创建。您可以使用Chat提供的createGroup API创建线程。请注意以下事项:

1. 创建线程时,当前服务器的所有成员默认都在该线程中。

2. 创建线程后加入服务器的成员也会被添加到线程中。

3. 后来加入线程的用户可以查看自创建以来的线程聊天历史。

总结来说,当创建线程/组时,服务器的组成员会被添加到该线程中,当用户加入服务器时,我们需要在用户的组加入回调中将用户添加到服务器的所有线程中。最好在业务服务器端实现这两个步骤,使用以下API:

1. 查询组中的成员

2. 创建组并设置组成员

3. 邀请用户加入组

服务器端webhook是用户加入组后的webhook。

线程数量

在频道列表中,您可以获取频道中的线程列表。因此,我们需要设置线程与服务器之间的多对一关系。如果线程有历史消息,我们还需要设置线程与消息之间的一对一关系。Chat目前没有提供设置这些关系的能力,因此需要在业务方维护这些关系。我们可以使用业务方提供的HTTP API获取线程数量和线程列表,并发送在线消息实时更新线程列表。

线程摘要

当用户为某条消息创建线程时,用户可以在消息列表中查看以下消息摘要信息:

1. 线程中的消息数量

2. 线程中的lastMessage相关信息

3. 消息列表中需要实时显示的其他信息

要实现线程的消息摘要功能,我们需要使用群组消息发送回调和消息编辑功能。在用户在线程中发送消息后,Chat服务触发消息发送回调并将相关信息同步到业务方。然后业务方统计线程的消息数量,维护lastMessage信息,并通过消息编辑API存储相关信息。

消息

消息反馈

消息反馈是对用户消息的扩展,如下图所示:



由于所有类型的消息都支持编辑和反馈,并且需要社区组的支持,我们建议将数据存储在cloudCustomData字段中。以下是供参考的详细数据存储格式:

{
  "reaction": {
    "simle":["user1","user2"]
  }
}
V2TIMManager.getMessageManager().modifyMessage(modifiedMessage, new V2TIMCompleteCallback<V2TIMMessage>() {
    @Override
    public void onComplete(int i, String s, V2TIMMessage v2TIMMessage) {
        // 消息修改完成
    }
});

消息编辑



消息编辑的工作原理与消息反馈相同,仅在自定义数据配置上有所不同。为了使所有消息支持编辑,我们建议在cloudCustomData字段中编辑数据。数据格式如下:

{
  "isEdited": true
}
V2TIMManager.getMessageManager().modifyMessage(modifiedMessage, new V2TIMCompleteCallback<V2TIMMessage>() {
    @Override
    public void onComplete(int i, String s, V2TIMMessage v2TIMMessage) {
        // 消息编辑完成
    }
});

消息加星

消息加星是将消息在群聊中加星,以便其他用户能够看到被加星的消息。由于社区组不支持群组属性,我们使用自定义消息来实现消息加星功能。

要使用自定义群组消息,我们需要先在Chat控制台中进行如下配置:



然后进行以下配置:

V2TIMGroupInfo info =  new V2TIMGroupInfo();
info.setCustomInfo("pin data");
V2TIMManager.getGroupManager().setGroupInfo(info, new V2TIMCallback() {
    @Override
    public void onError(int i, String s) {
        // 配置失败
    }

    @Override
    public void onSuccess() {
        // 配置成功
    }
});

然后,群组成员可以收到onMemberInfoChanged 事件,离线用户也可以通过群组资料获取被加星的消息内容:

List< String > groupIDList = new LinkedList();
V2TIMManager.getGroupManager().getGroupsInfo(groupIDList, new V2TIMValueCallback<List<V2TIMGroupInfoResult>>() {
    @Override
    public void onError(int i, String s) {

    }

    @Override
    public void onSuccess(List<V2TIMGroupInfoResult> v2TIMGroupInfoResults) {

    }
});

请注意,自定义字段目前只能在服务器上配置,而不能在频道上配置。

“正在输入...”状态

当朋友正在输入时,其他客户端的用户可以看到用户的“正在输入...”状态,如上图所示。我们可以使用Chat的在线消息功能来实现此功能。“正在输入...”状态消息:

1. 只能被在线用户接收。

2. 不会存储在漫游服务器上。

此外,我们进行了以下优化以提高性能:

  • 只有当两名用户在20秒内相互发送消息时,才会触发“正在输入...”状态消息的发送。
  • 相同的文本消息不会多次触发在线消息发送。

私人消息

私人消息是Discord用户彼此发送的消息,无论他们是否是朋友。

  • 要向不是您朋友的另一个用户发送私人消息,您需要知道该用户的用户ID,并在Chat控制台中禁用消息发送选项的关系链检查。否则,消息发送将失败。
  • 或者,您可以调用addFriend API将该用户添加为您的朋友,并使用getFriendList API获取您的联系人。

相关代码如下:

// 添加朋友
V2TIMManager.getFriendshipManager().addFriend(info, new V2TIMValueCallback<V2TIMFriendOperationResult>() {
            @Override
            public void onError(int i, String s) {
                // 添加朋友失败
            }

            @Override
            public void onSuccess(V2TIMFriendOperationResult v2TIMFriendOperationResult) {
               // 成功添加朋友
            }
});
// 获取联系人
V2TIMManager.getFriendshipManager().getFriendList(new V2TIMValueCallback<List<V2TIMFriendInfo>>() {
            @Override
            public void onError(int i, String s) {
               // 获取联系人失败
            }

            @Override
            public void onSuccess(List<V2TIMFriendInfo> v2TIMFriendInfos) {
               // 成功获取联系人
            }
});

个人中心

在线状态

Discord用户面板的在线状态功能可以通过Chat提供的以下在线状态API实现:

  • setSelfStatus: 设置自己自定义在线状态的API。用户的在线/离线状态由Chat设置,开发人员无法修改。
  • getUserStatus: 获取朋友在线状态的API。
  • onUserStatusChanged: 监听朋友在线状态变化的API。

相关代码如下:

// 设置自己的在线状态
V2TIMUserStatus customStatus = new V2TIMUserStatus();
V2TIMManager.getInstance().setSelfStatus(customStatus, new V2TIMCallback() {
    @Override
    public void onSuccess() {

    }

    @Override
    public void onError(int i, String s) {

    }
});
// 获取朋友的在线状态
List<String> userIDList = new LinkerList();
V2TIMManager.getInstance().getUserStatus(userIDList, new V2TIMValueCallback<List<V2TIMUserStatus>>() {
    @Override
    public void onSuccess(List<V2TIMUserStatus> v2TIMUserStatuses) {

    }

    @Override
    public void onError(int i, String s) {

    }
});

个人信息

与个人信息相关的功能可以通过Chat提供的以下关系链相关API实现:

// 设置用户资料
final V2TIMUserFullInfo userFullInfo = new V2TIMUserFullInfo();
V2TIMManager.getInstance().setSelfInfo(userFullInfo, new V2TIMCallback() {
    @Override
    public void onError(int i, String s) {

    }

    @Override
    public void onSuccess() {

    }
});
// 获取用户资料
List<String> userIDList = new LinkedList();
V2TIMManager.getInstance().getUsersInfo(userIDList, new V2TIMValueCallback<List<V2TIMUserFullInfo>>() {
    @Override
    public void onError(int i, String s) {

    }

    @Override
    public void onSuccess(List<V2TIMUserFullInfo> v2TIMUserFullInfos) {

    }
});

其他

搜索



Discord提供以下搜索功能:

Chat提供丰富的搜索功能,包括:

有关如何使用这些API,请参见官方文档

离线推送

Chat的在线消息无法到达离线用户。为了解决这个问题,我们需要将设备供应商提供的离线推送能力集成到Chat中。有关更多信息,请参见离线推送

敏感词验证

当您在Discord中发送信息和配置时,内容需要过滤。Chat也提供类似的方案,以帮助用户合规使用Chat。

立即订购

点击这里快速进入购买页面进行订购。