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

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. SpringBoot 框架中 使用Spring Aop 、创建注解、创建枚举类 使用过程记录
  2. android多线程断点续传
  3. 数据库:B+树索引和Hash索引得区别
  4. Java文件能编译成lib吗_Makefile用于将一些.cpp和.h编译成lib
  5. altium恢复所有默认设置_windows10技巧 恢复出厂状态的4种方法
  6. 使用老毛桃U盘重装Windows10系统
  7. 过年,你肯定会用到这款小程序!
  8. 清理垃圾代码bat_来买个小内存u盘么咯?盘内带电脑垃圾清理.bat那种丨heibai.org...
  9. WordPress忘记密码的5种解决方法
  10. win2012iis php,Win2012 R2 IIS8.5+PHP(FastCGI)+MySQL运行环境搭建教程
  11. c语言标识符的规范,初识C语言-声明和使用变量、标识符的命名规范以及基本数据类型...
  12. tomcat-maven-plugin 2.0版本发布
  13. Mac上几款好用磁盘分析备份管理工具
  14. PLSQL Developer详细安装步骤
  15. 为什么视锥剔除重要,却又不重要 | Why Frustum Culling Matters, and Why It‘s Not Important
  16. 2019 live tex 发行版_下载和安装Texlive2019
  17. 瑞幸咖啡,成败今年见分晓!
  18. 利用datafaker批量生成测试数据
  19. JAVA——算法训练 调和数列问题
  20. vant area地区选择组件使用方法

热门文章

  1. Apollo进阶课程 ⑮丨Apollo自动定位技术详解—百度无人车定位技术
  2. SM3密码杂凑算法源码解析
  3. oracle的脚本语言是什么意思,Oracle中的sql脚本语言中的循环语句介绍
  4. java对象模型 指令_深入理解多线程(二)—— Java的对象模型
  5. html自定义标记,HTML模板(自定义)标记
  6. pandasStudyNoteBook
  7. android7.0提示定位,解决android7.0上某些PopuWindow显示位置不正确的问题
  8. 纠偏的意思_承压能力和纠偏能力,决定成长的高度
  9. 布朗桥python_MATLAB 里面有哪些加快程序运行速度的方法呢,求分享?
  10. Linux 安装 jdk ( 两种方式 )