当前位置:天才代写 > tutorial > 安卓教程 > Android消息推送

Android消息推送

2021-02-05 14:14 星期五 所属: 安卓教程 浏览:28

1.消息推送方法基本知识: 

  在移动互联时期之前的手机上,如果有事儿产生必须通告客户,则会有一个对话框弹出来,将告知客户已经产生什么事情。可能是未接电话的提醒,日历的提示,或者一封新的手机彩信。消息推送作用最开始是被用以Email中,用于提醒大家新的信息内容。因为时期的发展趋势和移动互联的风潮,消息推送作用更为地普及化,早已不会再只是用在消息推送电子邮件了,大量地用在大家的APP中了。

 

  在我们开发设计必须和网络服务器互动的应用软件时,大部分都必须获得服务端的数据信息,例如《地震应急通》就必须立即获得网络服务器上全新的地震信息。要获得网络服务器上不定时执行升级的信息内容,一般来说有二种方式:第一种是手机客户端应用Pull(拉)的方法,便是隔一段时间就要网络服务器上获得一下信息内容,看是不是有升级的信息内容出現。第二种便是 网络服务器应用Push(消息推送)的方法,当服务端有新信息内容了,则把全新的信息内容Push到手机客户端上。那样,手机客户端就能全自动的接受到信息。 

 

  尽管Pull和Push二种方法都能完成获得服务端升级信息内容的作用,可是显著而言Push方法比Pull方法更优越。由于Pull方法更费手机客户端的数据流量,更关键的是费用电量,还必须大家的程序流程不断地去检测服务器端的转变 。  

 

  在开发设计Android和iPhone应用软件时,大家通常必须从服务器不确定的向app客户端及时消息推送各种各样通告信息。大家只必须在Android或IPhone的状态栏处往下一拉,就进行了Notification Panel,能够集中化一览各式各样通告信息。现阶段IOS服务平台上早已拥有非常简单的和极致的消息推送通告解决方法,我能在之后详解IPhone中的解决方法,但是Android服务平台上完成起來却相对性较为不便。

  近期运用几日的時间对Android的消息推送通告服务项目开展基本的科学研究,也期待能和大伙儿一同讨论一下。

 

  2. 几类普遍的解决方法完成基本原理:

  1)轮询(Pull)方法:应用软件理应分阶段的与服务器虚拟机联接并查看是不是有新的信息抵达,你务必自身完成与集群服务器的通讯,比如信息排长队等。并且你也要考虑到轮询的頻率,假如很慢很有可能造成一些信息的延迟时间,假如太快,则会很多耗费服务器带宽和充电电池。

 

  2)SMS(Push)方法:在Android服务平台上,你能根据阻拦SMS信息而且分析信息內容来掌握网络服务器的用意,并获得其表明內容开展解决。这是一个非常好的念头,我也见过选用这一计划方案的应用软件。这一计划方案的益处是,能够完成彻底的即时实际操作。可是难题是这一计划方案的成本费相对性较为高,大家必须向联通公司交纳相对的花费。大家现阶段难以寻找完全免费的短信推送网关ip来完成这类计划方案。

 

  3)长久联接(Push)方法:这一计划方案能够处理由轮询产生的特性难题,可是依然会耗费手机上的充电电池。IOS服务平台的推送服务往往工作中的非常好,是由于每一台手机上只是维持一个与集群服务器的联接,实际上C2DM也是那么工作中的。但是刚刚也讲了,这一计划方案存有着许多的存在的不足,便是大家难以在手机上完成一个靠谱的服务项目,现阶段也没法与IOS服务平台的消息推送作用对比。

 

  Android电脑操作系统容许在低运行内存状况下杀掉服务程序,因此 大家的消息推送通告服务项目很有可能就被电脑操作系统Kill没了。 轮询(Pull)方法和SMS(Push)方法这两个计划方案也存有显著的不够。对于长久联接(Push)计划方案也是有不够,但是我们可以根据优良的设计方案来填补,便于于让该计划方案能够合理的工作中。终究,我们要了解GMail,GTalk及其GoogleVoice都能够完成自动更新的。

  

  3.第一种解决方法:C2DM云空间消息推送作用。

  在Android网络平台上,Google出示了C2DM(Cloudto Device Messaging)服务项目,最初我是提前准备选用这一服务项目来完成自身手机的消息推送作用,并将其带到自身的新项目中。 

 

  Android Cloud to Device Messaging (C2DM)是一个用于协助开发人员从服务器向Android应用软件传送数据的服务项目。该服务项目出示了一个简易的、轻量的体制,容许网络服务器能够通告挪动应用软件立即与服务器虚拟机通讯,便于于从服务器获得应用软件升级和客户数据信息。C2DM服务项目承担解决例如信息排长队等事务管理并向运作于总体目标机器设备上的应用软件派发这种信息。有关C2DM实际应用全过程,大伙儿能够去查看有关的材料,在这儿先使我们掌握下大概计划方案状况。

 

  下边是C2DM操作流程实例图:

    

 

  可是历经一番研究发现,这一服务项目存有非常大的难题:  

  1)C2DM内放置Android的2.2系统上,没法兼容老的1.6到2.1系统;

 

  2)C2DM必须取决于Google官方网出示的C2DM网络服务器,因为中国的网络空间,这一服务项目常常不能用,假如要想非常好的应用,大家的App Server务必也国外,这一也许并不是每一个开发人员都可以完成的;

 

  3) 不象在iPhone中,她们把硬件配置信息系统集成在一块了。因此 针对大家开发人员而言,假如要在大家的应用软件中应用C2DM的消息推送作用,由于针对不一样的这类硬件配置生产商服务平台,例如摩托罗拉手机、华为公司、zte中兴做一个手机,她们很有可能会把Google的这类服务项目除掉,特别是在像在中国就许多这类,把Google这类原生态的服务项目除掉。买来一些比如说山寨手机或是是华为公司这类国产手机,很有可能Google的服务项目就没了。而像国外出的这些很有可能会内嵌。

 

  拥有所述好多个层面的牵制,造成我最后放弃了这一计划方案,但是我觉得运用此外一篇文章来详尽的详细介绍C2DM的架构及其手机客户端和App Server的相对设定方式,能够做为教学资源使我们有一个参照的材料。 既然C2DM不能满足大家的规定,那麼大家就必须自己来完成Androidapp客户端与App Server中间的通讯协议,确保在App Server想向特定的Android机器设备推送信息时,Android机器设备可以立即的接到。

 

  4. 第二种解决方法:MQTT协议书完成Android消息推送作用。

  选用MQTT协议书完成Android消息推送作用也是一种解决方法。MQTT是一个轻量的信息公布/定阅协议书,它是完成根据app客户端的消息提醒网络服务器的理想化解决方法。

  wmqtt.jar 是IBM出示的MQTT协议书的完成。我们可以从这儿(https://github.com/tokudu/AndroidPushNotificationsDemo)免费下载此项目地案例编码,而且能够寻找一个选用PHP撰写的服务端完成(https://github.com/tokudu/PhpMQTTClient)。

 

  构架如下图所显示:

      

 

  wmqtt.jar 是IBM出示的MQTT协议书的完成。我们可以从以下网站免费下载(http://www-01.ibm.com/support/docview.wss?rs=171&uid=swg24006006)它。我们可以将该jar包添加自身的Android应用软件中。

 

  5.第三种解决方法:RSMB完成消息推送作用。

  Really Small Message Broker (RSMB) ,他是一个简易的MQTT代理商,一样由IBM出示,其查询详细地址是:http://www.alphaworks.ibm.com/tech/rsmb。默认设置开启1883端口号,应用软件之中,它承担接受来源于网络服务器的信息并将其发送给特定的移动设备。

 

  SAM是一个对于MQTT写的PHP库。我们可以从这一http://pecl.php.net/package/sam/download/0.2.0详细地址免费下载它.

  send_mqtt.php是一个根据POST接受信息而且根据SAM将信息发给RSMB的PHP脚本制作。 

 

  6. 第四种解决方法:XMPP协议书完成Android消息推送作用。

  它是希望在新项目中选用的计划方案,由于现阶段它是开源系统的,针对其简易的消息推送作用它還是可以完成的。我们可以改动其源码来融入大家的应用软件。

  实际上Google官方网的C2DM网络服务器最底层也是选用XMPP协议书开展的封裝。XMPP(可拓展通信和表明协议书)是根据可拓展编译语言(XML)的协议书,它用以即时聊天(IM)及其线上检测。这一协议书很有可能最后容许互联网客户向互联网上的别的所有人推送即时聊天。有关XMPP协议书我还在上篇博闻中早已详细介绍,大伙儿能够参照下文章内容:http://www.cnblogs.com/hanyonglu/archive/2012/03/04/2378956.html

 

  androidpn是一个根据XMPP协议书的java开源系统Android push notification完成,我能在之后的博闻中详解androidpn。它包括了详细的手机客户端和服务端。历经源码科学研究我发现了,该服务端基础是在此外一个开源系统工程项目openfire基本上改动完成的,但是较为烦闷的是androidpn的文本文档是由韩文写的,因此 全部研究过程基础全是读源代码。

 

  它是androidpn的新项目首页:http://sourceforge.net/projects/androidpn/

 

  androidpn完成用意如下图所显示:

  

 

  androidpn 手机客户端必须采用一个根据java的开源系统XMPP协议书包asmack,这一包一样也是根据openfire下的此外一个开源项目smack,但是大家不用自身编译程序,能够立即把androidpn手机客户端里边的asmack.jar用来应用。手机客户端运用asmack中出示的XMPPConnection类与服 务端创建长久联接,并根据该联接开展会员注册和登陆验证,一样也是根据这条联接,接受服务器发送的通告。

 

  androidpn服务端也是java语言完成的,根据openfire开源系统工程项目,但是它的Web一部分选用的是spring架构,这一点与 openfire是不一样的。Androidpn网络服务器包括2个一部分,一个是监听在5222端口号上的XMPP服务项目,承担与手机客户端的 XMPPConnection类开展通讯,功效是会员注册和身份验证,并推送消息推送通告信息。此外一部分是Web服务端,选用一个轻量的HTTP网络服务器, 承担接受客户的Web要求。服务器架构以下:

 

 

 

  顶部包括四个构成部分,分别是SessionManager,Auth Manager,PresenceManager及其Notification Manager。SessionManager部门管理手机客户端与集群服务器的对话,Auth Manager承担手机客户端用户认证管理方法,Presence Manager部门管理手机客户端客户的登陆情况,NotificationManager承担完成网络服务器向手机客户端消息推送信息作用。

 

  这一解决方法的较大 优点便是简易,大家不用象C2DM那般依靠电脑操作系统版本号,也不会担忧某一天Google网络服务器不能用。运用XMPP协议书大家还能够进一步的对协议书开展拓展,完成更加健全的作用。 选用这一计划方案,大家现阶段只有推送文本信息,但是针对消息推送而言一般充足了,由于我们不能寄希望于根据消息推送获得全部的数据信息,一般状况下,运用消息推送仅仅告知移动端网络服务器发生了一些更改,当手机客户端接到通告之后,应当积极到网络服务器获得全新的数据信息,那样才算是推送服务的详细完成。 XMPP合同书相对而言還是非常简单的,非常值得大家进一步科学研究。

 

  可是在历经一段时间的检测,我发现了有关androidpn也存有一些存在的不足:

  1. 例如時间太长时,就从此不能收到消息推送的信息内容了。

  2. 特性上也不足平稳。

    3. 假如将信息从服务器上消息推送出来,就不会再管理方法了,无论信息是不是取得成功抵达手机客户端手机。

 

  这些,总而言之,androidpn也是有许多的缺陷。假如我们要应用androidpn,则还必须做很多的工作中。

  对于详尽应用全过程,大家会在下一个博闻中再给大伙儿详细介绍。

 

  7.第五种解决方法:应用第三方平台。

  第三方平台有商业的也是有完全免费的,我们可以依据完成状况应用。有关中国的第三方平台,我感觉现阶段较为非常好的便是极光推送。有关极光推送现阶段是完全免费的,我们可以立即应用。有关具体情况,大伙儿能够查询它的首页:http://www.jpush.cn/index.jsp,这儿不会再详细说明。

  

  有关海外的第三方平台因为我见过好多个:http://www.push-notification.org/。有兴趣爱好的盆友能够查看基本信息。应用第三方平台就必须应用他人的网络服务器,有关这一点,你懂得的。

 

    关键字:

天才代写-代写联系方式