最近更新时间:2024.03.11 19:19:42
首次发布时间:2023.05.25 18:20:26
直播群是一种功能强大的群聊工具。相比于普通群聊,其最大成员无上限。直播群成员之间没有固定的强关系,成员可以随时加入或离开。此外,直播群供了更加丰富的功能和工具,帮助用户更好地管理和互动。本文档介绍如何使用 IM SDK 实现直播群功能。你也可以通过阅读代码,了解直播群最佳实践。
API 接口详细文档参看 Android API 参考、iOS API 参考、Web API 参考、微信小程序 API 参考。
参看构建基础应用集成使用 IM SDK,版本 v1.1.0 以上。
Web 端需要在创建实例时传入 LivePlugin
。
import { BytedIM, LivePlugin } from '@volcengine/im-web-sdk'; const bytedIMInstance = new BytedIM(options, [LivePlugin]);
直播群首先需要创建才能正常使用,创建直播群时可以使用 BIMGroupInfo 自定义群名称,群简介,群头像和群公告,创建成功后服务端会保存此直播群信息,客户端不会持久化会话信息。
BIMGroupInfo groupInfo = new BIMGroupInfo.BIMGroupInfoBuilder() .name(name) .description(des) .avatarUrl(url) .notice(notice) .build(); BIMClient.getInstance().getService(BIMLiveExpandService.class).createLiveGroup(groupInfo, new BIMResultCallback<BIMConversation>() { @Override public void onSuccess(BIMConversation conversation) { } @Override public void onFailed(BIMErrorCode code) { } });
当前客户端仅支持加入一个直播群,如需加入其他直播群需先退出前一个加入的直播群,加入直播群时需同时设置当前群的消息监听,事件监听和会话信息变更监听。直播群进入成功后监听生效,仅接受当前直播群消息、事件、会话变更回调,退出后所有监听失效。
/** * @param conversationShortId 直播群 shortId。 * @param messageListener 直播群首发消息回调。 * @param memberEventListener 直播群成员事件回调监听方。 * @param conversationListListener 直播群会话更新回调。 * @param callback 结果回调。 * @brief 加入直播群,加入直播群后可以收发当前群的信息,直播群不提供本地存储。 */ BIMClient.getInstance().getService(BIMLiveExpandService.class).joinLiveGroup(conversationShortId, messageListener, memberEventListener, conversationListListener, new BIMResultCallback<BIMConversation>() { @Override public void onSuccess(BIMConversation conversation) { } public void onFailed(BIMErrorCode code) { } });
离开直播群后,所有直播群监听将不会收到此直播群的回调,如需切换直播群可先退出当前直播群,再加入其他直播群。
BIMClient.getInstance().getService(BIMLiveExpandService.class).leaveLiveGroup(conversationShortId, new BIMSimpleCallback() { @Override public void onSuccess() { } @Override public void onFailed(BIMErrorCode code) { } });
直播群发送文本消息示例代码如下。
BIMMessage msg = BIMClient.getInstance().createTextMessage(text); BIMClient.getInstance().getService(BIMLiveExpandService.class).sendLiveGroupMessage(msg, bimConversation, new BIMSendCallback() { @Override public void onSuccess(BIMMessage bimMessage) { } @Override public void onError(BIMMessage bimMessage, BIMErrorCode code) { } });
直播群接收到的消息通过加入直播群设置的消息监听 onReceiveMessage 返回。
建议在加入直播群前(例如 SDK 实例 init 前)执行订阅操作。
说明
与普通群不同,直播群 SDK 内本身仅回调事件,不会存储消息,请在收到回调后自行存储到视图中。
/** * @type callback * @brief 消息监听方。 */ public interface BIMLiveMessageListener { /** * @type callback * @brief 收到新消息。 * @param message 消息体。 */ void onReceiveMessage(BIMMessage message); /** * @type callback * @brief 发送消息入库完成。 * @param message 消息体。 */ void onSendMessage(BIMMessage message); /** * @type callback * @brief 收到的消息被删除。 * @param message 消息体。 */ void onDeleteMessage(BIMMessage message); /** * @type callback * @brief 收到的消息被修改。(内容+扩展) * @param message 消息体。 */ void onUpdateMessage(BIMMessage message); }
直播群可以通过设置消息优先级保证重要消息到达率,服务端消息频控如下表所示,超出频控限制而被拦截的消息不会返回错误,不会下推到客户端。
消息优先级 | BIMMessagePriority | 消息频控 |
---|---|---|
低 | LOW | 共用频控阈值为 30 条/秒 |
中 | NORMAL | |
高 | HIGH | 10 条/秒 |
/** * @param message 发送的消息 * @param conversation 会话信息 * @param priority 设置消息优先级 * @param callback 结果回调。 * @brief 发送直播群消息。 */ public void sendLiveGroupMessage(final BIMMessage message, BIMConversation conversation, BIMMessagePriority priority, final BIMSendCallback callback)
直播群还支持如下功能,API 接口详细文档参看 Android API 参考、iOS API 参考、Web API 参考、微信小程序 API 参考。
获取直播群在线用户列表
获取当前应用下的所有直播群列表
设置直播群进群黑名单
设置直播群禁言
设置直播群信息
转让群主
解散直播群
踢出在线群成员