Android推送 智能心跳解决方案 手机休眠对心跳的影响

本文深入探讨了Android推送服务的实现方式,重点分析了长连接(Push)策略,包括GCM的使用、心跳策略及其存在的问题。针对Android休眠对心跳包的影响,文章提出了解决方案,如智能心跳算法,以适应不同网络环境下的心跳间隔。此外,还讨论了心跳包在检测连接可用性和防止NAT超时中的作用,以及如何在Android休眠时确保消息接收。
摘要由CSDN通过智能技术生成
                       

转载请标明出处:http://blog.csdn.net/xx326664162/article/details/51611625   文章出自:薛瑄的博客

你也可以查看我的其他同类文章,也会让你有一定的收货!

Android推送服务的几种实现方式

一、推送方式基础知识:

  在移动互联网时代以前的手机,如果有事情发生需要通知用户,则会有一个窗口弹出,将告诉用户正在发生什么事情。可能是未接电话的提示,日历的提醒,或是一封新的彩信。推送功能最早是被用于Email中,用来提示我们新的信息。由于时代的发展和移动互联网的热潮,推送功能更加地普及,已经不再仅仅用在推送邮件了,更多地用在我们的APP中了。

  当我们开发需要和服务器交互的应用程序时,基本上都需要获取服务器端的数据,比如《地震应急通》就需要及时获取服务器上最新的地震信息。
  要获取服务器上不定时更新的信息,一般来说有两种方法:

  • 第一种是客户端使用Pull(拉)的方式,就是隔一段时间就去服务器上获取一下信息,看是否有更新的信息出现。

  • 第二种就是 服务器使用Push(推送)的方式,当服务器端有新信息了,则把最新的信息Push到客户端上。这样,客户端就能自动的接收到消息。 

      虽然Pull和Push两种方式都能实现获取服务器端更新信息的功能,但是明显来说Push方式比Pull方式更优越。因为Pull方式更费客户端的网络流量,更主要的是费电量,还需要我们的程序不停地去监测服务端的变化。  

在开发Android和iPhone应用程序时,我们往往需要从服务器不定的向手机客户端即时推送各种通知消息。我们只需要在Android或IPhone的通知栏处向下一拉,就展开了Notification Panel,可以集中一览各种各样通知消息。目前IOS平台上已经有了比较简单的和完美的推送通知解决方案,我会在以后详细介绍IPhone中的解决方案,可是Android平台上实现起来却相对比较麻烦。

二、三种常见的解决方案实现原理:

  1)轮询(Pull)方式:应用程序应当阶段性的与服务器进行连接并查询是否有新的消息到达,你必须自己实现与服务器之间的通信,例如消息排队等。而且你还要考虑轮询的频率,如果太慢可能导致某些消息的延迟,如果太快,则会大量消耗网络带宽和电池。
  
  但对于即时通讯产品来说, 这种方案完全不能用. 假设即时通讯软件在网络畅通的情况下发送的消息要求对方10s内就能收到, 如果用轮询, 那么客户端要每隔5s连一次服务器, 如果在移动端, 手机的电量和流量很快就会被消耗殆尽.

  2)SMS(Push)方式:在Android平台上,你可以通过拦截SMS消息并且解析消息内容来了解服务器的意图,并获取其显示内容进行处理。这个方案的好处是,可以实现完全的实时操作。但是问题是这个方案的成本相对比较高,我们需要向运营商缴纳相应的费用。

  3)长连接(Push)方式:应用程序和服务器保持一个长连接,服务器的消息可以直接通过这个链接push到应用程序。这个方案可以解决由轮询带来的性能问题,但是还是会消耗手机的电池。

  Android操作系统允许在低内存情况下杀死系统服务,所以我们的推送通知服务很有可能就被操作系统Kill掉了。 轮询(Pull)方式和SMS(Push)方式这两个方案也存在明显的不足。至于持久连接(Push)方案也有不足,不过我们可以通过良好的设计来弥补,以便于让该方案可以有效的工作。毕竟,我们要知道GMail,GTalk以及GoogleVoice都可以实现实时更新的。


在理论上使用SMS(Push)方式是最好的方法,这种方法手机客户端最省电(详情查看这里),但是碍于运营商高昂的费用,所以才去长连接(Push)的方式

三、长连接(Push)的三种方法:

3.1、GCM云端推送功能。

  在Android手机平台上,Google提供了GCM服务,2016 I/O大会发布了Firebase Cloud Messaging (FCM) 用来取代GCM。

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

这里写图片描述

图片来自:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值