doocs/qcloud-im-server-sdk-java高级功能

doocs/qcloud-im-server-sdk-java高级功能

【免费下载链接】qcloud-im-server-sdk-java ☁ Tencent Cloud IM Server SDK in Java | 腾讯云 IM 服务端 SDK Java 版 【免费下载链接】qcloud-im-server-sdk-java 项目地址: https://gitcode.com/doocs/qcloud-im-server-sdk-java

腾讯云IM服务端SDK提供了离线推送、消息回执、内容审核、敏感词过滤、多设备登录同步以及自定义回调等高级功能,帮助开发者实现高效的消息管理和业务扩展。

离线推送与消息回执

腾讯云 IM 服务端 SDK 提供了强大的离线推送和消息回执功能,确保消息在用户离线时仍能及时送达,并提供消息状态的可视化追踪。以下将详细介绍这两个功能的使用方法和实现细节。

离线推送

离线推送功能允许在用户离线时,通过第三方推送服务(如 APNs、华为推送等)将消息推送到用户设备。腾讯云 IM SDK 通过 OfflinePushInfo 类配置推送参数。

关键配置参数
参数名类型说明
PushFlagInteger推送开关,0 表示关闭推送,1 表示开启推送。
TitleString推送标题,用于在通知栏显示。
DescString推送内容描述。
ExtString扩展字段,用于携带额外信息。
AndroidInfoAndroidInfo安卓设备推送配置,包括声音、渠道 ID 等。
ApnsInfoApnsInfoiOS 设备推送配置,包括声音、角标模式等。
示例代码

以下是一个配置离线推送的示例:

OfflinePushInfo pushInfo = OfflinePushInfo.builder()
    .pushFlag(1) // 开启推送
    .title("新消息通知")
    .desc("您有一条未读消息")
    .ext("{\"key\":\"value\"}")
    .androidInfo(AndroidInfo.builder()
        .sound("default")
        .huaweiChannelId("IM")
        .build())
    .apnsInfo(ApnsInfo.builder()
        .sound("default")
        .badgeMode(1)
        .build())
    .build();

SendMsgRequest request = SendMsgRequest.builder()
    .fromAccount("user1")
    .toAccount("user2")
    .msgBody(Collections.singletonList(new TIMMsgElement()))
    .offlinePushInfo(pushInfo)
    .build();

消息回执

消息回执功能允许发送方确认消息是否被接收方成功接收。腾讯云 IM SDK 提供了以下两类回执:

  1. 单聊消息回执:通过 C2cMsgReadReceiptRequest 实现。
  2. 群聊消息回执:通过 GroupMsgReceiptRequestGetGroupMsgReceiptRequest 实现。
单聊消息回执

单聊消息回执用于标记消息已被对方阅读。

示例代码
C2cMsgInfoItem msgInfo = C2cMsgInfoItem.builder()
    .fromAccount("user1")
    .toAccount("user2")
    .msgKey("msg123")
    .build();

C2cMsgReadReceiptRequest request = C2cMsgReadReceiptRequest.builder()
    .operatorAccount("user1")
    .peerAccount("user2")
    .c2cMsgInfoItemList(Collections.singletonList(msgInfo))
    .build();
群聊消息回执

群聊消息回执用于获取群成员对消息的阅读状态。

示例代码
MsgSeqItem msgSeq = MsgSeqItem.builder()
    .msgSeq(12345L)
    .build();

GroupMsgReceiptRequest request = GroupMsgReceiptRequest.builder()
    .groupId("group1")
    .fromAccount("user1")
    .msgSeqList(Collections.singletonList(msgSeq))
    .build();

状态查询

通过 GetGroupMsgReceiptDetailRequest 可以查询群消息的详细回执状态,包括已读和未读成员列表。

示例代码
GetGroupMsgReceiptDetailRequest request = GetGroupMsgReceiptDetailRequest.builder()
    .groupId("group1")
    .msgSeq(12345L)
    .filter(0) // 0 表示查询所有成员
    .cursor("") // 分页游标
    .count(100) // 每页数量
    .build();

流程图

以下是一个消息回执的流程示例:

mermaid

通过以上功能,开发者可以实现高效的消息推送和状态追踪,提升用户体验。

内容审核与敏感词过滤

腾讯云 IM 服务端 SDK 提供了强大的内容审核与敏感词过滤功能,帮助开发者高效管理聊天内容,确保平台内容的合规性和安全性。本节将详细介绍 SDK 中的相关功能及其使用方法。

内容审核功能

