基于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();
}
}
}
分享到:
相关推荐
android studio 基于XMPP,Openfire,Smack聊天demo 基于openfire3.9.3
关于Smack编程库,前面我们提到,它是面向Java端的api,主要在PC上使用,利用它我们可以向openfire服务器注册用户,发送消息,并且可以通过监听器获得此用户的应答消息,以及构建聊天室,分组,个人通讯录等等。
Android 基于xmpp协议,smack包,openfire服务端的高仿QQ的即时通讯实现.zip
安卓xmpp聊天之文件传输
android项目中打印xmpp协议(收发的报文)到日志文件,只需将代码中使用的Log.debug替换为你自己输入到日志文件的代码即可,详情见https://blog.csdn.net/w690333243/article/details/79963639
基于xmpp协议的开源库smack接口api详细介绍 对于英文不好的孩纸非常有帮助的~
Android 基于xmpp协议,smack包,openfire服务端的高仿QQ的即时通讯实现。实现了注册,登录,读取好友列表,搜索好友,添加分组,添加好友,删除好友,修改心情,两个客户端之间的信息发送与接收,监听发送来的好友...
XMPP+Openfire4.5.1+Smack4.3.4+MySql,支持手机对手机,手机对PC(Spark)的消息收发
android下的XMPP对应smack-4.2.1,实现登录,注册,发单聊,加聊天室,发群聊等简单功能
xmpp协议,使用smack实现的 博文见http://blog.csdn.net/wklken/article/details/6460075
基于XMPP 协议的Java聊天示例程序,已在本人机子上测试成功!
高仿android qq客户端,基于xmpp openfire smack。难得的即时通信学习源码。 介绍链接: http://blog.csdn.net/shimiso/article/details/11225873
android下的XMPP对应smack-4.2.1,实现登录,注册,发单聊,加聊天室,发群聊等简单功能
Smack是一个开源的、易于使用的XMPP客户端Java类库,提供了一套可扩展的API。
基于Smack3.0.4+ Openfire3.10.2开发之Android 客户端之三(用户登入、用户注册与XMPP 服务器交互)。
基于xmpp openfire smack 的即时通信客户端,高仿qq,难得的学习资源。 资源介绍:http://blog.csdn.net/shimiso/article/details/11225873
在使用android openfire 作为IM服务的时候 利用第三方账号 如果第三方账号中含有@符号的话 登录会报错 可以利用这个代码进行...然后传递到openfire 在查询数据库之前进行解析 这是在openfire的源代码中找出来 [更多]
关于XMPP协议的smack开源框架源码分析,附带demo,注释,写的不是很好,有待完善,后期会上传
xmppClient 基于openfire和smack的安卓客户端 todo 增加文档 优化tablayout图标 增加通知 完成发现,我界面 运行截图 运行截图
xmpp 个人总结 openfie smack