CN103313228A - Android系统下的消息传送方法 - Google Patents
Android系统下的消息传送方法 Download PDFInfo
- Publication number
- CN103313228A CN103313228A CN 201210060668 CN201210060668A CN103313228A CN 103313228 A CN103313228 A CN 103313228A CN 201210060668 CN201210060668 CN 201210060668 CN 201210060668 A CN201210060668 A CN 201210060668A CN 103313228 A CN103313228 A CN 103313228A
- Authority
- CN
- China
- Prior art keywords
- message
- messaging services
- account
- program
- server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种Android系统下的消息传送方法,包括:由Android系统下的AlarmManager(报警管理器)服务周期性地启动消息传送服务;当消息传送服务启动后,即与消息传送服务器进行连接并查询是否有新的消息;如果有新的消息则该消息传送服务从消息传送服务器下载新消息,并将新消息转给消息处理应用程序,然后该消息传送服务自动关闭;如果无新的消息,则该消息传送服务自动关闭。本发明Android系统下的消息传送方法能够兼容各种版本的Android系统,并且不使用C2DM服务,还具有可靠性高、耗费资源少的优点。
Description
技术领域
本发明涉及一种Android系统中的应用程序从应用程序服务器(AppServer)上获取消息的方法。
背景技术
移动终端(例如手机等)上的应用程序要想从应用程序服务器上获取不定时更新的消息,通常有两种方法。一种方法是客户端使用pull(拉)的方式,隔一段时间就去服务器上查看是否有新消息出现,如果有则下载。另一种就是服务器使用push(推送)的方式,主动将新消息传送到客户端上。这两种方式中,push方式要优于pull方式。因为push方式的消息传送的实时性更好,并且pull方式对移动终端的网络流量和电量的耗费更大。
对采用Android(安卓)系统的移动终端,Google(谷歌)提供了C2DM(Cloud to Device Messaging,云端传送)服务,可用来实现从应用程序服务器到应用程序的消息传送。该服务提供了一个简单的、轻量级的机制,允许服务器向运行于移动终端上的Android应用程序分发少量数据消息,并负责处理诸如消息排队等事务。应用程序在收到消息后可直接与服务器进行通信,从而可方便地从服务器获取应用程序更新和用户数据。
但是C2DM服务存在很大的问题:
1、C2DM服务内置于Android的2.2及更高系统上,无法兼容老的Android 1.6到2.1系统。
2、C2DM服务需要依赖于Google官方提供的C2DM服务器,由于国内的网络环境不稳定,其C2DM服务器经常不可用。如果想要获得良好的效果,应用程序服务器必须也设在国外,这会增加运营维护的难度和成本。
在不考虑C2DM服务的前提下,Android系统下的应用程序可以采用如下几种方式获取服务器的消息。
第一种,应用程序周期性地与服务器进行连接并查询是否有新的消息。这实际上是一种pull的方式,因而具有耗费网络流量和电量较多的缺点。除此之外,还需要实现消息排队、设置轮询频率等复杂环节。
第二种,服务器以SMS(Short Message Service,短信)方式向Android应用程序发送消息,Android系统通过拦截SMS消息并且解析消息内容来了解服务器的意图。该方案可以实现完全的实时操作,但是成本相对比较高,因为很难找到免费的短消息发送网关,需要向电信运营商支付SMS发送费用。
第三种,应用程序和服务器之间保持持续连接,这种方案显然会增加对网络流量和电量的消耗。并且,大量的应用程序同时与服务器保持连接,也对网络带宽、服务器的处理能力提出了很高要求。
上述第一种和第三种方案很难在Android系统上实现,因为Android系统允许在低内存情况下杀死系统服务,无法保证该周期性连接或持久连接的服务不被Android系统杀死。另外,习惯使用任务管理工具的用户,看到这些后台任务,也可能关掉相关服务。
发明内容
本发明所要解决的技术问题是提供一种Andorid系统下的消息传送方法,能够兼容各种版本的Android系统,并且不使用C2DM服务。
为接近上述技术问题,本发明Android系统下的消息传送方法包括:
由Android系统下的AlarmManager(报警管理器)服务周期性地启动消息传送服务;
当消息传送服务启动后,即与消息传送服务器进行连接并查询是否有新的消息;
如果有新的消息则该消息传送服务从消息传送服务器下载新消息,并将新消息转给消息处理应用程序,然后该消息传送服务自动关闭;
如果无新的消息,则该消息传送服务自动关闭。
本发明Android系统下的消息传送方法具有可靠性高、耗费资源少的优点。
首先,AlarmManager服务是Android系统自带的服务,不会被系统或用户关闭,因而由AlarmManager服务来周期性地启动消息传送服务,能够确保实现并且不会被系统或用户干扰,提高了消息传送服务的稳定性。
其次,消息传送服务每次启动后,在执行完查询新消息、下载新消息、将新消息转给相关应用处理的任务之后就会自动关闭,不会一直占用内存资源和消耗网络资源,同时也减少了电量的损耗。
附图说明
图1是本发明Android系统下的消息传送方法的一个实施例的流程图;
图2是消息处理程序对消息的处理流程的一个实施例的示意图;
图3a、图3b是一台服务器既作为消息传送服务器,又作为应用程序服务器的示意图。
图中附图标记说明:
10为服务器;20为移动终端。
具体实施方式
请参阅图1,这是本发明Android系统下的消息传送方法的一个实施例。其包括如下步骤:
步骤S11,Android系统下的AlarmManager服务周期性地启动消息传送服务;
步骤S12,所述消息传送服务启动后,就会连接消息传送服务器并查询是否有新消息;如果有新消息,则转向步骤S13;如果无新消息,则转向步骤S14;
步骤S13,消息传送服务从消息传送服务器下载新消息,下载完成后将新消息转给消息处理程序;
步骤S14,消息传送服务自动关闭。
一种可行的方案中,所述消息传送服务和所述消息处理程序是相互独立的。前者表现为一个或多个进程,后者表现为与之不同或不完全相同的另外一个或多个进程。
另一种可行的方案中,所述消息传送服务集成在所述消息处理程序之中。所述消息处理程序包括两个以上的进程,其中至少一个进程为消息传送服务。
在步骤S11中,AlarmManager服务启动消息传送服务的周期称为轮询周期。优选地,该轮询周期是动态调整的。
以本发明所述方法所传送的消息可大致分为两类:第一类是信息展示类的,第二类是程序安装、程序更新类的。
请参阅图2,这是消息处理程序在收到消息传送服务转来的新消息后的处理流程的一个实施例。其包括如下步骤:
步骤21,消息处理程序读取消息传送服务转来的消息,判断该消息的类别;如果属于信息展示类的,则转向步骤S22;如果属于程序安装、程序更新类的,则转向步骤S23;
步骤22,消息处理程序将消息中所包含的信息展示在移动终端上,随后该消息处理程序自动关闭;消息中所包含的信息包括隶属于消息体中的数据,也包括消息体中给出网络地址,可从该网络地址所获取的数据;
步骤23,消息处理程序判断消息中所包含的程序是否已安装在移动终端上、且是否版本号相符;如果两项均为是,则转向步骤24;如果有任何一项或两项为否,则转向步骤25;
步骤24,消息处理程序自动关闭;在自动关闭之前,消息处理程序可选择地在移动终端上显示“已安装有相同程序”的信息;
步骤25,消息处理程序从消息中所包含的地址开始下载程序,下载完毕后安装该程序,随后该消息处理程序自动关闭。
为尽量减小消息传送的网络流量,本发明还给出了消息的一种数据结构的示例,其由包头和消息体两部分组成。其中包头又由包类型和包长度两部分组成。优选地,包类型是字节(byte)型,长度为1字节;包长度是整数(int)型,长度为4字节;消息体是字节型。
例如,包类型字段表示消息的类别,是属于信息展示类,还是属于程序安装、程序更新类。信息展示类的消息,其所展示的信息或者直接放置在消息体中,或者在消息体中给出网络地址,由消息处理程序从该网络地址获取信息并展示在移动终端上。程序安装、程序更新类的消息,其消息体中包括程序名称、程序版本号、程序在Android系统安装后的唯一包名(与其余程序相区分)、程序的下载地址。
优选地,消息的传输采用socket协议。与http协议相比,socket协议消耗网络流量更少,效率也更高。
请参阅图3a、图3b,在一个典型的应用环境中,服务器10身兼消息传送服务器、应用程序A的应用程序服务器、应用程序B的应用程序服务器等多重身份。而某个移动终端20上同时安装有消息传送客户端程序、应用程序A的客户端程序、应用程序B的客户端程序。例如,所述消息传送客户端程序包括两个进程,分别对应于消息传送服务和消息处理程序。
一种情况下,如图3a所示,移动终端20上的这几个程序采用同一个账户C登录到服务器10上。对于手机而言,该账户C优选为手机号码,或者是手机硬件设备唯一标识。在移动终端20上运行任何程序时,只要该程序以账户C与服务器10建立连接且会话(Session)有效,服务器10就认为该账户C处于活跃期。如果账户C不是通过移动终端20登录到服务器10,而是采用其他的移动终端、或者PC机登录到服务器10,服务器10也认为该账户C处于活跃期。如果账户C未以任何方式与服务器10连接,或者虽已连接但会话过期失效,服务器10就认为该账户C处于非活跃期。优选地,将活跃期的轮询周期设置为<非活跃期的轮询周期。
另一种情况下,如图3b所示。移动终端20上的这几个程序采用不同账户C、D、E登录到服务器10上。在移动终端20上运行任何程序时,只要该程序以账户C、D、E中的任意一个或多个与服务器10建立连接且会话有效,服务器10就认为账户C处于活跃期,因为服务器10内部对来自于同一个移动终端20上的账户C、D、E进行了绑定。如果账户D、E不是通过移动终端20登录到服务器10,而是采用其他的移动终端、或者PC机登录到服务器10,此时服务器10就不再认为账户C处于活跃期。如果账户C未以任何方式与服务器10连接,或者虽已连接但会话过期失效;或者账户D、E未以该移动终端20与服务器10连接,或者虽已连接但会话过期失效;服务器10就认为该账户C处于非活跃期。优选地,将活跃期的轮询周期设置为<非活跃期的轮询周期。
正常情况下,用户的活跃期时长远远小于非活跃期时长。当用户处在活跃期的时候,将轮询周期调整到很小,完全能达到实时传送消息的效果。例如将活跃期的轮询周期设置为5秒~1分钟之间。当用户处在非活跃期,将轮询周期恢复到正常状态,确保对消息传送服务器不造成大的压力。例如将非活跃期的轮询周期设置为1分钟~1小时之间。
如上所述,服务器根据消息传送服务的账户登录情况、或者与消息传送服务的账户相绑定的应用程序的账户登录情况,来调整账户的轮询周期。与之相对应的,消息传送服务在每次向服务器查询是否有新消息时,服务器都会返回一个标识,该标识用来表示该账户是否为活跃期,消息传送服务将该标识转给消息处理程序,消息处理程序据此调整轮询周期。或者,该标识直接表示轮询周期的设定值,消息传送服务将该标识转给消息处理程序,消息处理程序据此调整轮询周期。
下面将以一个“手机云传送”的实施例对本发明作出一个详细说明。所谓手机云传送,是指在没有任何有线网络连接的情况下,通过无线网络(Wifi)、2G或3G移动通讯网络,把PC互联网上的资源传送到手机的服务。
首先,在互联网的资源页面添加“云传送”选项,在Android系统的移动终端上安装云传送软件,并注册帐号。该云传送软件相当于消息传送服务和消息处理程序的集成体。每个移动终端上的云传送软件必须对应于一个帐号,而一个帐号可以同时对应于多个移动终端上的云传送软件。
其次,以PC机访问互联网的资源页面,并选择云传送选项。此时必须以帐号登录,如果该帐号仅在一个移动终端上使用,则默认传送至该移动终端;如果该帐号在多个移动终端上使用,则可选择传送至哪个或哪几个移动终端。
再次,当欲传送的移动终端在线(指同时满足开机、可访问网络、运行云传送软件且以某账户登录到云传送服务器)时,将发生如下步骤:
步骤S11’,欲传送的移动终端的Android系统下的AlarmManager服务周期性地启动消息传送服务;
步骤S12’,当消息传送服务启动后,就会连接消息传送服务器(此时与互联网资源网站是同一台服务器)并查询是否有新消息;查询结果是有新消息,该新消息的内容包括:欲传送的互联网资源的名称、版本号、下载地址、安装到Android系统后的唯一包名等。
步骤S13’,云传送软件从消息传送服务器下载该新消息;下载完成后分析本地的Android系统是否已安装了欲传送的资源;如果是,则显示提示信息;如果否(包括未安装,或虽已安装但版本号不同),则启动Android系统中的下载服务从该新消息中的下载地址进行下载,下载完成后进行安装,随后该云传送软件自动关闭。
当欲传送的移动终端不在线(包括关机、或者网络不可访问、或者未运动云传送软件)时,服务器保留一段时间的传送任务。在该时间内,只要欲传送的移动终端在线,就会发生上述步骤S11’~S13’。超过该时间后,服务器删除该传送任务。
综上所述,本发明Android系统下的消息传送方法,通过“改进的Android后台服务”(即由AlarmManager服务周期性地启动消息传送服务)使得消息传送服务稳定,并且与”持久连接“方式相比,极大减少对应用程序服务器的压力。还采用“轮询周期动态调整”策略,对活跃期内的用户实现了实时传送消息,并进一步降低对应用程序服务器的压力,减少Android手机的内存、电量消耗。还采用“自定义消息传送协议”,节省网络流量。
以上仅为本发明的优选实施例,并不用于限定本发明。对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种Android系统下的消息传送方法,其特征是,包括:
由Android系统下的AlarmManager(报警管理器)服务周期性地启动消息传送服务;
当消息传送服务启动后,即与消息传送服务器进行连接并查询是否有新的消息;
如果有新的消息则该消息传送服务从消息传送服务器下载新消息,并将新消息转给消息处理应用程序,然后该消息传送服务自动关闭;
如果无新的消息,则该消息传送服务自动关闭。
2.根据权利要求1所述的Android系统下的消息传送方法,其特征是,所述消息传送服务和所述消息处理程序是相互独立的;
或者,所述消息传送服务集成在所述消息处理程序之中。
3.根据权利要求1所述的Android系统下的消息传送方法,其特征是,所述消息处理程序在收到所述消息传送服务转来的新消息后,包括如下步骤:
消息处理程序判断该新消息的类别;
如果该新消息属于信息展示类的,消息处理程序将该新消息中所包含的信息展示在移动终端上,随后该消息处理程序自动关闭;
如果该新消息属于程序安装、程序更新类的,消息处理程序判断该新消息中所包含的程序是否已安装在移动终端上、且是否版本号相符;如果两项均为是,则消息处理程序自动关闭;如果有任何一项或两项为否,消息处理程序从该新消息中所包含的地址开始下载程序,下载完毕后安装该程序,随后该消息处理程序自动关闭。
4.根据权利要求3所述的Android系统下的消息传送方法,其特征是,所述消息由包头和消息体两部分组成,其中包头又由包类型和包长度两部分组成;所述包类型字段表示消息的类别,是属于信息展示类,还是属于程序安装、程序更新类。
5.根据权利要求4所述的Android系统下的消息传送方法,其特征是,所述信息展示类的消息,其所展示的信息或者直接放置在消息体中,或者在消息体中给出网络地址,由消息处理程序从该网络地址获取信息并展示在移动终端上;
所述程序安装、程序更新类的消息,其消息体中包括程序名称、程序版本号、程序在Android系统安装后的唯一包名、程序的下载地址。
6.根据权利要求1所述的Android系统下的消息传送方法,其特征是,消息传送服务必须以一个账户登录到消息传送服务器之后,才能从消息传送服务器上查询是否有新消息;所述账户包括手机号、移动终端的硬件设备唯一标识、用户注册的帐号;
当以任何硬件设备采用所述消息传送服务的账户登录到消息传送服务器且会话有效,消息传送服务器就判定该消息传送服务的账户处于活跃期;
当未以任何硬件设备采用所述消息传送服务的账户登录到消息传送服务器、或者采用所述消息传送服务的账户登录到消息传送服务器的会话过期失效,消息传送服务器就判定该消息传送服务的账户处于非活跃期;
活跃期的AlarmManager服务启动消息传送服务的周期<非活跃期的AlarmManager服务启动消息传送服务的周期;
所述消息传送服务在每次向消息传送服务器查询是否有新消息时,消息传送服务器都会返回一个标识,该标识用来表示该消息传送服务的账户是否为活跃期,或者表示一个时间值;消息传送服务将该标识转给消息处理程序,消息处理程序据此调整AlarmManager服务启动消息传送服务的周期。
7.根据权利要求6所述的Android系统下的消息传送方法,其特征是,当所述消息推送服务器同时作为一个或多个应用程序服务器,且移动终端上的除消息传送服务以外的应用程序也采用消息传送服务的账户登录到所述的应用程序服务器,则以该消息传送服务的账户登录应用程序服务器的行为,视作为以该消息传送服务的账户登录消息传送服务器。
8.根据权利要求6所述的Android系统下的消息传送方法,其特征是,当所述消息推送服务器同时作为一个或多个应用程序服务器,且移动终端上的除消息传送服务以外的应用程序采用与消息传送服务的账户不同的账户登录到所述的应用程序服务器,则在该移动终端上登录所述应用程序服务器的行为,视作为以该消息传送服务的账户登录消息传送服务器;而在除该移动终端以外的设备上登录所述应用程序服务器的行为,不视作以该消息传送服务的账户登录消息传送服务器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201210060668 CN103313228A (zh) | 2012-03-09 | 2012-03-09 | Android系统下的消息传送方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201210060668 CN103313228A (zh) | 2012-03-09 | 2012-03-09 | Android系统下的消息传送方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103313228A true CN103313228A (zh) | 2013-09-18 |
Family
ID=49137910
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201210060668 Pending CN103313228A (zh) | 2012-03-09 | 2012-03-09 | Android系统下的消息传送方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103313228A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104660482A (zh) * | 2013-11-20 | 2015-05-27 | 中兴通讯股份有限公司 | 一种社交网络信息推送方法及装置 |
CN104918235A (zh) * | 2015-06-25 | 2015-09-16 | 北京奇虎科技有限公司 | 移动终端网络连接的控制方法和装置 |
CN105978789A (zh) * | 2016-04-28 | 2016-09-28 | 努比亚技术有限公司 | 一种消息推送系统及方法 |
-
2012
- 2012-03-09 CN CN 201210060668 patent/CN103313228A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104660482A (zh) * | 2013-11-20 | 2015-05-27 | 中兴通讯股份有限公司 | 一种社交网络信息推送方法及装置 |
CN104918235A (zh) * | 2015-06-25 | 2015-09-16 | 北京奇虎科技有限公司 | 移动终端网络连接的控制方法和装置 |
CN104918235B (zh) * | 2015-06-25 | 2016-11-23 | 北京奇虎科技有限公司 | 移动终端网络连接的控制方法和装置 |
CN105978789A (zh) * | 2016-04-28 | 2016-09-28 | 努比亚技术有限公司 | 一种消息推送系统及方法 |
CN105978789B (zh) * | 2016-04-28 | 2020-07-10 | 安徽波士信息科技有限公司 | 一种消息推送系统及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102761864B (zh) | 一种数据传输的方法、系统及设备 | |
CN101939951B (zh) | 移动wlan网关 | |
US9148765B2 (en) | Push service without persistent TCP connection in a mobile network | |
CN101291348B (zh) | 一种无线隧道唤醒通知方法 | |
CN106301959B (zh) | 基于windows和linux平台的网关批量升级方法及系统 | |
US20130013709A1 (en) | Method and apparatus for providing idle mode service | |
CN101184304B (zh) | 一种用户设备客户端软件下载的方法、系统及装置 | |
CN105100021B (zh) | 一种设备管理会话的触发方法、设备及系统 | |
CN107426233A (zh) | 基于B/S架构的数据通信系统、方法、Web服务器及监控系统 | |
KR20130071723A (ko) | 메시지 처리 방법 및 장치 | |
CN109495433A (zh) | 数据下载方法和装置、存储介质及电子装置 | |
CN101765071A (zh) | 一种向无线数据通信终端上推送自适应数据的方法和设备 | |
EP1909511A1 (en) | Application activation method | |
CN101827453A (zh) | 一种pc与无线终端建立连接的方法及系统 | |
CN102348198A (zh) | 一种无线终端及其参数远程设置方法 | |
CN103313228A (zh) | Android系统下的消息传送方法 | |
CN111181752B (zh) | 窄带设备升级方法、移动终端及可读存储介质 | |
WO2017140247A1 (zh) | 移动基站cdn系统及其服务方法 | |
US11425632B2 (en) | Mechanism to provide updates to NB-IoT devices | |
CN101742422A (zh) | 一种移动即时通讯的方法和装置 | |
CN114143729B (zh) | 用于与IoT设备进行数据收发的装置、方法及计算机可读存储介质 | |
CN102215118A (zh) | 实现设备管理业务的方法、装置及系统 | |
CN112486543A (zh) | 一种网络设备的固件升级方法、装置、存储介质及系统 | |
CN102325187A (zh) | 一种整合多种功能服务的系统及方法 | |
JP6509413B1 (ja) | IoT機器とのデータの送受信を行うための装置、方法及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20130918 |