内容审核功能允许开发者对聊天内容进行实时或批量审核,支持多种审核类型(如文本、图片、视频等)。以下是核心功能点:

  1. 单条内容审核
    通过 ContentModerationRequest 类,开发者可以提交单条内容进行审核。审核结果将返回内容的合规性状态。

    ContentModerationRequest request = new ContentModerationRequest(
        "text", // 审核类型
        "这是一条测试内容", // 待审核内容
        "text" // 内容类型
    );
    ContentModerationResult result = client.audit.contentModeration(request);
    
  2. 批量内容审核
    通过 BatchContentModerationRequest 类,开发者可以批量提交多条内容进行审核,提高审核效率。

    List<AuditContentItem> contents = Arrays.asList(
        new AuditContentItem("text1", "这是一条测试内容1"),
        new AuditContentItem("text2", "这是一条测试内容2")
    );
    BatchContentModerationRequest request = new BatchContentModerationRequest("text", contents);
    BatchContentModerationResult result = client.audit.batchContentModeration(request);
    

敏感词管理

SDK 提供了本地和云端敏感词管理功能,支持敏感词的添加、删除和查询。

  1. 本地敏感词管理
    开发者可以通过 AddLocalAuditKeywordsRequestDeleteLocalAuditKeywordsRequest 类管理本地敏感词库。

    // 添加本地敏感词
    List<LocalAuditWord> words = Arrays.asList(new LocalAuditWord("敏感词1"), new LocalAuditWord("敏感词2"));
    AddLocalAuditKeywordsRequest addRequest = new AddLocalAuditKeywordsRequest(1400554812, words);
    client.audit.addLocalAuditKeywords(addRequest);
    
    // 删除本地敏感词
    DeleteLocalAuditKeywordsRequest deleteRequest = new DeleteLocalAuditKeywordsRequest(1400554812, words);
    client.audit.deleteLocalAuditKeywords(deleteRequest);
    
  2. 云端敏感词管理
    通过 AddCloudAuditKeywordsRequestGetCloudAuditKeyWordsIdsRequest 类,开发者可以管理云端敏感词库。

    // 添加云端敏感词
    List<UserKeyword> keywords = Arrays.asList(new UserKeyword("云端敏感词1"), new UserKeyword("云端敏感词2"));
    AddCloudAuditKeywordsRequest cloudAddRequest = new AddCloudAuditKeywordsRequest(1400554812, "libId", keywords);
    client.audit.addCloudAuditKeywords(cloudAddRequest);
    
    // 查询云端敏感词
    GetCloudAuditKeyWordsIdsRequest cloudQueryRequest = new GetCloudAuditKeyWordsIdsRequest(1400554812, 0, 10);
    GetCloudAuditKeywordsIdsResult cloudQueryResult = client.audit.getCloudAuditKeywordsIds(cloudQueryRequest);
    

审核结果处理

审核结果包含内容的合规性标签和状态,开发者可以根据结果采取相应的处理措施(如拦截、警告等)。

if (result.getLabel() == ContentModerationLabel.VIOLATION) {
    // 内容违规,执行拦截逻辑
    System.out.println("内容违规,已拦截");
} else {
    // 内容合规,放行
    System.out.println("内容合规");
}

流程图示例

以下是一个内容审核的流程图示例:

mermaid

通过以上功能,开发者可以轻松实现内容审核与敏感词过滤,确保平台内容的安全性和合规性。

多设备登录与同步

腾讯云 IM 服务端 SDK 提供了强大的多设备登录与消息同步功能,确保用户在不同设备上能够无缝切换并保持消息的一致性。以下将详细介绍这一功能的核心实现和使用方法。

多设备登录机制

腾讯云 IM 支持用户同时在多个设备上登录同一账号,并通过以下方式确保多设备间的协同工作:

  1. 设备标识管理:每个设备在登录时会生成唯一的设备标识,用于区分不同设备的会话。
  2. 会话状态同步:服务端会实时同步各设备的在线状态和消息接收情况。

mermaid

消息同步策略

通过 SyncOtherMachine 参数,开发者可以灵活控制消息的同步行为。该参数支持以下选项:

描述
1消息同步到其他设备
2消息不同步到其他设备
3消息同步到其他设备(但不推送通知)
代码示例

以下是一个发送消息并控制同步行为的示例:

SendMsgRequest request = SendMsgRequest.builder()
    .fromAccount("user1")
    .toAccount("user2")
    .syncOtherMachine(SyncOtherMachine.SYNC) // 同步到其他设备
    .msgBody(Collections.singletonList(
        new TIMMsgElement.TextElement("Hello, this is a test message.")
    ))
    .build();

