tencent cloud

文档反馈

Android&iOS&Windows&Mac

最后更新时间:2024-07-05 18:00:24

    功能描述

    在某些场景下,您可能需要对会话进行分组,例如分为 "产品体验"、"需求研发" 等,您可以调用以下接口实现。
    说明
    该功能仅对进阶版客户开放,购买进阶版后可使用。
    该功能仅增强版 SDK 6.5.2803 及以上版本支持。

    效果展示

    使用本功能,您可以在您的 App 中实现如下的会话分组效果:
    
    
    

    接口说明

    新建会话分组

    您可以调用 createConversationGroup (Android / iOS & Mac / Windows) 接口新建会话分组。
    说明
    会话分组最大支持 20 个,超过后创建新的分组会报 51010 错误,不再使用的分组请及时删除。
    属性
    含义
    说明
    groupName
    会话分组名
    长度要大于 0,最大支持 32 bytes,超过后会报 51011 错误
    conversationIDList
    会话 ID 列表
    不能为空
    示例代码如下:
    Android
    iOS & Mac
    Windows
    List<String> conversationIDList = new ArrayList<>();
    conversationIDList.add("c2c_user1");
    V2TIMManager.getConversationManager().createConversationGroup("conversation_group", conversationIDList, new V2TIMValueCallback<List<V2TIMConversationOperationResult>>() {
    @Override
    public void onSuccess(List<V2TIMConversationOperationResult> v2TIMConversationOperationResults) {
    // 创建会话分组成功
    }
    
    @Override
    public void onError(int code, String desc) {
    // 创建会话分组失败
    }
    });
    // 创建会话分组
    [[V2TIMManager sharedInstance] createConversationGroup:@"conversation_group" conversationIDList:@[@"c2c_yahaha"] succ:^(NSArray<V2TIMConversationOperationResult *> *result) {
    // 创建会话分组成功
    } fail:^(int code, NSString *desc) {
    // 创建会话分组失败
    }];
    template <class T>
    class ValueCallback final : public V2TIMValueCallback<T> {
    public:
    using SuccessCallback = std::function<void(const T&)>;
    using ErrorCallback = std::function<void(int, const V2TIMString&)>;
    
    ValueCallback() = default;
    ~ValueCallback() override = default;
    
    void SetCallback(SuccessCallback success_callback, ErrorCallback error_callback) {
    success_callback_ = std::move(success_callback);
    error_callback_ = std::move(error_callback);
    }
    
    void OnSuccess(const T& value) override {
    if (success_callback_) {
    success_callback_(value);
    }
    }
    void OnError(int error_code, const V2TIMString& error_message) override {
    if (error_callback_) {
    error_callback_(error_code, error_message);
    }
    }
    
    private:
    SuccessCallback success_callback_;
    ErrorCallback error_callback_;
    };
    
    V2TIMString groupName = u8"conversation_group";
    V2TIMStringVector conversationIDList;
    conversationIDList.PushBack(u8"c2c_user1");
    
    auto callback = new ValueCallback<V2TIMConversationOperationResultVector>{};
    callback->SetCallback(
    [=](const V2TIMConversationOperationResultVector& conversationOperationResultList) {
    // 创建会话分组成功
    delete callback;
    },
    [=](int error_code, const V2TIMString& error_message) {
    // 创建会话分组失败
    delete callback;
    });
    
    V2TIMManager::GetInstance()->GetConversationManager()->CreateConversationGroup(groupName, conversationIDList,
    callback);

    删除会话分组

    您可以调用 deleteConversationGroup (Android / iOS & Mac / Windows) 接口删除会话分组。
    说明
    如果会话分组不存在,删除对应分组会报 51009 错误。
    示例代码如下:
    Android
    iOS & Mac
    Windows
    V2TIMManager.getConversationManager().deleteConversationGroup("conversation_group", new V2TIMCallback() {
    @Override
    public void onSuccess() {
    // 删除会话分组成功
    }
    
    @Override
    public void onError(int code, String desc) {
    // 删除会话分组失败
    }
    });
    // 删除会话分组
    [[V2TIMManager sharedInstance] deleteConversationGroup:@"conversation_group" succ:^{
    // 删除会话分组成功
    } fail:^(int code, NSString *desc) {
    // 删除会话分组失败
    }];
    class Callback final : public V2TIMCallback {
    public:
    using SuccessCallback = std::function<void()>;
    using ErrorCallback = std::function<void(int, const V2TIMString&)>;
    
    Callback() = default;
    ~Callback() override = default;
    
    void SetCallback(SuccessCallback success_callback, ErrorCallback error_callback) {
    success_callback_ = std::move(success_callback);
    error_callback_ = std::move(error_callback);
    }
    
    void OnSuccess() override {
    if (success_callback_) {
    success_callback_();
    }
    }
    void OnError(int error_code, const V2TIMString& error_message) override {
    if (error_callback_) {
    error_callback_(error_code, error_message);
    }
    }
    
    private:
    SuccessCallback success_callback_;
    ErrorCallback error_callback_;
    };
    
    V2TIMString groupName = u8"conversation_group";
    
    auto callback = new Callback;
    callback->SetCallback(
    [=]() {
    // 删除会话分组成功
    delete callback;
    },
    [=](int error_code, const V2TIMString& error_message) {
    // 删除会话分组失败
    delete callback;
    });
    
    V2TIMManager::GetInstance()->GetConversationManager()->DeleteConversationGroup(groupName, callback);

    重命名会话分组

    您可以调用 renameConversationGroup (Android / iOS & Mac / Windows) 接口重命名会话分组。
    示例代码如下:
    Android
    iOS & Mac
    Windows
    V2TIMManager.getConversationManager().renameConversationGroup("conversation_group", "conversation_group_rename", new V2TIMCallback() {
    @Override
    public void onSuccess() {
    // 重命名会话分组成功
    }
    
    @Override
    public void onError(int code, String desc) {
    // 重命名会话分组失败
    }
    });
    // 重命名会话分组
    [[V2TIMManager sharedInstance] renameConversationGroup:@"conversation_group" newName:@"conversation_group_rename" succ:^{
    // 重命名会话分组成功
    } fail:^(int code, NSString *desc) {
    // 重命名会话分组失败
    }];
    class Callback final : public V2TIMCallback {
    public:
    using SuccessCallback = std::function<void()>;
    using ErrorCallback = std::function<void(int, const V2TIMString&)>;
    
    Callback() = default;
    ~Callback() override = default;
    
    void SetCallback(SuccessCallback success_callback, ErrorCallback error_callback) {
    success_callback_ = std::move(success_callback);
    error_callback_ = std::move(error_callback);
    }
    
    void OnSuccess() override {
    if (success_callback_) {
    success_callback_();
    }
    }
    void OnError(int error_code, const V2TIMString& error_message) override {
    if (error_callback_) {
    error_callback_(error_code, error_message);
    }
    }
    
    private:
    SuccessCallback success_callback_;
    ErrorCallback error_callback_;
    };
    
    V2TIMString oldName = u8"conversation_group";
    V2TIMString newName = u8"conversation_group_rename";
    
    auto callback = new Callback;
    callback->SetCallback(
    [=]() {
    // 重命名会话分组成功
    delete callback;
    },
    [=](int error_code, const V2TIMString& error_message) {
    // 重命名会话分组失败
    delete callback;
    });
    
    V2TIMManager::GetInstance()->GetConversationManager()->RenameConversationGroup(oldName, newName, callback);

    获取会话分组列表

    您可以调用 getConversationGroupList (Android / iOS & Mac / Windows) 接口获取会话分组列表。
    示例代码如下:
    Android
    iOS & Mac
    Windows
    V2TIMManager.getConversationManager().getConversationGroupList(new V2TIMValueCallback<List<String>>() {
    @Override
    public void onSuccess(List<String> strings) {
    // 获取分组列表成功
    }
    
    @Override
    public void onError(int code, String desc) {
    // 获取分组列表失败
    }
    });
    // 获取会话分组列表
    [[V2TIMManager sharedInstance] getConversationGroupList:^(NSArray<NSString *> *groupList) {
    // 获取分组列表成功
    } fail:^(int code, NSString *desc) {
    // 获取分组列表失败
    }];
    template <class T>
    class ValueCallback final : public V2TIMValueCallback<T> {
    public:
    using SuccessCallback = std::function<void(const T&)>;
    using ErrorCallback = std::function<void(int, const V2TIMString&)>;
    
    ValueCallback() = default;
    ~ValueCallback() override = default;
    
    void SetCallback(SuccessCallback success_callback, ErrorCallback error_callback) {
    success_callback_ = std::move(success_callback);
    error_callback_ = std::move(error_callback);
    }
    
    void OnSuccess(const T& value) override {
    if (success_callback_) {
    success_callback_(value);
    }
    }
    void OnError(int error_code, const V2TIMString& error_message) override {
    if (error_callback_) {
    error_callback_(error_code, error_message);
    }
    }
    
    private:
    SuccessCallback success_callback_;
    ErrorCallback error_callback_;
    };
    
    auto callback = new ValueCallback<V2TIMStringVector>{};
    callback->SetCallback(
    [=](const V2TIMStringVector& stringList) {
    // 获取分组列表成功
    delete callback;
    },
    [=](int error_code, const V2TIMString& error_message) {
    // 获取分组列表失败
    delete callback;
    });
    
    V2TIMManager::GetInstance()->GetConversationManager()->GetConversationGroupList(callback);
    如果需要获取分组下面的会话列表,可以调用 getConversationListByFilter (Android / iOS & Mac / Windows) 接口获取。
    示例代码如下:
    Android
    iOS & Mac
    Windows
    V2TIMConversationListFilter filter = new V2TIMConversationListFilter();
    filter.setGroupName("conversation_group");
    filter.setCount(50);
    filter.setNextSeq(0);
    V2TIMManager.getConversationManager().getConversationListByFilter(filter, new V2TIMValueCallback<V2TIMConversationResult>() {
    @Override
    public void onSuccess(V2TIMConversationResult v2TIMConversationResult) {
    // 获取会话列表成功
    }
    
    @Override
    public void onError(int code, String desc) {
    // 获取会话列表失败
    }
    });
    // 拉取指定标记会话
    V2TIMConversationListFilter *filter = [[V2TIMConversationListFilter alloc] init];
    filter.groupName = @"conversation_group";
    filter.count = 50;
    filter.nextSeq = 0;
    [[V2TIMManager sharedInstance] getConversationListByFilter:filter succ:^(NSArray<V2TIMConversation *> *list, uint64_t nextSeq, BOOL isFinished) {
    // 获取会话列表成功,list 为会话列表
    } fail:^(int code, NSString *desc) {
    // 获取会话列表失败
    }];
    template <class T>
    class ValueCallback final : public V2TIMValueCallback<T> {
    public:
    using SuccessCallback = std::function<void(const T&)>;
    using ErrorCallback = std::function<void(int, const V2TIMString&)>;
    
    ValueCallback() = default;
    ~ValueCallback() override = default;
    
    void SetCallback(SuccessCallback success_callback, ErrorCallback error_callback) {
    success_callback_ = std::move(success_callback);
    error_callback_ = std::move(error_callback);
    }
    
    void OnSuccess(const T& value) override {
    if (success_callback_) {
    success_callback_(value);
    }
    }
    void OnError(int error_code, const V2TIMString& error_message) override {
    if (error_callback_) {
    error_callback_(error_code, error_message);
    }
    }
    
    private:
    SuccessCallback success_callback_;
    ErrorCallback error_callback_;
    };
    
    V2TIMConversationListFilter filter;
    filter.nextSeq = 0;
    filter.count = 50;
    filter.groupName = u8"conversation_group";
    
    auto callback = new ValueCallback<V2TIMConversationResult>{};
    callback->SetCallback(
    [=](const V2TIMConversationResult& conversationResult) {
    // 获取会话列表成功
    delete callback;
    },
    [=](int error_code, const V2TIMString& error_message) {
    // 获取会话列表失败
    delete callback;
    });
    
    V2TIMManager::GetInstance()->GetConversationManager()->GetConversationListByFilter(filter, callback);

    添加会话到一个分组

    当分组创建成功后,您可以调用 addConversationsToGroup (Android / iOS & Mac / Windows) 接口添加一个新会话到分组。
    示例代码如下:
    Android
    iOS & Mac
    Windows
    List<String> conversationIDList = new ArrayList<>();
    conversationIDList.add("c2c_user2");
    V2TIMManager.getConversationManager().addConversationsToGroup("conversation_group", conversationIDList, new V2TIMValueCallback<List<V2TIMConversationOperationResult>>() {
    @Override
    public void onSuccess(List<V2TIMConversationOperationResult> v2TIMConversationOperationResults) {
    // 添加会话到分组成功
    }
    
    @Override
    public void onError(int code, String desc) {
    // 添加会话到分组失败
    }
    });
    // 添加会话到一个分组
    [[V2TIMManager sharedInstance] addConversationsToGroup:@"conversation_group" conversationIDList:@[@"c2c_yahaha"] succ:^(NSArray<V2TIMConversationOperationResult *> *result) {
    // 添加会话到分组成功
    } fail:^(int code, NSString *desc) {
    // 添加会话到分组失败
    }];
    template <class T>
    class ValueCallback final : public V2TIMValueCallback<T> {
    public:
    using SuccessCallback = std::function<void(const T&)>;
    using ErrorCallback = std::function<void(int, const V2TIMString&)>;
    
    ValueCallback() = default;
    ~ValueCallback() override = default;
    
    void SetCallback(SuccessCallback success_callback, ErrorCallback error_callback) {
    success_callback_ = std::move(success_callback);
    error_callback_ = std::move(error_callback);
    }
    
    void OnSuccess(const T& value) override {
    if (success_callback_) {
    success_callback_(value);
    }
    }
    void OnError(int error_code, const V2TIMString& error_message) override {
    if (error_callback_) {
    error_callback_(error_code, error_message);
    }
    }
    
    private:
    SuccessCallback success_callback_;
    ErrorCallback error_callback_;
    };
    
    V2TIMString groupName = u8"conversation_group";
    V2TIMStringVector conversationIDList;
    conversationIDList.PushBack(u8"c2c_user1");
    
    auto callback = new ValueCallback<V2TIMConversationOperationResultVector>{};
    callback->SetCallback(
    [=](const V2TIMConversationOperationResultVector& conversationOperationResultList) {
    // 添加会话到分组成功
    delete callback;
    },
    [=](int error_code, const V2TIMString& error_message) {
    // 添加会话到分组失败
    delete callback;
    });
    
    V2TIMManager::GetInstance()->GetConversationManager()->AddConversationsToGroup(groupName, conversationIDList,
    callback);

    从分组中删除某会话

    您可以调用 deleteConversationsFromGroup (Android / iOS & Mac / Windows) 从分组中删除某会话。
    示例代码如下:
    Android
    iOS & Mac
    Windows
    List<String> conversationIDList = new ArrayList<>();
    conversationIDList.add("c2c_user2");
    V2TIMManager.getConversationManager().deleteConversationsFromGroup("conversation_group", conversationIDList, new V2TIMValueCallback<List<V2TIMConversationOperationResult>>() {
    @Override
    public void onSuccess(List<V2TIMConversationOperationResult> v2TIMConversationOperationResults) {
    // 从分组删除会话成功
    }
    
    @Override
    public void onError(int code, String desc) {
    // 从分组删除会话失败
    }
    });
    // 从分组中删除某会话
    [[V2TIMManager sharedInstance] deleteConversationsFromGroup:@"conversation_group" conversationIDList:@[@"c2c_yahaha"] succ:^(NSArray<V2TIMConversationOperationResult *> *result) {
    // 从分组删除会话成功
    } fail:^(int code, NSString *desc) {
    // 从分组删除会话失败
    }];
    template <class T>
    class ValueCallback final : public V2TIMValueCallback<T> {
    public:
    using SuccessCallback = std::function<void(const T&)>;
    using ErrorCallback = std::function<void(int, const V2TIMString&)>;
    
    ValueCallback() = default;
    ~ValueCallback() override = default;
    
    void SetCallback(SuccessCallback success_callback, ErrorCallback error_callback) {
    success_callback_ = std::move(success_callback);
    error_callback_ = std::move(error_callback);
    }
    
    void OnSuccess(const T& value) override {
    if (success_callback_) {
    success_callback_(value);
    }
    }
    void OnError(int error_code, const V2TIMString& error_message) override {
    if (error_callback_) {
    error_callback_(error_code, error_message);
    }
    }
    
    private:
    SuccessCallback success_callback_;
    ErrorCallback error_callback_;
    };
    
    V2TIMString groupName = u8"conversation_group";
    V2TIMStringVector conversationIDList;
    conversationIDList.PushBack(u8"c2c_user1");
    
    auto callback = new ValueCallback<V2TIMConversationOperationResultVector>{};
    callback->SetCallback(
    [=](const V2TIMConversationOperationResultVector& conversationOperationResultList) {
    // 从分组删除会话成功
    delete callback;
    },
    [=](int error_code, const V2TIMString& error_message) {
    // 从分组删除会话失败
    delete callback;
    });
    
    V2TIMManager::GetInstance()->GetConversationManager()->DeleteConversationsFromGroup(
    groupName, conversationIDList, callback);

    监听会话分组变更通知

    您可以调用 addConversationListener (Android / iOS & Mac / Windows) 接口监听会话分组变更通知。
    示例代码如下:
    Android
    iOS & Mac
    Windows
    V2TIMConversationListener listener = new V2TIMConversationListener() {
    @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, int reason) {
    // 收到会话分组删除会话通知
    // reason 表示会话从所在分组删除的原因,其取值有:
    // 当 reason 为 0 时,表示由用户主动调用 deleteConversationsFromGroup 触发
    // 当 reason 为 1 时,表示添加到分组的会话数量超过 1000,最早添加进分组的会话被淘汰
    }
    };
    V2TIMManager.getConversationManager().addConversationListener(listener);
    [[V2TIMManager sharedInstance] addConversationListener:self];
    - (void)onConversationGroupCreated:(NSString *)groupName conversationList:(NSArray<V2TIMConversation *> *)conversationList {
    // 收到会话分组创建通知
    }
    - (void)onConversationGroupDeleted:(NSString *)groupName {
    // 收到会话分组删除通知
    }
    - (void)onConversationGroupNameChanged:(NSString *)oldName newName:(NSString *)newName {
    // 收到会话分组重命名通知
    }
    - (void)onConversationsAddedToGroup:(NSString *)groupName conversationList:(NSArray<V2TIMConversation *> *)conversationList {
    // 收到会话分组添加会话通知
    }
    - (void)onConversationsDeletedFromGroup:(NSString *)groupName conversationList:(NSArray<V2TIMConversation *> *)conversationList reason:(uint32_t)reason {
    // 收到会话分组删除会话通知
    // reason 表示会话从所在分组删除的原因,其取值有:
    // 当 reason 为 0 时,表示由用户主动调用 deleteConversationsFromGroup 触发
    // 当 reason 为 1 时,表示添加到分组的会话数量超过 1000,最早添加进分组的会话被淘汰
    }
    class ConversationListener final : public V2TIMConversationListener {
    public:
    ConversationListener() = default;
    ~ConversationListener() override = default;
    
    void OnConversationGroupCreated(const V2TIMString& groupName,
    const V2TIMConversationVector& conversationList) override {
    // 收到会话分组创建通知
    }
    
    void OnConversationGroupDeleted(const V2TIMString& groupName) override {
    // 收到会话分组删除通知
    }
    
    void OnConversationGroupNameChanged(const V2TIMString& oldName, const V2TIMString& newName) override {
    // 收到会话分组重命名通知
    }
    
    void OnConversationsAddedToGroup(const V2TIMString& groupName,
    const V2TIMConversationVector& conversationList) override {
    // 收到会话分组添加会话通知
    }
    
    void OnConversationsDeletedFromGroup(const V2TIMString& groupName,
    const V2TIMConversationVector& conversationList,
    uint32_t reason) override {
    // 收到会话分组删除会话通知
    // reason 表示会话从所在分组删除的原因,其取值有:
    // 当 reason 为 0 时,表示由用户主动调用 deleteConversationsFromGroup 触发
    // 当 reason 为 1 时,表示添加到分组的会话数量超过 1000,最早添加进分组的会话被淘汰
    }
    };
    
    // 添加会话事件监听器,注意在移除监听器之前需要保持 conversationListener 的生命期,以免接收不到事件回调
    ConversationListener conversationListener;
    V2TIMManager::GetInstance()->GetConversationManager()->AddConversationListener(&conversationListener);
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持