直播群是一种功能强大的群聊工具。相比于普通群聊,其最大成员上限可达 10000 人。直播群成员之间没有固定的强关系,成员可以随时加入或离开。此外,直播群供了更加丰富的功能和工具,帮助用户更好地管理和互动。本文档介绍如何使用 IM SDK 实现直播群功能。你也可以通过阅读代码,了解直播群最佳实践。
参看构建基础应用集成使用 IM SDK,版本 v1.1.0 以上。
直播群首先需要创建才能正常使用,创建直播群时可以使用 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) {
}
});
javaBIMGroupInfo *groupInfo = [[BIMGroupInfo alloc] init];
groupInfo.name = name;
groupInfo.desc = desc;
groupInfo.avatarURL = avatarURL;
groupInfo.notice = notice;
[[BIMClient sharedInstance] createLiveGroup:groupInfo completion:^(BIMConversation * _Nonnull conversation, BIMError * _Nullable error) {
}];
objectivec当前客户端仅支持加入一个直播群,如需加入其他直播群需先退出前一个加入的直播群,加入直播群时需同时设置当前群的消息监听,事件监听和会话信息变更监听。直播群进入成功后监听生效,仅接受当前直播群消息,事件,会话变更回调,退出后所有监听失效。
/**
* @param conversationShortId 直播群shorId。
* @param messageListener 直播群首发消息回调。
* @param memberEventListener 直播群成员事件回调监听方。
* @param conversationListListener 直播群会话更新回调。
* @param callback 结果回调,参看 BIMResultCallback{@link #BIMResultCallback}, BIMConversation{@link #BIMConversation}。
* @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) {
}
});
java[[BIMClient sharedInstance] joinLiveGroup:conversationID completion:^(BIMConversation * _Nonnull conversation, BIMError * _Nullable error) {
}];
objectivec离开直播群后,所有直播群监听将不会收到此直播群的回调,如需切换直播群可先退出当前直播群,再加入其他直播群。
BIMClient.getInstance().getService(BIMLiveExpandService.class).leaveLiveGroup(conversationShortId, new BIMSimpleCallback() {
@Override
public void onSuccess() {
}
@Override
public void onFailed(BIMErrorCode code) {
}
});
java[[BIMClient sharedInstance] leaveLiveGroup:conversationShortId completion:^(BIMConversation * _Nonnull conversation, BIMError * _Nullable error) {
}];
objectivec直播群支持发送文本消息,自定义消息,发送文消息示例代码如下。
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) {
}
});
java[[BIMClient sharedInstance] sendLiveGroupMessage:message conversation:conversationID completion:^(BIMMessage * _Nullable message, BIMError * _Nullable error) {
}];
objectivec直播群接收到的消息通过加入直播群设置的消息监听 onReceiveMessage 返回。
/**
* @type callback
* @brief 消息监听方。
*/
public interface BIMLiveMessageListener {
/**
* @type callback
* @brief 收到新消息。
* @param message 消息体,参看 BIMMessage{@link #BIMMessage}。
*/
void onReceiveMessage(BIMMessage message);
/**
* @type callback
* @brief 发送消息入库完成。
* @param message 消息体,参看 BIMMessage{@link #BIMMessage}。
*/
void onSendMessage(BIMMessage message);
/**
* @type callback
* @brief 收到的消息被删除。
* @param message 消息体,参看 BIMMessage{@link #BIMMessage}。
*/
void onDeleteMessage(BIMMessage message);
/**
* @type callback
* @brief 收到的消息被修改。(内容+扩展)
* @param message 消息体,参看 BIMMessage{@link #BIMMessage}。
*/
void onUpdateMessage(BIMMessage message);
}
java[[BIMClient sharedInstance] addMessageListener:<#(nonnull id<BIMLiveMessageListener>)#>];
/// 收到新消息
- (void)onReceiveMessage:(BIMMessage *)message {
}
/// 收到消息被删除
- (void)onDeleteMessage:(NSString *)msgID {
}
/// 消息被修改(内容+扩展)
- (void)onUpdateMessage:(BIMMessage *)message {
}
/// 发送消息请求前调用。
- (void)onSendMessage:(BIMMessage *)message {
}
objectivec直播群还支持如下功能,详情参看 API 文档。
获取在线成员列表
获取直播群列表
设置直播群进群黑名单
设置直播群禁言
设置直播群信息
转让群主
直播群消息携带额外数据
解散直播群
踢出在线群成员