美文网首页
腾讯云IM 聊天发送自定义消息

腾讯云IM 聊天发送自定义消息

作者: 酒仙娘子 | 来源:发表于2019-11-24 12:02 被阅读0次

发送自定义消息官网也讲的很清楚

自定义消息是指当内置的消息类型无法满足特殊需求,开发者可以自定义消息格式,内容全部由开发者定义,IM SDK 只负责透传。另外如果需要 iOS APNs 推送,还需要提供一段推送文本描述,方便展示。自定义消息由TIMCustomElem定义,其中data存储消息的二进制数据,其数据格式由开发者定义,desc存储描述文本。一条消息内可以有多个自定义Elem,并且可以跟其他Elem混合排列,离线 Push 时叠加每个Elem的desc描述信息进行下发。

首先发送消息的时候会有个消息 info.setMsgType(MessageInfo.MSG_TYPE_CUSTOM_FACE);

先找到 是发送纯文本的方法:

public static MessageInfo buildTextMessage(String message) {

MessageInfo info =new MessageInfo();

    TIMMessage TIMMsg =new TIMMessage();

    TIMTextElem ele =new TIMTextElem();

    ele.setText(message);

    TIMMsg.addElement(ele);

    info.setExtra(message);

    info.setMsgTime(System.currentTimeMillis());

    info.setSelf(true);

    info.setTIMMessage(TIMMsg);

    info.setFromUser(TIMManager.getInstance().getLoginUser());

    info.setMsgType(MessageInfo.MSG_TYPE_TEXT);

return info;

}

想要自定义发送消息的时候就在纯文本的方法里面再添加一个官网自定义的 TIMCustomElem elem =newTIMCustomElem();

public static MessageInfo buildTextMessage(String message, String id, String username, String headurl) {

MessageInfo info =new MessageInfo();

    TIMMessage TIMMsg =new TIMMessage();

    TIMTextElem ele =new TIMTextElem();

    ele.setText(message);

    TIMMsg.addElement(ele);

    info.setExtra(message);

    info.setMsgTime(System.currentTimeMillis());

    info.setSelf(true);

    info.setTIMMessage(TIMMsg);

    info.setFromUser(TIMManager.getInstance().getLoginUser());

    info.setMsgType(MessageInfo.MSG_TYPE_TEXT);

    

上面添加纯文本的消息没动,直接再添加下面的自定义消息,我是以JSON的格式提交的 ,这种格式可以自己和后台配置人员进行沟通用哪一种,再添加。

TIMCustomElem customElem =new TIMCustomElem();

    JSONObject jsonObject =new JSONObject();

    try {

jsonObject.put("id", id);

        jsonObject.put("nickname", username);

        jsonObject.put("headurl", headurl);

        customElem.setData(jsonObject.toString().getBytes());

        TIMMsg.addElement(customElem);

    }catch (JSONException e) {

}

return info;

}

到这自定义发送消息,以及格式完成了发送步骤,下一步就是如何获取自定义消息的方法。
在获取消息TIMMessage 解析的时候 getElement 一层一层的去解析获取数据

自定义发送 然后再去取自定义的里面的数据出来再解析一下JSON 我的是data对象里面包了自己定义的字段,所以取的时候就先解析获取到data对象再取里面的自定义字段就可以了 “nickname” 和"headurl" 就是我自己定的字段名称。

if (timMsg.getElementCount() >1 &&timMsg.getElement(1)instanceof TIMCustomElem) {

try {

jsonObject =new JSONObject(new String(((TIMCustomElem)timMsg.getElement(1)).getData(), "UTF-8"));

        chatHolder.userName.setText(jsonObject.get("nickname").toString());

        GlideEngine.chatHeader(TUIKit.getAppContext(), jsonObject.get("headurl").toString(), chatHolder.userPhoto);

    }catch (JSONException e) {

e.printStackTrace();

    }catch (UnsupportedEncodingException e) {

e.printStackTrace();

    }

}

其实官网上面也讲的很清楚很清楚了。还是比较简单的,没什么难的。唯一一点可能就是要和后台人员商量好定义对应的格式,要不然可能就会解析错误已经发送格式失败之类的。

相关文章

  • 腾讯云IM 聊天发送自定义消息

    发送自定义消息官网也讲的很清楚 自定义消息是指当内置的消息类型无法满足特殊需求,开发者可以自定义消息格式,内容全部...

  • 腾讯云IM 聊天发送自定义消息

    发送自定义消息官网也讲的很清楚 自定义消息是指当内置的消息类型无法满足特殊需求,开发者可以自定义消息格式,内容全部...

  • 小程序轻松实现IM即时通讯多人聊天室

    IM多人聊天室功能简介 ZIM SDK 提供多人房间聊天功能,支持用户向房间内发送文本消息或自定义消息,实现了多人...

  • Swift 极光IM聊天-发送消息

    前言 最近公司的项目使用到了极光聊天的功能,但是正如目前市面上所看到的所有的与聊天相关的第三方,极光只是提供了最基...

  • 腾讯云IM接入案列(一)

    合集 腾讯云IM接入案列(一)腾讯云IM接入案列(二)腾讯云IM接入案列(三)腾讯云IM接入案列(四) 前言 前端...

  • 腾讯云IM接入案列(二)

    合集 腾讯云IM接入案列(一)腾讯云IM接入案列(二)腾讯云IM接入案列(三)腾讯云IM接入案列(四) 前言 上面...

  • 腾讯云IM接入案例(三)

    合集 腾讯云IM接入案列(一)腾讯云IM接入案列(二)腾讯云IM接入案列(三)腾讯云IM接入案列(四) 本篇内容 ...

  • 腾讯云IM接入案例(四)

    合集 腾讯云IM接入案列(一)腾讯云IM接入案列(二)腾讯云IM接入案列(三)腾讯云IM接入案列(四) 前言 前三...

  • 集成腾讯IM 发送系统文件java.lang.NumberFor

    集成腾讯IM,从聊天界面选择系统文件,选择最近下载,一直没有文件消息发送出去,然后断点啊,断点就发现抛出了异常: ...

  • 腾讯云通讯IM 接入小程序 (三)发送表情

    微信小程序利用腾讯云IM即时通讯表情开发 上一节我们完成了消息收发 这次我们补充表情发送;其实表情跟普通文字消息发...

网友评论

      本文标题:腾讯云IM 聊天发送自定义消息

      本文链接:https://www.haomeiwen.com/subject/vpllwctx.html