Flutter

频道管理

更新时间: 2024/11/21 17:18:38

NIM SDK 的QChatChannelService类提供管理频道的方法,支持创建、修改、查询和删除频道。

前提条件

使用限制

单个服务器的频道数量上限默认为 100 个。

若需要扩展上限,可在控制台配置圈组子功能项(单 server 可创建的 channel 数),具体请参考开通和配置圈组功能

实现方法

创建频道

调用createChannel方法在某个服务器下创建频道。

示例代码如下:

//serverId 为之前创建好的Server 的Id
    var paramChannel = QChatCreateChannelParam(serverId: serverId, name: "ChannelName", type: QChatChannelType.messageChannel,
    viewMode: QChatChannelMode.public);
    NimCore.instance.qChatChannelService.createChannel(paramChannel).then((value){
      if(value.isSuccess){
        //todo save channelId
      }else{

      }
    });

修改频道

调用updateChannel方法修改某个频道的信息,如频道名称、频道主题、对游客是否可见和自定义扩展字段等。

示例代码如下:

var paramUpdate = QChatUpdateChannelParam(channelId: channelId,name: "更新后的名字");
    NimCore.instance.qChatChannelService.updateChannel(paramUpdate).then((value){
      if(value.isSuccess){
        //todo  success
      }else{

      }
    });

删除频道

调用deleteChannel方法可将某个频道删除。

示例代码如下:

 var paramDelete = QChatDeleteChannelParam(channelId);
    NimCore.instance.qChatChannelService.deleteChannel(paramDelete).then((value) {
      if(value.isSuccess){
        //todo  success
      }else{

      }
    });

频道查询

分页查询频道列表

用户进入服务器后,如果想要获取当前服务器已有(且对该用户可见)的频道,可调用getChannelsByPage方法分页查询频道列表。

示例代码如下:

var paramChannels = QChatGetChannelsByPageParam(serverId: serverId, timeTag: timeTag, limit: 100);
    NimCore.instance.qChatChannelService.getChannelsByPage(paramChannels).then((value){
      if(value.isSuccess){
        //todo  success
      }else{

      }
    });

根据频道 ID 查询频道列表

用户进入服务器后,如果想要检索当前服务器的频道,可调用getChannels方法根据频道的 ID 进行检索。

示例代码如下:

//channelIds 是查询的channel Id 列表
    var paramChannels = QChatGetChannelsParam(channelIds);
    NimCore.instance.qChatChannelService.getChannels(paramChannels).then((value){
        if(value.isSuccess){
          //todo  success
        }else{

        }
    });

分页查询频道成员

用户进入频道后,如果想要检索当前频道的成员有哪些(换而言之,当前频道对哪些用户可见),可调用getChannelMembersByPage方法可分页查询频道成员列表。

示例代码如下:

var paramChannelMembers = QChatGetChannelMembersByPageParam(serverId: serverId, channelId: channelId, timeTag: timeTag);
    NimCore.instance.qChatChannelService.getChannelMembersByPage(paramChannelMembers).then((value){
      if(value.isSuccess){
        //todo  success
      }else{

      }
    });

查询频道未读信息

用户进入服务器后,如果想获取频道的未读信息(包括未读数和未读状态),可调用getChannelUnreadInfos方法进行查询。

示例代码如下:

var channelIdInfos = [
      QChatChannelIdInfo(serverId: serverId, channelId: channelId)
    ];
    var paramUnread = QChatGetChannelUnreadInfosParam(channelIdInfos);
    NimCore.instance.qChatChannelService.getChannelUnreadInfos(paramUnread).then((value){
      if(value.isSuccess){
        //todo  success
      }else{

      }
    });

频道未读数管理的更多相关逻辑介绍,请参见频道未读数管理

相关参考

相关系统通知

圈组系统通知的类型在QChatSystemNotificationType枚举中定义,与频道管理相关的内置系统通知类型如下:

枚举值 说明
channel_create 创建频道
channel_remove 删除频道
channel_update 修改频道信息

更多圈组系统通知相关说明,请参见圈组系统通知相关

API 调用时序

sequenceDiagram



note over NIM SDK: 初始化 SDK 并登录 IM
note over NIM SDK: 注册监听并登录圈组
频道创建者 ->> NIM SDK: 监听圈组系统通知<br>(onReceiveSystemNotification)
普通频道成员 ->> NIM SDK: 监听圈组系统通知<br>(onReceiveSystemNotification)
频道创建者 ->> NIM SDK: 登录圈组<br>(login)
普通频道成员 ->> NIM SDK: 登录圈组<br>(login)
note over NIM SDK: 双方进入同一个服务器
note over NIM SDK: 创建频道
频道创建者 ->> NIM SDK: 创建频道<br>(createChannel)
note left of 频道创建者: 创建频道需拥有manageChannel权限
NIM SDK ->> 频道创建者: 频道创建成功的通知<br>(channel_create)
note over NIM SDK: 普通频道成员订阅频道
普通频道成员 ->> NIM SDK: 订阅频道<br>(subscribeChannel)
note left of 普通频道成员: 普通成员需订阅频道且在线<br>才能收到频道相关系统通知
note over NIM SDK: 修改频道
频道创建者 ->> NIM SDK: 修改频道<br>(updateChannel)
note left of 频道创建者: 修改频道需要拥有manageChannel权限
NIM SDK ->> 频道创建者: 频道修改成功的通知<br>(channel_update)
NIM SDK ->> 普通频道成员: 频道修改成功的通知<br>(channel_update)
note left of 普通频道成员: 普通成员需订阅频道且在线<br>才能收到该通知
note over NIM SDK: 删除频道
频道创建者 ->> NIM SDK: 删除频道<br>(deleteChannel)
note left of 频道创建者: 删除频道需要拥有manageChannel权限
NIM SDK ->> 频道创建者: 频道删除成功的通知<br>(channel_remove)
NIM SDK ->> 普通频道成员: 频道修改成功的通知<br>(channel_remove)
note left of 普通频道成员: 普通成员需订阅频道且在线<br>才能收到该通知

上图中:

此文档是否对你有帮助?
有帮助
去反馈
  • 前提条件
  • 使用限制
  • 实现方法
  • 创建频道
  • 修改频道
  • 删除频道
  • 频道查询
  • 分页查询频道列表
  • 根据频道 ID 查询频道列表
  • 分页查询频道成员
  • 查询频道未读信息
  • 相关参考
  • 相关系统通知
  • API 调用时序