`
cctvhuan
  • 浏览: 1589 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

androidpn 作为Android推送方案存在的问题

阅读更多

如果百度或者Google搜索 “android 推送” 关键字,相当一部分文章都在说到 androidpn。也可以看到有人说用起来了,有人在吐槽说不稳定、功能缺失,维护工作量大。本文尝试对 androidpn 的前世今生做个汇总分析。
访问 androidpn官方网站,我们可以了解到如下的基本信息:
androidpn 全称是 Android Push Notification。
这是韩国人开源放在 sourceforge.net 上的一个开源项目,文档是韩文的。
最近的版本更新时间是 2010-11-05,也就是约二年之前。
来自中国的访问量,占其总访问量的 81%。请点击本链接再看当前的统计。
以上的基本信息表明,这不是一个很成熟的项目(貌似个人维护的),但是确有大量的中国人有兴趣。
相信有不少同学知道为什么国人对 androidpn 这么感兴趣,这是国情啊:因为Google官方的 GCM(之前叫C2DM)在国内使用不了。另外,国内之前又没有可用好用的第三方推送服务。所以,大家不得已而为之:自己搞。从头开始?工作量太大,太不划算了。所以从开源的开始。而也恰好,开源项目里,明确地为 Android Push来生的,也就 androidpn了。mqtt 里没有整合这么好可以快速跑起来的。

但 androidpn 搭建起来后,情况如何呢?CSDN上一个美女程序员的文章 androidpn推送初探 比较热。这篇文章里作者提出来几个问题:
androidpn服务器收到消息后如何知道要发给哪个用户?
一旦服务器重启了,客户端似乎不会自动重连,需要用户自己中断后台Service再重启应用。
androidpn服务器不保存消息。就是说它一有消息就会发出去,即使客户端根本不在线,它也不会重发。
作者赞在于,不只是满足于把环境搭建起来,而且针对业务需求做了思考。解析下她提出的问题:

第一个问题相对简单,要去定制下用户体系,业务部分的用户体系需要与 androidpn 对应起来。
第二个问题,是个小细节,androidpn 客户端没有去做这些细节。
第三个问题,是最重要的。androidpn 背后的 Openfire,是 XMPP IM服务器,消息内容是不会落地的,即只在内存里保存一下离线消息。如果要生产用,需要考虑改造这里。
以下从 androidpn 的技术基础来个深入的剖析。

androidpn 是一个整合方案,它是基于 XMPP 开源组件的 。即服务器端基于 Openfire,客户端基于 Smack ,这二个是 XMPP 开源组件里最常见的两个。androidpn使用Spring框架做了个Web层,把XMPP IM组件集成起来,以实现Android Push功能。因此,androidpn的可用性来自于如下几个方面:
其依赖的XMPP IM协议与通讯机制,是否适合用于Android Push场景。
其是否为Android Push需求做了必要的定制。
第一个方面,XMPP协议与开源组件。XMPP是个成熟的IM(即时通讯)协议,基于XML文本方式实现,灵活强大。国外大多数聊天服务都是基于 XMPP的,比如:Gtalk,Facebook Chat,iMessage等。正因为如此,所以XMPP的一些开源组件可用性还不错,国内很多新兴的聊天工具刚开始完全基于XMPP开源组件来开发,比如米聊。
但是,以笔者曾经实现过移动聊天App的类似经历来说,XMPP开源组件有其问题,需要大范围改造:
XMPP协议复杂冗余,客户端费流量、费电;
开源的XMPP服务器(androidpn选择的是Openfire)单点容量有限,集群方案复杂、不成熟。
基于这些原因,并考虑到大范围改造技术上更不可控,所以笔者所在的团队刚开始用XMPP开源方案,后来完全切到自己实现的技术方案上了。

第二个方面,Android Push的需求场景,除了消息能够及时地推送到客户端,还有什么其他的基本需求呢?这里试举两个例子:其一,确保消息能够到达。即是否能有机制确保消息不会丢失,不管什么原因。其二,向指定的一群人推送消息。anroidpn的基础XMPP IM组件是没有考虑这些的,需要做大量的定制改造。

总结起来,使用androidpn可以简单地做到:把消息推送到客户端。但是,要使其适合开发者需要,并在生产环境上运行,则可能需要做很多定制开发工作。从笔者与多个开发者交流得到的反馈来看,在生产环境里运行起来问题很多。
分享到:
评论

相关推荐

    androidpn-client推送客户端

    AndroidPN(Android Push Notification)客户端...总之,AndroidPN客户端是实现Android设备推送通知功能的重要工具,涉及了网络通信、消息处理、权限管理等多个技术领域,为开发者提供了高效、可靠的通知推送解决方案。

    androidpn离线推送

    AndroidPN离线推送是一种在Android平台上实现的消息推送技术,它允许应用在用户设备处于离线状态时仍能接收到服务器发送的通知。这个技术的核心在于优化应用程序的通信效率,提高用户体验,尤其是在用户没有打开应用...

    用androidpn来实现推送

    而AndroidPN作为一种基于XMPP协议的推送解决方案,在解决这些问题上展现出了其独特的优势。 #### 二、AndroidPN推送机制概述 AndroidPN是一个开源项目,它提供了一种用于Android设备的消息推送服务。其核心优势...

    androidpn 消息推送客户端+服务器端

    总之,AndroidPN是一个强大的开源解决方案,它利用XMPP协议实现了Android设备的消息推送功能。理解其客户端和服务器端的运作机制,可以帮助开发者更有效地集成推送通知到自己的应用程序中。同时,熟悉XMPP协议和...

    androidpn 推送系统

    AndroidPN(Android Push Notification)是一种基于Android平台的推送通知服务,它允许开发者向用户的设备发送实时消息,即使应用在后台或完全关闭的状态下也能接收到这些消息。这种服务对于提高用户体验,保持应用...

    Androidpn推送增强版

    AndroidPN(Android Push Notification)是专门为Android平台设计的一款推送服务,旨在提高应用程序的实时通信效率,减少应用在后台运行时对系统资源的占用。增强版的AndroidPN在基础功能上进行了优化,提供了更加...

    Android推送实现方案探讨

    ### Android推送实现方案探讨 #### 背景与概述 随着移动互联网的迅速发展,智能手机已成为人们日常生活中不可或缺的一部分。在此背景下,推送技术作为一种能够实时向用户传递信息的关键技术,在移动应用开发中扮演...

    android推送开源框架

    AndroidPN,全称为Android Push ...总之,AndroidPN为Android开发者提供了一套强大而灵活的推送解决方案,简化了远程通知的实现,使得开发者能够专注于应用的核心功能,同时确保用户能够及时收到重要更新和消息。

    Android消息推送的完美解决方案

    开源项目如AndroidPN利用XMPP实现了Android推送,但它可能存在延迟和稳定性问题,且不负责确认消息是否成功送达。 综合考虑,选择合适的推送解决方案应考虑以下因素:网络环境、服务器稳定性、性能需求、成本和开发...

    androidPN推送服务器

    AndroidPN(Android Push Notification)是一个为Android设备提供实时消息推送服务的开源项目。它允许开发者通过服务器向安装了特定应用的Android设备发送通知,无需保持应用程序在后台运行,从而节省设备资源并提高...

    Androidpn tomcat版本

    总的来说,AndroidPN结合Tomcat版本的推送服务,提供了可靠且可扩展的Android推送解决方案。开发者可以通过理解和配置这一系统,实现自己的推送服务,为Android应用增加实时性和互动性。不过,随着Google的GCM...

    androidpn推送

    总之,AndroidPN结合了Android平台和XMPP协议的优势,提供了一种高效且灵活的推送解决方案。对于客户端开发者来说,理解和优化上述关键点是提高推送服务稳定性和用户体验的关键。同时,服务器端的配置和维护也是保证...

    【整理】解刨AndroidPN消息推送.pdf

    在这个过程中,AndroidPN(Android Push Notification)是其中一种流行的消息推送服务解决方案,通常应用于Android平台,但也可以跨平台使用。AndroidPN项目由韩国开发者SehwanNo开发,是一个开源的项目,支持消息推...

    androidpn:Android的推送通知服务

    **AndroidPN:Android推送通知服务** AndroidPN,全称为Android Push Notification Service,是一个开源项目,专为Android设备设计,提供推送通知功能。基于XMPP(Extensible Messaging and Presence Protocol)...

    Androidpn 推送

    【Androidpn 推送】是针对Android平台设计的一种远程推送通知服务,它允许开发者向用户的Android设备发送消息,即使应用程序在后台运行或者被关闭。这一技术对于提高用户体验和保持应用的实时性至关重要,因为它能够...

    Android推送实现

    `androidpn`是一个基于XMPP协议的开源Android推送通知项目,提供了较为完善的实现方案。 #### 四、案例分析——基于MQTT协议的推送实现 1. **客户端实现**:在客户端部分,可以使用`wmqtt.jar`库来实现客户端对...

    Android平台校园消息推送服务的设计与实现,基于AndroidPN实现的即时通信系统,Android服务端部分。.zip

    基于AndroidPN(Android Push Notification)的即时通信系统是解决这一问题的一种常见方案。AndroidPN是专门为Android设备设计的一个开源推送通知服务,它允许服务器向Android客户端发送消息,即使应用在后台或关闭...

    Android 推送

    Androidpn是一个开源的Android推送通知服务,它提供了服务器端和客户端的完整解决方案。这个项目旨在帮助开发者快速集成推送功能,无需深入了解FCM的复杂性。尽管Androidpn项目较旧,但其核心思想和架构仍对理解推送...

    androidpn消息推送完善版,基于web服务器

    ### AndroidPN消息推送完善版详解 #### 一、概述 ...总结而言,AndroidPN消息推送系统是一种基于XMPP协议的高效消息推送解决方案,通过精心设计的客户端和服务端架构,能够为用户提供稳定可靠的消息推送服务。

Global site tag (gtag.js) - Google Analytics