简单看了一下源码的实现,这里贴一点个人觉得比叫重要的代码。
2012-04-17 19:53
573 查看
简单看了一下源码的实现,这里贴一点个人觉得比叫重要的代码。
XmppManager.java
构造方法:
Java代码
public XmppManager(NotificationService notificationService)
在这里主要是从共享引用中取得xmpp服务器地址和端口号、用户名和密码。
内部类
Java代码
private class ConnectTask
implements Runnable
这个内部类主要实现的是连接服务器的操作。通过connection.connect();实现连接服务器。通过如下语句实现发送连接消息。
Java代码
ProviderManager.getInstance().addIQProvider("notification",
"androidpn:iq:notification",
new NotificationIQProvider());
最后通过xmppManager.runTask();执行任务队列中的任务。
内部类
Java代码
private class RegisterTask
implements Runnable
这个内部类主要实现的是在服务器上注册用户的操作。如果没有注册,随即生成用户名和密码注册到服务器上。同样通过connection.sendPacket(registration);发送消息实现注册功能。
内部类
Java代码
private class LoginTask
implements Runnable
这个内部类主要实现的是用户的登录操作。通过注册到服务器上的用户名和密码登录到服务器上。最后通过connection.addPacketListener(packetListener, packetFilter);实现消息的监听。最后一样通过xmppManager.runTask();在消息队列中执行任务(执行这个线程)。这个类就是实现服务器推动的主要类。
上述为客户端的实现。总的来说客户端仍然是通过xmpp协议实现消息的传输。值得注意的是在NotificationService这个类中(TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);方法取得了系统的消息的相关服务。主要为类是取得设备的ID,但我在源码中没有看到使用这个设备ID的地方。很是不解,看来还是需要继续深入的研究。
哈哈。到现在为止,总共完成了对openfire开发环境、openfire插件的制作、smack和openfire通信、androidpn的部署方式以及androidpn的使用方法的研究调研工作。对这些方面都是停留在皮毛,希望以后可以通过实际应用可以学到更加深层次的东西。对了,听一位业内人士说,xmpp是很复杂的,希望以后我能更加了解一点。
明天研究写什么呢?明天可能要计划一下怎么把公司现有的工作流做到android上来。
http://yangzc106.iteye.com/blog/1101662
XmppManager.java
构造方法:
Java代码
public XmppManager(NotificationService notificationService)
public XmppManager(NotificationService notificationService)
在这里主要是从共享引用中取得xmpp服务器地址和端口号、用户名和密码。
内部类
Java代码
private class ConnectTask
implements Runnable
private class ConnectTask implements Runnable
这个内部类主要实现的是连接服务器的操作。通过connection.connect();实现连接服务器。通过如下语句实现发送连接消息。
Java代码
ProviderManager.getInstance().addIQProvider("notification",
"androidpn:iq:notification",
new NotificationIQProvider());
ProviderManager.getInstance().addIQProvider("notification", "androidpn:iq:notification", new NotificationIQProvider());
最后通过xmppManager.runTask();执行任务队列中的任务。
内部类
Java代码
private class RegisterTask
implements Runnable
private class RegisterTask implements Runnable
这个内部类主要实现的是在服务器上注册用户的操作。如果没有注册,随即生成用户名和密码注册到服务器上。同样通过connection.sendPacket(registration);发送消息实现注册功能。
内部类
Java代码
private class LoginTask
implements Runnable
private class LoginTask implements Runnable
这个内部类主要实现的是用户的登录操作。通过注册到服务器上的用户名和密码登录到服务器上。最后通过connection.addPacketListener(packetListener, packetFilter);实现消息的监听。最后一样通过xmppManager.runTask();在消息队列中执行任务(执行这个线程)。这个类就是实现服务器推动的主要类。
上述为客户端的实现。总的来说客户端仍然是通过xmpp协议实现消息的传输。值得注意的是在NotificationService这个类中(TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);方法取得了系统的消息的相关服务。主要为类是取得设备的ID,但我在源码中没有看到使用这个设备ID的地方。很是不解,看来还是需要继续深入的研究。
哈哈。到现在为止,总共完成了对openfire开发环境、openfire插件的制作、smack和openfire通信、androidpn的部署方式以及androidpn的使用方法的研究调研工作。对这些方面都是停留在皮毛,希望以后可以通过实际应用可以学到更加深层次的东西。对了,听一位业内人士说,xmpp是很复杂的,希望以后我能更加了解一点。
明天研究写什么呢?明天可能要计划一下怎么把公司现有的工作流做到android上来。
http://yangzc106.iteye.com/blog/1101662
相关文章推荐
- 用C代码简要模拟实现一下RPC(远程过程调用)并谈谈它在代码调测中的重要应用
- JS基于ocanvas插件实现的简单画板效果代码(附demo源码下载)
- Cocos2d-x简单游戏<植物大战僵尸>代码实现|第三部分:通关场景<后续会提供源码下载链接>
- Cocos2d-x简单游戏<植物大战僵尸>代码实现|第九部分:游戏场景GameScene.cpp<后续会提供源码下载链接>
- HTML5源码-实现一个简单的个人主页
- TabHost的使用【个人觉得碎片实现更好一点】
- Cocos2d-x简单游戏<植物大战僵尸>代码实现|第四部分:通关失败场景<后续会提供源码下载链接>
- 网上一堆代码,没有一个真正实现curl传图片成功过的,这儿,我来个成功的,超级简单,扩展性强【广告一下】
- HttpRequest的公开属性绝大部分都是比较重要的,这里就简单地列举一下吧
- Cocos2d-x简单游戏<植物大战僵尸>代码实现|第六部分:植物类<后续会提供源码下载链接>
- (C语言版)链表(一)——实现单向链表创建、插入、删除等简单操作(包含个人理解说明及注释,新手跟着写代码)
- 一款支持插入表情的编辑器实现代码(简单思路挺重要)
- (C语言版)链表(一)——实现单向链表创建、插入、删除等简单操作(包含个人理解说明及注释,新手跟着写代码)
- Cocos2d-x简单游戏<植物大战僵尸>代码实现|第七部分:僵尸类<后续会提供源码下载链接>
- (C语言版)链表(一)——实现单向链表创建、插入、删除等简单操作(包含个人理解说明及注释,新手跟着写代码)
- Cocos2d-x简单游戏<植物大战僵尸>代码实现|第一部分:开始场景<后续会提供源码下载链接>
- Cocos2d-x简单游戏<植物大战僵尸>代码实现|第八部分:子弹类<后续会提供源码下载链接>
- 结合微软的部分代码再加上自己整理的代码实现的一个我个人觉得很强大的序列化/反序化类
- Cocos2d-x简单游戏<植物大战僵尸>代码实现|第二部分:菜单场景<后续会提供源码下载链接>
- Cocos2d-x简单游戏<植物大战僵尸>代码实现|第五部分:公用类<后续会提供源码下载链接>