tencent cloud

文档反馈

Android & iOS & Mac

最后更新时间:2023-01-29 16:03:29

    功能描述

    群 @ 消息是指发送方监听输入栏里的输入字符,当用户输入 @ 字符后,弹出群成员选择界面。选择完需要 @ 的成员后以 “@A @B @C......” 形式显示在输入框,并可以继续编辑消息内容,完成消息发送。
    接收方会在会话界面的群聊天列表,重点显示 “有人@我” 或者 “@所有人” 标识,提醒用户有人在群里 @ 自己了。

    说明:

    目前仅支持文本 @ 消息。

    功能演示

    监听 @ 字符选择群成员 编辑群 @ 消息发送 收到群 @ 消息

    图一:在聊天界面监听到输入框输入 "@" 字符后,可以跳转到群成员选择界面,选择需要 @ 的群成员。
    图二:在群成员选择完成后,重新返回聊天界面,继续编辑群 @ 消息发送。
    图三:如果有消息 @ 我,自己会收到会话更新,可以在会话 Cell 展示 “有人@我” 信息。

    发送群 @ 消息

    1. 发送方监听聊天界面的文本输入框,启动群成员选择界面。选择完成后回传所选择的群成员 ID 和昵称信息,ID 用于构建消息对象 V2TIMMessage,昵称用于在文本框显示。
    2. 发送方调用 createTextAtMessage (Android / iOS & Mac / Windows) 接口创建一条 @ 文本消息,拿到消息对象 V2TIMMessage,并在其中指定需要 @ 的成员。
    3. 发送方调用 sendMessage (Android / iOS & Mac / Windows) 将刚才创建的 @ 消息对象发送出去。

    示例代码如下:

    // 群成员 user1 和 user2
    List<String> atUserList = new ArrayList<>();
    atUserList.add("user1");
    atUserList.add("user2");
    // 创建群@消息
    V2TIMMessage v2TIMMessage = V2TIMManager.getMessageManager().createTextAtMessage(message, atUserList);
    // 发送群@消息
    V2TIMManager.getMessageManager().sendMessage(v2TIMMessage, null, "toGroupID",  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) {
     }
    });
    

    接收群 @ 消息

    1. 在加载和更新会话处,需要调用 V2TIMConversationgroupAtInfolist (Android / iOS & Mac / Windows) 接口获取会话的 @ 数据列表。
    2. 通过列表中 V2TIMGroupAtInfo 对象的 atType (Android / iOS & Mac / Windows) 接口获取 @ 数据类型,并更新到当前会话的 @ 信息。

    示例代码如下:

    //获取群@数据列表
    List<V2TIMGroupAtInfo> atInfoList = conversation.getGroupAtInfoList();
    // 解析@类型(@我,@所有人, @我且@所有人)
    boolean atMe = false;
    boolean atAll = false;
    String atTips = "";
    for(V2TIMGroupAtInfo atInfo : atInfoList){
     if (atInfo.getAtType() == V2TIMGroupAtInfo.TIM_AT_ME){
       atMe = true;
       continue;
     }
     if (atInfo.getAtType() == V2TIMGroupAtInfo.TIM_AT_ALL){
       atAll = true;
       continue;
     }
    }
    // 根据@类型,提示
    if (atMe && !atAll) {
       atTips = "[有人@我]";
    } else if (!atMe && atAll) {
       atTips = "[@所有人]";
    } else if (atMe && atAll) {
       atTips = "[有人@我][@所有人]";
    }
    

    联系我们

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

    技术支持

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

    7x24 电话支持