简单看了一下源码的实现,这里贴一点个人觉得比叫重要的代码。

简单看了一下源码的实现,这里贴一点个人觉得比叫重要的代码。

XmppManager.java

  • 构造方法:
Java代码 复制代码 收藏代码
  1. public XmppManager(NotificationService notificationService) 
public XmppManager(NotificationService notificationService)

在这里主要是从共享引用中取得xmpp服务器地址和端口号、用户名和密码。

  • 内部类
Java代码 复制代码 收藏代码
  1. private class ConnectTask implements Runnable 
private class ConnectTask implements Runnable

这个内部类主要实现的是连接服务器的操作。通过connection.connect();实现连接服务器。通过如下语句实现发送连接消息。

Java代码 复制代码 收藏代码
  1. ProviderManager.getInstance().addIQProvider("notification"
  2.                             "androidpn:iq:notification"
  3.                             new NotificationIQProvider()); 
ProviderManager.getInstance().addIQProvider("notification",
                            "androidpn:iq:notification",
                            new NotificationIQProvider());

最后通过xmppManager.runTask();执行任务队列中的任务。

  • 内部类
Java代码 复制代码 收藏代码
  1. private class RegisterTask implements Runnable 
 private class RegisterTask implements Runnable
  这个内部类主要实现的是在服务器上注册用户的操作。如果没有注册,随即生成用户名和密码注册到服务器上。同样通过connection.sendPacket(registration);发送消息实现注册功能。

  • 内部类
Java代码 复制代码 收藏代码
  1. 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
 

你可能感兴趣的:(android,服务器,xmpp,class,java,smack,任务)