tencent cloud

文档反馈

Android&iOS&Windows&Mac

最后更新时间:2024-04-23 17:45:35

    功能描述

    支持群消息置顶/取消置顶,获取置顶消息列表,以及置顶消息列表变更通知。
    说明
    消息置顶功能在增强版 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) 接口可以获取置顶消息列表。
    消息置顶接口入参详解如下:
    属性
    含义
    说明
    groupID
    群ID
    需要获取置顶消息列表的群聊ID
    说明
    1. 此接口用于获取置顶消息列表,如果置顶消息漫游已过期(体验版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) 回调。
    说明
    1. 如果变更类型为取消置顶,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 电话支持