tencent cloud

文档反馈

Android&iOS&Windows&Mac

最后更新时间:2025-01-03 10:51:04

    功能描述

    删除好友或退出群组后,SDK 不会自动删除对应的单聊或群聊会话。客户可以调用下文的接口,主动删除会话。
    说明:
    删除会话多端同步功能仅增强版 SDK 5.1.1 及以上版本支持。
    会话删除默认不支持多端同步,您可以在 控制台 开启多端同步。开关路径:Applications > Your App > Chat > Configuration > Login and Message > Multi-client Synchronization Settings。

    删除单个会话

    您可以调用 deleteConversation(Java / Swift / Objective-C / C++) 接口,删除指定的会话。
    注意:
    删除会话会同时删除终端和服务器的历史消息,且无法恢复。如果您希望保留历史消息,请使用 删除多个会话接口。
    示例代码如下:
    Java
    Swift
    Objective-C
    C++
    String conversationID = "conversationID";
    V2TIMManager.getConversationManager().deleteConversation(conversationID, new V2TIMCallback() {
    @Override
    public void onSuccess() {
    // 删除会话成功
    }
    @Override
    public void onError(int code, String desc) {
    // 删除会话失败
    }
    });
    V2TIMManager.shared.deleteConversation(conversation: "conversationID") {
    print("deleteConversation succ")
    } fail: { code, desc in
    print("deleteConversation fail, \\(code), \\(desc)")
    }
    NSString *conversationID = @"conversationID";
    [[V2TIMManager sharedInstance] deleteConversation:conversationID
    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"conversationID";
    auto callback = new Callback;
    callback->SetCallback(
    [=]() {
    // 删除会话成功
    delete callback;
    },
    [=](int error_code, const V2TIMString& error_message) {
    // 删除会话失败
    delete callback;
    });
    V2TIMManager::GetInstance()->GetConversationManager()->DeleteConversationGroup(groupName, callback);
    

    删除多个会话

    您可以调用 deleteConversationList(Java / SwiftObjective-C / C++) 接口,删除指定的会话。clearMessage 设置为 false 时,会保留会话消息;设置为 true 时,本地和服务器的消息会一起删除,并且不可恢复。
    说明:
    仅增强版 SDK 7.1 及以上版本支持。
    每次最多支持删除 100 个会话。
    示例代码如下:
    Java
    Swift
    Objective-C
    C++
    List<String> conversationIDList = new ArrayList<>();
    conversationIDList.add("c2c_userID");
    conversationIDList.add("group_groupID");
    V2TIMManager.getConversationManager().deleteConversationList(
    conversationIDList, true, new V2TIMValueCallback<List<V2TIMConversationOperationResult>>() {
    @Override
    public void onSuccess(List<V2TIMConversationOperationResult> results) {
    // 删除会话成功
    for (V2TIMConversationOperationResult result : results) {
    int code = result.getResultCode();
    String info = result.getResultInfo();
    String conversationID = result.getConversationID();
    }
    }
    @Override
    public void onError(int code, String desc) {
    // 删除会话失败
    }
    });
    V2TIMManager.shared.deleteConversationList(
    conversationIDList: ["c2c_userID", "group_groupID"], clearMessage: true
    ) { result in
    print( "deleteConversationList succ")
    } fail: { code, desc in
    print("deleteConversationList fail, \\(code), \\(desc)")
    }
    NSMutableArray *conversationIDList = [NSMutableArray array];
    [conversationIDList addObject:@"c2c_userID"];
    [conversationIDList addObject:@"group_groupID"];
    [[V2TIMManager sharedInstance] deleteConversationList:conversationIDList
    clearMessage:true
    succ:^(NSArray<V2TIMConversationOperationResult *> *results) {
    // 删除会话成功
    for (V2TIMConversationOperationResult *result in results) {
    int code = result.resultCode;
    NSString *info = result.resultInfo;
    NSString *conversationID = result.conversationID;
    }
    }
    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_;
    };
    
    V2TIMStringVector conversationIDList;
    conversationIDList.PushBack(u8"c2c_userID");
    conversationIDList.PushBack(u8"group_groupID");
    auto callback = new ValueCallback<V2TIMConversationOperationResultVector>{};
    callback->SetCallback(
    [=](const V2TIMConversationOperationResultVector& results) {
    // 删除会话成功
    for (size_t i = 0; i < results.Size(); ++i) {
    const V2TIMConversationOperationResult& result = results[i];
    int code = result.resultCode;
    V2TIMString info = result.resultInfo;
    V2TIMString conversationID = result.conversationID;
    }
    delete callback;
    },
    [=](int error_code, const V2TIMString& error_message) {
    // 删除会话失败
    delete callback;
    });
    V2TIMManager::GetInstance()->GetConversationManager()->DeleteConversationList(conversationIDList, true, callback);
    

    会话被删除通知

    如果您事先调用了 addConversationListener(Java / SwiftObjective-C / C++) 添加会话监听器,就可以在 onConversationDeleted 中获取会话被删除的通知。
    示例代码如下:
    Java
    Swift
    Objective-C
    C++
    @Override
    public void onConversationDeleted(List<String> conversationIDList) {
    Log.i("imsdk", "onConversationDeleted");
    }
    func onConversationDeleted(conversationIDList: Array<String>) {
    conversationIDList.forEach { item in
    print(item.description)
    }
    }
    - (void)onConversationDeleted:(NSArray<NSString *> *)conversationIDList {
    
    }
    class ConversationListener final : public V2TIMConversationListener {
    public:
    void OnConversationDeleted(const V2TIMStringVector & conversationIDList) override {
    }
    };
    
    // 添加会话事件监听器,注意在移除监听器之前需要保持 conversationListener 的生命期,以免接收不到事件回调
    ConversationListener conversationListener;
    V2TIMManager::GetInstance()->GetConversationManager()->AddConversationListener(&conversationListener);
    
    
    联系我们

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

    技术支持

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

    7x24 电话支持