tencent cloud

文档反馈

Android&iOS&Windows&Mac

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

    功能描述

    群定向消息是指向群内部分成员发送消息,其他群成员无法收到该消息。
    说明
    1. 仅增强版 SDK 6.0.1975 及以上版本支持。
    2. 该功能仅对进阶版客户开放,请购买进阶版后使用。
    3. 创建定向群消息的原始消息对象不支持群 @ 消息。
    4. 社群(Community)和直播群(AVChatRoom)不支持发送定向群消息。
    5. 定向群消息默认不计入群会话的未读计数。

    效果展示

    使用群定向消息功能,您可以实现如下图所示的效果:
    
    
    

    发送群定向消息

    定向消息是指,向群内部分指定的成员发送消息,而未被指定的群成员无法收到该消息。
    如果您希望向群里的单个群成员发定向消息,同时传入 groupID 和 receiver 即可。
    如果您希望向群里的多个群成员发定向消息,可以按照下面的方式实现:
    1.1 调用 createXxxMessage (其中 Xxx 表示具体的消息类型) 接口创建一条原始消息对象 V2TIMMessage
    1.2 调用 createTargetedGroupMessage (Android / iOS & Mac / Windows) 接口根据原始消息对象创建定向消息对象 V2TIMMessage,并指定消息接收成员列表。
    1.3 调用 sendMessage 接口发送定向消息。
    示例代码如下:
    Android
    iOS & Mac
    Windows
    // 创建原始消息对象
    V2TIMMessage v2TIMMessage = V2TIMManager.getMessageManager().createTextMessage("这是一个群定向消息");
    // 创建定向群消息对象,指定群消息接收者 "vinson" "denny"
    List<String> targetGroupMemberList = new ArrayList<>();
    targetGroupMemberList.add("vinson");
    targetGroupMemberList.add("denny");
    V2TIMMessage targetGroupMessage = V2TIMManager.getMessageManager().createTargetedGroupMessage(v2TIMMessage, targetGroupMemberList);
    
    // 在群 "groupA" 发送群定向消息
    V2TIMManager.getMessageManager().sendMessage(targetGroupMessage, null, "groupA", V2TIMMessage.V2TIM_PRIORITY_DEFAULT, false, null, new V2TIMSendCallback<V2TIMMessage>() {
    @Override
    public void onError(int code, String desc) {
    // 发送失败
    }
    @Override
    public void onSuccess(V2TIMMessage v2TIMMessage) {
    // 发送成功
    }
    @Override
    public void onProgress(int progress) {
    
    }
    });
    // 创建原始消息对象
    V2TIMMessage *message = [V2TIMManager.sharedInstance createTextMessage:@"这是一个群定向消息"];
    
    // 创建定向群消息对象,指定群消息接收者 "vinson" "denny"
    NSMutableArray *receiverList = [NSMutableArray array];
    [receiverList addObject:@"vinson"];
    [receiverList addObject:@"denny"];
    V2TIMMessage *targetGroupMessage = [V2TIMManager.sharedInstance createTargetedGroupMessage:message receiverList:receiverList];
    
    // 在群 "groupA" 发送定向消息
    [[V2TIMManager sharedInstance] sendMessage:targetGroupMessage receiver:nil groupID:@"groupA"
    priority:V2TIM_PRIORITY_DEFAULT onlineUserOnly:NO offlinePushInfo:nil progress:^(uint32_t progress) {
    } succ:^{
    // 消息发送成功
    } fail:^(int code, NSString *msg) {
    // 消息发送失败
    }];
    class SendCallback final : public V2TIMSendCallback {
    public:
    using SuccessCallback = std::function<void(const V2TIMMessage&)>;
    using ErrorCallback = std::function<void(int, const V2TIMString&)>;
    using ProgressCallback = std::function<void(uint32_t)>;
    
    SendCallback() = default;
    ~SendCallback() override = default;
    
    void SetCallback(SuccessCallback success_callback, ErrorCallback error_callback,
    ProgressCallback progress_callback) {
    success_callback_ = std::move(success_callback);
    error_callback_ = std::move(error_callback);
    progress_callback_ = std::move(progress_callback);
    }
    
    void OnSuccess(const V2TIMMessage& message) override {
    if (success_callback_) {
    success_callback_(message);
    }
    }
    void OnError(int error_code, const V2TIMString& error_message) override {
    if (error_callback_) {
    error_callback_(error_code, error_message);
    }
    }
    void OnProgress(uint32_t progress) override {
    if (progress_callback_) {
    progress_callback_(progress);
    }
    }
    
    private:
    SuccessCallback success_callback_;
    ErrorCallback error_callback_;
    ProgressCallback progress_callback_;
    };
    
    // 创建原始消息对象
    V2TIMMessage message =
    V2TIMManager::GetInstance()->GetMessageManager()->CreateTextMessage(u8"这是一条群 @ 文本消息");
    // 创建定向群消息对象,指定群消息接收者 "vinson" "denny"
    V2TIMStringVector receiverList;
    receiverList.PushBack("vinson");
    receiverList.PushBack("denny");
    V2TIMMessage targetGroupMessage =
    V2TIMManager::GetInstance()->GetMessageManager()->CreateTargetedGroupMessage(message, receiverList);
    
    auto callback = new SendCallback{};
    callback->SetCallback(
    [=](const V2TIMMessage& message) {
    // 群定向消息发送成功
    delete callback;
    },
    [=](int error_code, const V2TIMString& error_message) {
    // 群定向消息发送失败
    delete callback;
    },
    [=](uint32_t progress) {});
    
    // 在群 "groupA" 发送群定向消息
    V2TIMManager::GetInstance()->GetMessageManager()->SendMessage(
    targetGroupMessage, {}, "groupA", V2TIMMessagePriority::V2TIM_PRIORITY_NORMAL, false, {}, callback);

    接收群定向消息

    定向群消息默认不计入群会话的未读计数。 接收群定向消息跟接收普通消息是一样的操作步骤,参考 接收消息
    联系我们

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

    技术支持

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

    7x24 电话支持