tencent cloud

文档反馈

Android&iOS&Windows&Mac

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

    功能描述

    消息置顶功能是指在即时通讯 App 上,将特定消息固定在列表顶部的功能,即使有新的消息进来,它也会保持在顶部。这个功能可以帮助用户更容易地找到并访问他们认为重要或频繁查看的消息。
    说明:
    消息置顶功能在增强版 SDK 7.9 及以上版本支持。
    该功能仅对进阶版客户开放,购买进阶版 后可使用。
    目前消息置顶功能仅支持普通群。

    效果展示

    您可以使用本功能实现如下的群聊消息置顶效果:
    
    
    

    消息置顶/取消置顶

    调用PinGroupMessage (Android / iOS & Mac / Windows) 接口可以设置消息置顶。
    消息置顶接口入参详解如下:
    属性
    含义
    说明
    groupID
    群ID
    置顶/取消置顶的群聊ID
    message
    消息对象
    消息必须是发送成功的状态。
    isPinned
    置顶/取消置顶
    设置群消息是否置顶。
    说明
    1. 群聊最多支持 10 条 置顶消息。
    2. 如果置顶消息数量超过最大限制,调用接口会报 ERR_SVR_GROUP_PINNED_MESSAGE_COUNT_LIMIT 错误。
    示例代码如下:
    Android
    iOS & Mac
    Windows
    V2TIMManager.getMessageManager().pinGroupMessage(groupID, message, true, new V2TIMCallback() {
    @Override
    public void onSuccess() {
    // 消息置顶成功
    }
    @Override
    public void onError(int code, String desc) {
    // 消息置顶失败
    }
    });
    [[V2TIMManager sharedInstance] pinGroupMessage:self.groupID message:message isPinned:YES 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_;
    };
    
    auto *callback = new Callback{};
    callback->SetCallback(
    [=]() {
    // 消息置顶成功
    delete callback;
    },
    [=](int error_code, const V2TIMString &error_message) {
    // 消息置顶失败
    delete callback;
    });
    V2TIMManager::GetInstance()->GetMessageManager()->PinGroupMessage(groupID, message, true, callback);

    获取已置顶的消息列表

    调用GetPinnedGroupMessageList(Android / iOS & Mac / Windows) 接口可以获取置顶消息列表。
    如果需要获取消息置顶者,可以通过 V2TIMMessage 的 pinnerInfo 字段获取消息置顶者。
    消息置顶接口入参详解如下:
    属性
    含义
    说明
    groupID
    群ID
    需要获取置顶消息列表的群聊ID
    说明
    此接口用于获取置顶消息列表,如果置顶消息漫游已过期(体验版7天过期,旗舰版30天过期)不会返回。
    示例代码如下:
    Android
    iOS & Mac
    Windows
    V2TIMManager.getMessageManager().getPinnedGroupMessageList(groupID, new V2TIMValueCallback<List<V2TIMMessage>>() {
    @Override
    public void onSuccess(List<V2TIMMessage> v2TIMMessages) {
    // 获取置顶消息列表成功
    }
    @Override
    public void onError(int code, String desc) {
    // 获取置顶消息列表失败
    }
    });
    [[V2TIMManager sharedInstance] getPinnedGroupMessageList:self.groupID succ:^(NSArray<V2TIMMessage *> *messageList) {
    // 获取置顶消息列表成功
    } 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()->GetPinnedGroupMessageList(groupID, callback);

    置顶消息列表变更通知

    如果您事先调用addAdvancedMsgListener添加了高级消息事件监听器,当置顶消息列表发生了更新,您会收onGroupMessagePinned
    (Android / iOS & Mac/ Windows) 回调。
    说明
    如果变更类型为取消置顶,message 参数中只有消息发送者、序列号、随机数及时间戳为有效字段,不包含完整的消息体。
    示例代码如下:
    Android
    iOS & Mac
    Windows
    V2TIMManager.getMessageManager().addAdvancedMsgListener(new V2TIMAdvancedMsgListener() {
    @Override
    public void onGroupMessagePinned(String groupID, V2TIMMessage message, boolean isPinned, V2TIMGroupMemberInfo opUser) {
    // 收到置顶消息列表变更的通知
    }
    });
    [[V2TIMManager sharedInstance] addAdvancedMsgListener:self];
    - (void)onGroupMessagePinned:(NSString *)groupID message:(V2TIMMessage *)message isPinned:(BOOL)isPinned opUser:(V2TIMGroupMemberInfo *)opUser {
    // 收到置顶消息列表变更的通知
    }
    V2TIMManager::GetInstance()->GetMessageManager()->AddAdvancedMsgListener(this);
    void OnGroupMessagePinned(const V2TIMString &groupID, const V2TIMMessage &message,
    bool isPinned, const V2TIMGroupMemberInfo &opUser) override {
    // 收到置顶消息列表变更的通知
    }
    
    
    联系我们

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

    技术支持

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

    7x24 电话支持