`
waw
  • 浏览: 23575 次
  • 性别: 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
分享到:
评论

相关推荐

    基于xmpp_openfire_smack开发之smack类库介绍和使用

    总之,Smack 类库为开发者提供了全面的工具集,用于构建基于 XMPP 协议的实时通信应用,无论是在桌面应用还是移动应用中,都能发挥其强大的功能。通过深入理解和熟练使用 Smack,开发者可以构建高效、稳定且功能丰富...

    android studio基于XMPP,Openfire,Smack聊天demo

    这个项目“android studio基于XMPP,Openfire,Smack聊天demo”提供了一个使用Android Studio、XMPP协议、Openfire服务器和Smack库实现的聊天应用示例。以下是关于这些关键技术的详细解释: **XMPP(Extensible ...

    安卓xmpp通讯之smack4.1.9

    XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的即时通讯协议,广泛用于实现聊天、群聊、文件共享等功能。它的设计目标是提供灵活、可扩展的通信框架,支持多种应用和设备。XMPP的核心概念包括...

    Android 基于xmpp协议,smack包,openfire服务端的高仿QQ的即时通讯实现.zip

    这个项目就是基于XMPP(Extensible Messaging and Presence Protocol)协议,使用Smack库,并结合Openfire服务器实现的。现在,我们将深入探讨这些关键组件以及如何将它们整合到Android应用中。 1. **XMPP协议**:...

    XMPP客户端Java类库:Smack

    XML即时通讯协议(Extensible Messaging and Presence Protocol,简称XMPP)是一种基于XML的开放标准,用于实现实时通讯和在线状态管理。它被广泛应用于即时消息、VoIP、文件传输等领域,尤其在企业级通信解决方案中...

    android下的XMPP对应smack-4.2.1,实现登录,注册,发单聊,加聊天室,发群聊等简单功能

    在Android平台上,XMPP(Extensible Messaging and Presence Protocol)是一种常用的即时通讯协议,它基于XML,用于构建实时、双向通信的应用。在这个项目中,我们利用Smack-4.2.1库来实现在Android上使用XMPP进行...

    基于xmpp协议的开源库smack接口api详细介绍

    Smack库是一个基于XMPP的开源库,它提供了一系列的API,用于开发可以在XMPP服务器上运行的聊天和即时消息交流程序。本文档将详细介绍基于XMPP协议的Smack接口API,对于那些英文能力有限的人来说,这份文档能够提供极...

    XMPP Smack java 聊天程序

    Smack是基于事件驱动的,大部分操作都在后台线程中执行,以避免阻塞UI。因此,你需要确保回调方法是线程安全的,或者在合适的线程上下文中处理事件。 7. **断线重连**: 为了提高应用程序的稳定性,应实现断线重...

    Smack打印XMPP协议到日志文件

    android项目中打印xmpp协议(收发的报文)到日志文件,只需将代码中使用的Log.debug替换为你自己输入到日志文件的代码即可,详情见https://blog.csdn.net/w690333243/article/details/79963639

    Android 基于xmpp协议,smack包,openfire服务端的高仿QQ的即时通讯实现.

    Android 基于xmpp协议,smack包,openfire服务端的高仿QQ的即时通讯实现。实现了注册,登录,读取好友列表,搜索好友,添加分组,添加好友,删除好友,修改心情,两个客户端之间的信息发送与接收,监听发送来的好友...

    XMPP+Openfire4.5.1+Smack4.3.4+MySql

    XMPP+Openfire4.5.1+Smack4.3.4+MySql,支持手机对手机,手机对PC(Spark)的消息收发

    xmpp——Smack的IM实现

    Spark是一个流行的XMPP客户端,它也是基于Smack构建的,展示了Smack在实际应用中的强大功能。通过学习和理解Smack库,开发者不仅可以创建自己的XMPP客户端,还可以在后端服务、移动应用甚至物联网设备中集成即时通讯...

    高仿android qq客户端 基于xmpp openfire smack

    高仿android qq客户端,基于xmpp openfire smack。难得的即时通信学习源码。 介绍链接: http://blog.csdn.net/shimiso/article/details/11225873

    smack源码,3.2版本的,基于xmpp的即时通讯客户端

    **Smack源码详解——基于XMPP的即时通讯客户端** Smack是一款开源的Java库,专为实现基于XMPP(Extensible Messaging and Presence Protocol)的即时通讯应用而设计。XMPP是一种开放标准,广泛用于创建实时通信系统...

    xmpp实现smack登录,注册,聊天功能

    android下的XMPP对应smack-4.2.1,实现登录,注册,发单聊,加聊天室,发群聊等简单功能

    基于smack连接openfire服务器的例子-JAVA

    在Java编程领域,XMPP(Extensible Messaging and Presence Protocol)是一种广泛用于实时通讯的开放标准,它基于XML,主要用于构建即时消息和在线状态服务。Openfire是基于XMPP的服务器,提供了一个强大且可扩展的...

    XMPP_Smack_Demo_Source

    XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的开放标准通信协议,主要用于即时通讯和在线状态传递。它被设计为可扩展,允许添加各种功能,如文件传输、多用户聊天和语音视频通话等。Smack是...

    Android启动Service登陆Openfire实现基于XMPP Smack的消息推送功能

    本项目“Android启动Service登陆Openfire实现基于XMPP Smack的消息推送功能”就是一个很好的示例,展示了如何利用Service和XMPP协议在Android设备上实现实时消息传递。 首先,Openfire是一款开源的XMPP服务器,它...

    即时通信源码 高仿android qq客户端 基于xmpp openfire smack.

    基于xmpp openfire smack 的即时通信客户端,高仿qq,难得的学习资源。 资源介绍:http://blog.csdn.net/shimiso/article/details/11225873

    org.xmpp.packet.JID

    在使用android openfire 作为IM服务的时候 利用第三方账号 如果第三方账号中含有@符号的话 登录会报错 可以利用这个代码进行...然后传递到openfire 在查询数据库之前进行解析 这是在openfire的源代码中找出来 [更多]

Global site tag (gtag.js) - Google Analytics