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

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是很复杂的,希望以后我能更加了解一

转载于:https://www.cnblogs.com/zmissm/archive/2013/05/10/3071552.html

androidpn的一次亲密接触(二)相关推荐

  1. 第一次亲密接触——二狗子初识 CDN

    二狗子是国内知名XXX大学的在校学生,作为一名编程爱好者,他利用业余时间搭建了一个网站,把平时的学习心得和技术分享全都 PO 在自己的网站上.渐渐地,二狗子的网站因为文章质量高,技术分享全面,受到了很 ...

  2. 与Flutter第一次亲密接触-Android 视角

    作者简介 万坤,5年安卓开发经验,16年加入饿了么,现任职饿了么资深安卓开发工程师,负责饿了么物流安卓相关APP线上的高稳定运行. 前言 Flutter在今年6月份发布第一个Release预览版以来, ...

  3. [360] 《如何保持电力接触网与受电弓亲密接触》

    在列车运行过程中,总希望受电弓与接触线能够始终保持亲密接触.从原理上来说,弓网关系最好的情况莫过于让电流从接触网可靠稳定的"漏"到受电弓上,所以受电弓升起的时候"电弓与电 ...

  4. 《民富论》之读后感--与创业的第一次亲密接触

    <民富论>之读后感        ――与创业的第一次亲密接触 前一段时间读了一本<穷爸爸,富爸爸>的书,开始对理财有了兴趣,同时也是因为具备了理财的条件――资产已经由负转正,可 ...

  5. 与chatGPT的第一次亲密接触

    最近,chatGPT火了,不管传统媒体,还是各种自媒体平台都在说它.今天我突然也想注册一个玩玩,注册前2步还行,但是等点开邮箱校验时,打开网页显示: 上网查了一下,没向中国开放服务:如要注册除了要邮箱 ...

  6. day01 与MySQL的第一次亲密接触基础查询条件查询

    <尚硅谷>MySQL系统课程一共6天,下面介绍第1天的学习内容,主要涉及MySQL的内容介绍.进阶1基础查询和进阶2条件查询.干货满满,跟着课程的进度来的,可能篇幅略长,但是看完一定会有收 ...

  7. 001我和Python的第一次亲密接触

    001我和Python的第一次亲密接触 一.测试题 二.动动手 总结 一.测试题 Python 是什么类型的语言? A:脚本语言 IDLE 是什么? A:IDLE是一个Python Shell,就是一 ...

  8. 001我和Python的第一次亲密接触(根据小甲鱼视频编写)

    001我和Python的第一次亲密接触(根据小甲鱼视频编写) IDLE是一个Python Shell,Shell的意思是"外壳",基本上来说就是通过键入文本与程序交互的途径. &g ...

  9. 我与python第一次亲密接触

    我与python第一次亲密接触 由于项目中要解析python生成的日志文件,于是今天下班回来后就打算在自己的笔记本上先把python开发环境搭建好,在网上查了些资料之后决定开始动手实践了.由于我笔记本 ...

最新文章

  1. Rocksdb iterator和snapshot 接口
  2. 如何在Android上管理startActivityForResult?
  3. Go语言程序结构分析初探
  4. 史上最详细Docker安装Elasticsearch、ik分词器、可视化工具,每一步都带有步骤图!!!
  5. 磁盘阵列,双机热备,负载均衡
  6. 20170908校内训练
  7. Jupyter notebook: TypeError: __init__() got an unexpected keyword argument 'io_loop 问题
  8. SAP License:家庭主妇与ERP
  9. Dockerfile best practices
  10. 算法排序代码(简单排序)
  11. 【Prescan学习】Prescan环境配置(介绍+安装+学习资源)
  12. Qt:Label(添加文字、图片、gif动图、网站链接)、添加文件资源、添加LCD显示、添加进度条
  13. 用c语言编写定时器程序,C语言怎么实现定时器
  14. 【Rust日报】2021-10-06 [Rust游戏] - 自走棋
  15. 扬帆牧哲-跨境电商的新路径
  16. PHP: Fatal error:Call to undefined function com_create_guid()
  17. html5 文字滑动效果,jQuery滑动文字特效
  18. 索引原理-索引数据结构
  19. 01-计算机网络术语中英文对照
  20. 中学物理教学参考杂志社中学物理教学参考编辑部2022第9期目录

热门文章

  1. android+图标+i_explore+无背景,Android Studio中Android Device Monitor中的File Explore不显示文...
  2. linux天气软件,类似智能手机!Linux中安装Conky天气插件
  3. 基础的shell编程问题(一)
  4. leetcode189. 旋转数组
  5. epoll的再次认识
  6. 单元测试中使用Mockito模拟对象
  7. 一个简单JavaAgent的实现
  8. Android设计模式之——中介者模式
  9. Docker CEO Ben Golub:Docker借助开源、天时走向成功
  10. 互联网产品用户体验设计的三大定律