`
waw
  • 浏览: 23040 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

XMPP packet 重写 基于smack

    博客分类:
  • XMPP
阅读更多
基于Smack 实现Notification数据包。smack的类中有一个org.jivesoftware.smack.packet.IQ只需对他重写即可,在做的时候其实可以简单一点的,如果你使用tinder.jar 包,其IQ org.xmpp.packet.IQ 有一个 setChildElement 方法与 getChildElement相对应,但smack没有!


主要用于与android Client之间Push通信.
定义一套自己的数据包格式:
- <iq id="11111" to="aa@qq.com" type="get">
- <notification xmlns="androidpn:iq:notification">
  <id>123456</id> 
  <apiKey>1234567890</apiKey> 
  <title>nothing</title> 
  <message>jintiantianqibuycuo</message> 
  <uri>heoo</uri> 
  </notification>
  </iq>


重新写了一下body的部分. 代码如下:

/**
 * Notification 重写XMPP 的IQ packet (Smack) 
 * 
 * @author Charles
 * @date 2011/10/16
 *
 *
 */


package com.gareatech.testxmpp;

import org.jivesoftware.smack.packet.IQ;


/**
 * 重构之后的数据样式
 * - 
 * <iq id="11111" to="aa@qq.com" type="get"> 
 * <notification xmlns="androidpn:iq:notification">
 * <id>123456</id> 
 * <apiKey>1234567890</apiKey> 
 * <title>nothing</title> 
 * <message>jintiantianqibuycuo</message> 
 * <uri>heoo</uri> 
 * </notification>
 * </iq>
 * 
 * */
public class Notification extends IQ {	
	private Notify notify;
	
	public Notify getNotify() {
		return notify;
	}

	public void setNotify(Notify notify) {
		this.notify = notify;
	}

	@Override
	public String getChildElementXML() {
		StringBuilder buf = new StringBuilder();
		if (notify != null) {
			buf.append(notify.toXML());
		}
		return buf.toString();
	}
	
	/**
	 * Notify
	 * Body 部分,重写为<>
	 * 
	 * */
	public static class Notify {
		private String id;
		private String apiKey ;
		private String title;
		private String message;
		private String uri;
		
		public String getId() {
			return id;
		}

		public void setId(String id) {
			this.id = id;
		}

		public String getApiKey() {
			return apiKey;
		}

		public void setApiKey(String apiKey) {
			this.apiKey = apiKey;
		}

		public String getTitle() {
			return title;
		}

		public void setTitle(String title) {
			this.title = title;
		}

		public String getMessage() {
			return message;
		}

		public void setMessage(String message) {
			this.message = message;
		}

		public String getUri() {
			return uri;
		}

		public void setUri(String uri) {
			this.uri = uri;
		}

		public String toXML() {
			StringBuilder buf = new StringBuilder();
			buf.append("<notification xmlns=\"").append("androidpn:iq:notification\">");
			buf.append("<id>").append(id).append("</id>");
			buf.append("<apiKey>").append(apiKey).append("</apiKey>");
			buf.append("<title>").append(title).append("</title>");
			buf.append("<message>").append(message).append("</message>");
			buf.append("<uri>").append(uri).append("</uri>");
			buf.append("</notification>");
            return buf.toString();
		}
	}
}

1
3
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics