`
104zz
  • 浏览: 1507958 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
阅读更多

在开发Android和iPhone应用程序时,我们往往需要从服务器不定的向手机客户端即时推送各种通知消息,iPhone上已经有了比较简单的和完美的推送通知解决方案,可在Android平台上实现起来却相对比较麻烦,最近就对Android的推送通知服务进行初步的研究。

 

在Android手机平台上,Google提供了C2DM(Cloudto Device Messaging)服务,起初我就是准备采用这个服务来实现Android手机上的推送功能。

Android Cloud to Device Messaging (C2DM)是一个用来帮助开发者从服务器向Android应用程序发送数据的服务。该服务提供了一个简单的、轻量级的机制,允许服务器可以通知移动应用程序直接与服务器进行通信,以便于从服务器获取应用程序更新和用户数据。C2DM服务负责处理诸如消息排队等事务并向运行于目标设备上的应用程序分发这些消息。

但这个服务存在很大的问题:

1、C2DM内置于Android的2.2系统上,无法兼容老的1.5到2.1系统;

2、C2DM需要依赖于Google官方提供的C2DM服务器,由于国内的网络环境,这个服务经常不可用,如果想要很好的使用,我们的App Server必须也在国外。这个可能不是每个开发者或公司能实现的。

所以最终我放弃了这个方案。采用XMPP协议实现Android推送,事实上Google官方的C2DM服务器底层也是采用XMPP协议进行的封装。

XMPP(可扩展通讯和表示协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线探测。这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息。

androidpn是一个基于XMPP协议的java开源Android push notification实现。它包含了完整的客户端和服务器端。

 

androidpn的实现示意图如下:

 

androidpn客户端需要用到一个基于java的开源XMPP协议包asmack,这个包同样也是基于openfire下的另外一个开源项目smack,不过我们不需要自己编译,可以直接把androidpn客户端里面的asmack.jar拿过来用。客户端利用asmack中提供的XMPPConnection类与服务器建立持久连接,并通过该连接进行用户注册和登录认证,同样也是通过这条连接,接收服务器发送的通知。

androidpn服务器端也是java语言实现的,基于openfire开源工程,它的Web部分采用的是spring框架。Androidpn服务器包含两个部分,一个是侦听在5222端口上的XMPP服务,负责与客户端的XMPPConnection类进行通信,作用是用户注册和身份认证,并发送推送通知消息。另外一部分是Web服务器,采用一个轻量级的HTTP服务器,负责接收用户的Web请求。服务器架构如下:

最上层包含四个组成部分,分别是SessionManager,Auth Manager,PresenceManager以及Notification Manager。SessionManager负责管理客户端与服务器之间的会话,Auth Manager负责客户端用户认证管理,Presence Manager负责管理客户端用户的登录状态,NotificationManager负责实现服务器向客户端推送消息功能。

服务器端界面如下,分别对应了上述的几个功能模块:

 

 

 

 下载了客户端代码后需修改androidpn.properties文件中的xmppHost的地址,如下:

 

点击Submit发送以后,可以在Android手机端看到接收的消息如下

点击OK按钮可以进行相应的URI跳转。

该解决方案的最大优势就是简单,并且避免了C2DM的两个问题。利用XMPP协议我们还可以进一步的对协议进行扩展,实现更完善的功能。

更多信息:http://androidpn.sourceforge.net

分享到:
评论

相关推荐

    基于XMPP协议的Android消息推送设计与实现.pdf

    五、基于XMPP协议的消息推送实现 本文实现了基于XMPP协议的消息推送,使用MySQL数据库和Tomcat服务器实现了实时推送消息、自定义消息结构和内容、推送服务启动、手机端服务唤醒、发送离线消息等实用技术。 六、结论...

    android 基于xmpp协议的消息推送源码

    android 基于xmpp协议的消息推送源码,服务端代码直接导入eclipse,并部署,通过console界面推送消息,Android客户端就能时时的收到消息。(文件夹内的自己测试使用的代码是经过自己修改过后可以使用)

    Android基于XMPP协议的数据推送技术

    Android基于XMPP协议的数据推送技术 Android基于XMPP协议的数据推送技术

    Android基于XMPP协议的数据推送技术.pdf

    Android基于XMPP协议的数据推送技术是实现服务器与客户端即时通信的一种有效方式。XMPP(Extensible Messaging and Presence Protocol),即可扩展消息和出席协议,是一种开放标准的即时通信协议,基于XML流。XMPP...

    android基于xmpp实现消息推送1--相关文档

    本文将深入探讨如何在Android上基于XMPP协议实现消息推送,以及相关的技术细节。 首先,理解XMPP的基本原理是至关重要的。XMPP建立在TCP连接之上,通过XML流传输数据,使得服务器和客户端能够进行双向通信。它提供...

    基于XMPP协议的Android消息推送的分析与设计.pdf

    对推送系统所用到的XMPP 协议和技术做了全面的阐述,重点研究了XMPP 协议结构、内容和通讯过程.在此基础上,对Android 消息推送进行需求分析,然后对Android 端和服务器端进行了概要设计和系统整体架构设计,便于...

    android消息推送 客户端与服务器端(XMPP协议)

    总结,使用XMPP协议实现Android消息推送,需要理解XMPP的工作原理,同时在客户端和服务器端进行相应设置。在整个过程中,安全性和性能优化是至关重要的,确保了消息的准确、及时传递,并提供了稳定的服务。

    MQTT协议实现android消息推送

    **MQTT协议实现Android消息推送** 在移动应用开发中,实时消息推送是一项关键功能,它能让用户及时接收到新信息、通知或者系统更新等。本文将深入探讨如何使用MQTT(Message Queuing Telemetry Transport)协议来...

    基于XMPP协议的消息推送(内含有服务器和客户端)一看就懂 简单实用

    **XMPP协议详解** ...通过`androidpn-server-0.5.0`和`androidpn-client-0.5.0`,我们可以构建一个完整的基于XMPP的Android消息推送系统,让开发者能够高效地实现实时通信功能,同时为用户提供流畅的用户体验。

    采用MQTT协议实现Android消息推送.docx

    本文将探讨如何采用MQTT协议实现Android消息推送,并对比其他几种常见的推送方案,包括GCM服务、XMPP协议和HTTP轮循方式。MQTT协议因其轻量级、高效和低耗能的特性,成为Android消息推送的理想选择。 首先,我们来...

    Android源码基于Xmpp的消息推送

    总的来说,AndroidPN是一个利用Xmpp协议在Android设备上实现消息推送的示例。通过理解和实现这个项目,开发者可以深入学习Android服务、BroadcastReceiver、网络通信以及即时通讯协议Xmpp的相关知识,这对于构建具有...

    Android实现推送方式解决方案系列教程

    在探讨Android实现推送方式解决方案的过程中,我们聚焦于XMPP协议这一关键知识点,深入解析其在Android推送机制中的应用。XMPP(Extensible Messaging and Presence Protocol)作为一种基于XML的即时通讯协议,不仅...

    android xmpp的消息推送

    本文将深入探讨基于XMPP(Extensible Messaging and Presence Protocol)的Android消息推送技术,以及如何实现客户端和服务器端的交互。 XMPP是一种开放标准的即时通讯协议,主要用于实时通讯和在线状态感知。它的...

    android xmpp推送

    2. **Android推送需求**:在Android上,当应用不在前台运行时,常规的推送通知服务(如Google Firebase Cloud Messaging, GCM或其继任者Firebase Cloud Messaging, FCM)可以向用户发送通知。然而,对于更复杂的交互...

    XMPP推送技术

    **Android推送原理** 在Android平台上,实现XMPP推送需要结合Google的GCM(Google Cloud Messaging)或FCM(Firebase Cloud Messaging)。虽然GCM已被FCM取代,但两者都利用XMPP协议与服务器交互。 1. **初始化**:...

    xmpp手机端消息推送

    开发者可以研究这些代码,了解如何与Openfire服务器进行交互,以及如何在手机端实现消息推送功能。同时,调试和优化网络连接、消息处理速度以及电池效率也是重要的实践环节。 总之,基于Openfire的XMPP手机端消息推...

Global site tag (gtag.js) - Google Analytics