Android Smack 扩展Message消息节点(smack:4.3.4)
我们都知道在利用openfire+smack开发即时聊天工具时,由于自带Message消息体的局限性,消息题里面很简单,有些不符合自己的需求。这就需要我们自己去扩展message的消息节点,本文在最新的smack:4.3.4基础上给大家展示扩展Message消息节点date来放置消息时间。
首先,我们来看看Message原始的节点
下面的就是初始的Message节点,我们看到除了自身包含的from、to、type等属性外,只是包含了body子节点,用于放置消息内容,很简单。
<message from='发送方jid' to='接收方jid' type='消息类型(普通消息/群聊)'>
<body>消息内容</body>
</message>
我们再来看看要扩展的效果
下面是我们要扩展的最终效果,添加了消息时间的节点,用于放置消息的时间
<message id='76Ws9-11' from='发送方jid' to='接收方jid' type='消息类型(普通消息/群聊)'>
<body>消息内容</body>
<date>2019-10-11 10:05</date>
<userinfo xmlns="com.xml.extension">
<nickname>菜鸟</nickname>
<icon>http://www.liaoku.org/</url>
</userinfo>
</message>
接下来就是正式进入正题,先自定义实现扩展消息时间节点
我相信懂一点儿Java的都能看明白下面扩展消息时间节点AddMessageDate的实现,相关地方都有了注释
package cn.xie.imchat.utils;
import org.jivesoftware.smack.packet.ExtensionElement;
/**
* message扩展类
* 扩展前:<message from='发送方jid' to='接收方jid' type='消息类型(普通消息/群聊)'>
* <body>消息内容</body>
* </message>
* 扩展后:<message id='76Ws9-11' from='发送方jid' to='接收方jid' type='消息类型(普通消息/群聊)'>
* <body>hello 你好</body>
* <date>2019-10-11 10:05</date>
* </message>
* @author xiejinbo
* @date 2019/10/11 0011 10:39
*/
public class AddMessageDate implements ExtensionElement {
//消息时间元素名称
public static final String Element_DATE = "date";
//消息时间值(对外开放)
private String dateText;
public String getDateText() {
return dateText;
}
public void setDateText(String dateText) {