androidpn的一次亲密接触(二)

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

 

XmppManager.java

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

 

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

 

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

 

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

 

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

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

 

  • 内部类
Java代码  收藏代码
  1. private class RegisterTask implements Runnable  
  这个内部类主要实现的是在服务器上注册用户的操作。如果没有注册,随即生成用户名和密码注册到服务器上。同样通过connection.sendPacket(registration);发送消息实现注册功能。
 
  • 内部类
Java代码  收藏代码
  1. 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是很复杂的,希望以后我能更加了解一
posted @ 2013-05-10 17:14  溜溜小毛驴  阅读(219)  评论(0编辑  收藏  举报