加入以下类:
这个是xml格式的,解析时可以将xml转成map,参数可自由定义
import org.jivesoftware.smack.packet.PacketExtension; /** * 为Message扩展信息 */ public class ChatInfo implements PacketExtension{ //元素名称小写,便于xml转map时取值 //聊天信息元素名称 private static String elementName = "chatinfo"; //病例id元素名称 private static String caseIdElement = "caseid"; //消息类型:1文字2语音3图片4视频5就医建议 private static String zTypeElement = "ztype"; //发送人身份:1医生2患者 private static String identityElement = "identity"; //长度 private static String msglengthElement = "msglength"; //主键 private static String zidElement = "zid"; //发送人id private static String senderIdElement = "senderid"; //接收人id private static String sendeeIdElement = "sendeeid"; //极光推送接收人 private static String tagElement = "tag"; //病例id元素值 private String caseId; //元素值 private String zType; //元素值 private String identity; //长度 private String msglength; //主键 private String zid; private String senderid; private String sendeeid; private String tag; @Override public String getElementName() { return elementName; } /** * 返回扩展的xml字符串 * 此字符串作为message元素的子元素 */ @Override public String toXML() { StringBuilder sb = new StringBuilder(); sb.append("<"); sb.append(elementName); sb.append(">"); sb.append("<"); sb.append(caseIdElement); sb.append(">"); sb.append(caseId); sb.append("</"); sb.append(caseIdElement); sb.append(">"); sb.append("<"); sb.append(zTypeElement); sb.append(">"); sb.append(zType); sb.append("</"); sb.append(zTypeElement); sb.append(">"); sb.append("<"); sb.append(identityElement); sb.append(">"); sb.append(identity); sb.append("</"); sb.append(identityElement); sb.append(">"); sb.append("<"); sb.append(msglengthElement); sb.append(">"); sb.append(msglength); sb.append("</"); sb.append(msglengthElement); sb.append(">"); sb.append("<"); sb.append(zidElement); sb.append(">"); sb.append(zid); sb.append("</"); sb.append(zidElement); sb.append(">"); sb.append("<"); sb.append(senderIdElement); sb.append(">"); sb.append(senderid); sb.append("</"); sb.append(senderIdElement); sb.append(">"); sb.append("<"); sb.append(sendeeIdElement); sb.append(">"); sb.append(sendeeid); sb.append("</"); sb.append(sendeeIdElement); sb.append(">"); sb.append("<"); sb.append(tagElement); sb.append(">"); sb.append(tag); sb.append("</"); sb.append(tagElement); sb.append(">"); sb.append("</"); sb.append(elementName); sb.append(">"); return sb.toString(); } public String getCaseId() { return caseId; } public void setCaseId(String caseId) { this.caseId = caseId; } public String getzType() { return zType; } public void setzType(String zType) { this.zType = zType; } public String getIdentity() { return identity; } public void setIdentity(String identity) { this.identity = identity; } @Override public String getNamespace() { return ""; } public String getMsglength() { return msglength; } public void setMsglength(String msglength) { this.msglength = msglength; } public String getZid() { return zid; } public void setZid(String zid) { this.zid = zid; } public String getSenderid() { return senderid; } public void setSenderid(String senderid) { this.senderid = senderid; } public String getSendeeid() { return sendeeid; } public void setSendeeid(String sendeeid) { this.sendeeid = sendeeid; } public String getTag() { return tag; } public void setTag(String tag) { this.tag = tag; }
消息发送时将自定义的消息带上(示例用的是smack)
public static void SendMsg(String username, String pass, String content, String toUser, String type, String caseId, String identity, String filePath, String realPath , String senderId, String sendeeId ) throws XMPPException { Connection con = login(username, pass); Chat mychat = con.getChatManager() .createChat(toUser + "@" + "192.168.1.254", // 接收端的JID,JID是要加域的 zsmy-of-test new MessageListener() { @Override public void processMessage(Chat chat, Message message) { String messageBody = message.getBody(); Constant.MY_LOG.debug("收到信息:" + messageBody + " " + message.getFrom()); } }); Message msg = new Message(); ChatInfo chatInfo = new ChatInfo(); chatInfo.setCaseId(caseId); chatInfo.setIdentity(identity); chatInfo.setzType(type); chatInfo.setSenderid(senderId); chatInfo.setSendeeid(sendeeId); if ("3".equals(type)) { chatInfo.setMsglength("0"); msg.setBody(filePath); } else { chatInfo.setMsglength(content.length() + ""); msg.setBody(content); // mychat.sendMessage(content); } msg.addExtension(chatInfo); // 添加扩展内容 mychat.sendMessage(msg); // con.disconnect(); // 断开连接 }