try {
    SendMsgResult result = client.message.sendMsg(request);
    System.out.println("消息发送成功: " + result);
} catch (IOException e) {
    System.err.println("消息发送失败: " + e.getMessage());
}

多设备消息一致性

为确保消息在多设备间的一致性,腾讯云 IM 实现了以下机制:

  1. 消息序列号:每条消息分配唯一的序列号,确保消息顺序一致。
  2. 离线消息拉取:设备上线后自动拉取未同步的消息。
  3. 已读回执:通过已读回执同步消息的阅读状态。

mermaid

高级配置

开发者可以通过 ClientConfiguration 类进一步配置多设备同步行为,例如设置消息同步的超时时间和重试策略:

ClientConfiguration config = ClientConfiguration.builder()
    .syncOtherMachineTimeout(5000) // 同步超时时间(毫秒)
    .enableMessageSyncRetry(true)  // 启用同步重试
    .build();

ImClient client = ImClient.getInstance(appId, userId, key, config);

通过以上功能,腾讯云 IM 服务端 SDK 为多设备场景提供了完善的解决方案,确保用户体验的一致性和可靠性。

自定义扩展与回调处理

腾讯云 IM 服务端 SDK 提供了丰富的回调机制,允许开发者通过自定义扩展实现业务逻辑的灵活控制。回调处理是 SDK 的核心功能之一,支持在特定事件发生时触发自定义逻辑,例如消息发送前、群组创建后等场景。以下将详细介绍回调机制的设计与实现。

回调机制概述

回调机制通过 CallbackCommand 标识不同的事件类型,开发者可以根据需求实现对应的回调逻辑。每个回调事件都对应一个特定的 CallbackCommand 值,例如:

  • BeforeSendMsgCallback:消息发送前回调
  • AfterSendGroupMsgCallback:群组消息发送后回调
  • AfterGroupOwnerChangeCallback:群主变更后回调

回调事件通过 HTTP 请求发送到开发者配置的服务器地址,开发者需实现相应的接口来处理这些回调请求。

回调数据结构

所有回调事件均继承自统一的回调基类,包含以下核心字段:

public class BaseCallback {
    @JsonProperty("CallbackCommand")
    private String callbackCommand;

    // 其他公共字段...
}

其中:

  • CallbackCommand:标识回调事件的类型。
  • 其他字段根据具体事件类型动态扩展。

回调事件示例

以下是一个典型的回调事件实现(以 BeforeSendMsgCallback 为例):

public class BeforeSendMsgCallback extends BaseCallback {
    @JsonProperty("From_Account")
    private String fromAccount;

    @JsonProperty("To_Account")
    private String toAccount;

    @JsonProperty("MsgBody")
    private List<TIMMsgElement> msgBody;

    // Getter 和 Setter 方法...
}

回调处理流程

  1. 配置回调地址
    在腾讯云 IM 控制台中配置回调地址,确保 SDK 能将事件推送到指定服务器。

  2. 实现回调接口
    开发者需实现一个 HTTP 服务,接收并处理回调请求。例如:

    @RestController
    @RequestMapping("/callback")
    public class CallbackController {
        @PostMapping("/handle")
        public ResponseEntity<String> handleCallback(@RequestBody BaseCallback callback) {
            switch (callback.getCallbackCommand()) {
                case "BeforeSendMsg":
                    // 处理消息发送前逻辑
                    break;
                case "AfterGroupCreated":
                    // 处理群组创建后逻辑
                    break;
                default:
                    return ResponseEntity.badRequest().body("Unsupported callback type");
            }
            return ResponseEntity.ok("Success");
        }
    }
    
  3. 返回处理结果
    回调接口需返回 JSON 格式的响应,SDK 会根据响应决定后续行为。例如:

    {
        "ActionStatus": "OK",
        "ErrorCode": 0,
        "ErrorInfo": ""
    }
    
    
    
    
    

# 总结 腾讯云IM服务端SDK通过离线推送、消息回执、内容审核、多设备同步和自定义回调等功能,为开发者提供了全面的消息管理解决方案,确保消息的及时性、安全性和一致性,同时支持灵活的扩展以满足不同业务场景需求。

【免费下载链接】qcloud-im-server-sdk-java ☁ Tencent Cloud IM Server SDK in Java | 腾讯云 IM 服务端 SDK Java 版 【免费下载链接】qcloud-im-server-sdk-java 项目地址: https://gitcode.com/doocs/qcloud-im-server-sdk-java

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值