基于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();
}
}
}
分享到:
相关推荐
总之,Smack 类库为开发者提供了全面的工具集,用于构建基于 XMPP 协议的实时通信应用,无论是在桌面应用还是移动应用中,都能发挥其强大的功能。通过深入理解和熟练使用 Smack,开发者可以构建高效、稳定且功能丰富...
这个项目“android studio基于XMPP,Openfire,Smack聊天demo”提供了一个使用Android Studio、XMPP协议、Openfire服务器和Smack库实现的聊天应用示例。以下是关于这些关键技术的详细解释: **XMPP(Extensible ...
XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的即时通讯协议,广泛用于实现聊天、群聊、文件共享等功能。它的设计目标是提供灵活、可扩展的通信框架,支持多种应用和设备。XMPP的核心概念包括...
这个项目就是基于XMPP(Extensible Messaging and Presence Protocol)协议,使用Smack库,并结合Openfire服务器实现的。现在,我们将深入探讨这些关键组件以及如何将它们整合到Android应用中。 1. **XMPP协议**:...
XML即时通讯协议(Extensible Messaging and Presence Protocol,简称XMPP)是一种基于XML的开放标准,用于实现实时通讯和在线状态管理。它被广泛应用于即时消息、VoIP、文件传输等领域,尤其在企业级通信解决方案中...
在Android平台上,XMPP(Extensible Messaging and Presence Protocol)是一种常用的即时通讯协议,它基于XML,用于构建实时、双向通信的应用。在这个项目中,我们利用Smack-4.2.1库来实现在Android上使用XMPP进行...
Smack库是一个基于XMPP的开源库,它提供了一系列的API,用于开发可以在XMPP服务器上运行的聊天和即时消息交流程序。本文档将详细介绍基于XMPP协议的Smack接口API,对于那些英文能力有限的人来说,这份文档能够提供极...
Smack是基于事件驱动的,大部分操作都在后台线程中执行,以避免阻塞UI。因此,你需要确保回调方法是线程安全的,或者在合适的线程上下文中处理事件。 7. **断线重连**: 为了提高应用程序的稳定性,应实现断线重...
android项目中打印xmpp协议(收发的报文)到日志文件,只需将代码中使用的Log.debug替换为你自己输入到日志文件的代码即可,详情见https://blog.csdn.net/w690333243/article/details/79963639
Android 基于xmpp协议,smack包,openfire服务端的高仿QQ的即时通讯实现。实现了注册,登录,读取好友列表,搜索好友,添加分组,添加好友,删除好友,修改心情,两个客户端之间的信息发送与接收,监听发送来的好友...
XMPP+Openfire4.5.1+Smack4.3.4+MySql,支持手机对手机,手机对PC(Spark)的消息收发
Spark是一个流行的XMPP客户端,它也是基于Smack构建的,展示了Smack在实际应用中的强大功能。通过学习和理解Smack库,开发者不仅可以创建自己的XMPP客户端,还可以在后端服务、移动应用甚至物联网设备中集成即时通讯...
高仿android qq客户端,基于xmpp openfire smack。难得的即时通信学习源码。 介绍链接: http://blog.csdn.net/shimiso/article/details/11225873
**Smack源码详解——基于XMPP的即时通讯客户端** Smack是一款开源的Java库,专为实现基于XMPP(Extensible Messaging and Presence Protocol)的即时通讯应用而设计。XMPP是一种开放标准,广泛用于创建实时通信系统...
android下的XMPP对应smack-4.2.1,实现登录,注册,发单聊,加聊天室,发群聊等简单功能
在Java编程领域,XMPP(Extensible Messaging and Presence Protocol)是一种广泛用于实时通讯的开放标准,它基于XML,主要用于构建即时消息和在线状态服务。Openfire是基于XMPP的服务器,提供了一个强大且可扩展的...
XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的开放标准通信协议,主要用于即时通讯和在线状态传递。它被设计为可扩展,允许添加各种功能,如文件传输、多用户聊天和语音视频通话等。Smack是...
本项目“Android启动Service登陆Openfire实现基于XMPP Smack的消息推送功能”就是一个很好的示例,展示了如何利用Service和XMPP协议在Android设备上实现实时消息传递。 首先,Openfire是一款开源的XMPP服务器,它...
基于xmpp openfire smack 的即时通信客户端,高仿qq,难得的学习资源。 资源介绍:http://blog.csdn.net/shimiso/article/details/11225873
在使用android openfire 作为IM服务的时候 利用第三方账号 如果第三方账号中含有@符号的话 登录会报错 可以利用这个代码进行...然后传递到openfire 在查询数据库之前进行解析 这是在openfire的源代码中找出来 [更多]