tencent cloud

文档反馈

Android&iOS&Windows&Mac

最后更新时间:2024-07-05 15:24:08

    功能描述

    您可以调用 findMessages 接口,根据 messageID 查询本地消息详情,包括状态 status 为 V2TIM_MSG_STATUS_LOCAL_REVOKED(已撤回)和 V2TIM_MSG_STATUS_HAS_DELETED(已删除)的消息。
    通常情况下,如果您想展示消息列表,可以只在内存中存储 messageID。当您需要展示消息内容,或者实现长按/右键点击消息展示更多信息时,可以再调用 findMessages 获取指定消息的详情,而不是一开始就把消息对象加载到内存中,这样会更节省内存。
    注意:
    1. 只支持查询本地消息,例如接收到的消息或者调用拉取历史消息接口获取到的消息。
    2. 不支持查询直播群(AVChatRoom)的消息,因为直播群的消息不会保存在本地。
    3. 您可通过 V2TIMMessage 的 status 来区分消息的状态。

    查询本地消息

    查询本地消息的接口为 findMessages (Android / iOS & Mac / Windows) 。
    示例代码如下:
    Android
    iOS & Mac
    Windows
    V2TIMManager.getMessageManager().findMessages(messageIDList, new V2TIMValueCallback<List<V2TIMMessage>>() {
    @Override
    public void onSuccess(List<V2TIMMessage> v2TIMMessages) {}
    
    @Override
    public void onError(int code, String desc) {}
    });
    [V2TIMManager.sharedInstance findMessages:messageIDList
    succ:^(NSArray<V2TIMMessage *> *msgs) {
    // 查询消息成功
    } 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<V2TIMMessageVector>{};
    callback->SetCallback(
    [=](const V2TIMMessageVector& messageVector) {
    // 查询消息成功
    delete callback;
    },
    [=](int error_code, const V2TIMString& error_message) {
    // 查询消息失败
    delete callback;
    });
    
    V2TIMManager::GetInstance()->GetMessageManager()->FindMessages(messageIDList, callback);
    联系我们

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

    技术支持

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

    7x24 电话支持