功能描述
群定向消息是指向群内部分成员发送消息,其他群成员无法收到该消息。
说明
1. 仅增强版 SDK 6.0.1975 及以上版本支持。
2. 该功能仅对旗舰版客户开放,详情请参考 基础服务详情。
3. 创建定向群消息的原始消息对象不支持群 @ 消息。
4. 直播群(AVChatRoom)不支持发送定向群消息。
5. 定向群消息默认不计入群会话的未读计数。
效果展示
使用群定向消息功能,您可以实现如下图所示的效果:
发送群定向消息
定向消息是指,向群内部分指定的成员发送消息,而未被指定的群成员无法收到该消息。
如果您希望向群里的单个群成员发定向消息,同时传入 groupID 和 receiver 即可。
如果您希望向群里的多个群成员发定向消息,可以按照下面的方式实现:
1.1 调用
createXxxMessage
(其中 Xxx 表示具体的消息类型) 接口创建一条原始消息对象 V2TIMMessage
。1.2 调用
createTargetedGroupMessage
(Android / iOS & Mac / Windows) 接口根据原始消息对象创建定向消息对象 V2TIMMessage
,并指定消息接收成员列表。1.3 调用
sendMessage
接口发送定向消息。示例代码如下:
// 创建原始消息对象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>() {@Overridepublic void onError(int code, String desc) {// 发送失败}@Overridepublic void onSuccess(V2TIMMessage v2TIMMessage) {// 发送成功}@Overridepublic 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);
接收群定向消息