前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[即时通信IM]群@消息如何实现?

[即时通信IM]群@消息如何实现?

作者头像
腾讯即时通信IM
修改2020-07-29 19:33:09
1.1K0
修改2020-07-29 19:33:09
举报
文章被收录于专栏:即时通信IM即时通信IM

作者:腾讯云-ahqzhang

群内 @ 消息与普通消息没有本质区别,仅是在被 @ 的人在收到消息时,需要在UI上做特殊处理,例如QQ的消息列表中会有标红提示。具体实现可以参考以下方案:

  • 1 在发送消息时监听键盘事件,是否输入了 @ 字符,当检测到发送方输入了 @ 字符时,在UI上弹出群成员列表,以供发送方选择需要 @ 的人,假设被选到的用户为 user1
  • 2 选择完需要被 @ 的人后,在消息输入框里添加上 @ 及被选中的人的id, 例如 "@user1"
  • 3 在消息中添加一个 TIMCustomElem , 并在 TIMCustomElem 里添加自己设计的标识该消息为 @ 消息的消息协议。 一个简单的协议定义可以如下:
代码语言:javascript
复制
  {
      "type":"REMIND",
      "target":"user1"
  }

@消息的构建过程示例代码如下(以android平台为例):

代码语言:javascript
复制
  // 发送一条文本消息,并在消息中 @ 群成员 user1
  TIMMessage msg = new TIMMessage();

  //构建文本消息元素体
  TIMTextElem txtElem = new TIMTextElem();
  txtElem.setText("@user1 nice to meet u");
  if(msg.addElement(txtElem) != 0){
      Log.e(TAG, "add text elem failed");
      return;
  }

  try{
      //填充自定义的消息协议
      JSONObject remindProto = new JSONObject();
      remindProto.put("type", "REMIND");
      remindProto.put("target", "user1");

      //根据自己定义的协议构建自定义消息元素
      TIMCustomElem customElem = new TIMCustomElem();
      customElem.setDesc("remind msg");
      customElem.setData(remindProto.toString().getBytes("utf-8");
      if(msg.addElement(customElem) != 0){
          Log.e(TAG, "add custom elem failed");
          return;
      }
  }catch(Exception e){
      Log.e(TAG, "build custom elem failed");
      return;
  }

注: 其中 TIMTextElem 不是必须的,如果确认不需要进行脏字过滤的情况下,可以把 TIMTextElem 中的消息内容填到 TIMCustomElem 中的 desc 属性中。

  • 4 构建好消息后,发送到群里
  • 5 群里的成员接收到消息后,检查消息中的 TIMCustomElem 中的消息协议是否是 @ 消息协议。如果是, 则进行下一步处理,否则跳过
  • 6 判断被 @ 的人是否与当前登录用户一致,如果是,则在UI中进行特殊处理,否则不需要处理

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
即时通信 IM
即时通信 IM(Instant Messaging)基于腾讯二十余年的 IM 技术积累,支持Android、iOS、Mac、Windows、Web、H5、小程序平台且跨终端互通,低代码 UI 组件助您30分钟集成单聊、群聊、关系链、消息漫游、群组管理、资料管理、直播弹幕和内容审核等能力。适用于直播互动、电商带货、客服咨询、社交沟通、在线课程、企业办公、互动游戏、医疗健康等场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档