精华内容
下载资源
问答
  • 推荐几款好用的android安卓app消息推送三方库.zip
  • 前言 在Android开发中,消息推送功能的使用非常常见。 为了降低开发成本,使用第三方推送是现今较为流行的解决方案。 今天,我将手把手教大家...继承自BroadcastReceiver,用于接收推送消息并对这些消息进行处理 Mai
  • 首先看一张国内Top500 Android应用中它们用到的第三方推送以及所占数量: 现在总结下Android平台下几种推送方案的基本情况以及优缺点: 一、使用GCM(Google Cloude Messaging) Android自带的推送GCM可以帮助开发...
  • 现在一般的android软件都是需要不断更新的,当你打开某个app的时候,如果有新的版本,它会提示你有新版本需要更新。该项目实现的就是这个功能.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码...
  • 工信部统一 Android 消息推送标准

    千次阅读 2019-06-25 14:54:45
    二、推送技术发展 1、轮询方式 2、SMS短信推送方式 3、长连接推送方式 三、统一推送 四、作用 五、具体时间表 一、介绍 统一推送联盟成立于2017年10月,挂靠单位是电信终端产业协会(TAF),接受工业和信息...

    目录

    一、介绍

    二、推送技术发展

    1、轮询方式

    2、SMS短信推送方式

    3、长连接推送方式

    三、统一推送

    四、作用

    五、具体时间表


    一、介绍

    统一推送联盟成立于2017年10月,挂靠单位是电信终端产业协会(TAF),接受工业和信息化部业务指导,住所设在北京。联盟核心任务是:探索推送行业创新,促进终端生产厂商、应用开发厂商和第三方服务提供商等进行深入合作,整合行业资源,助推形成统一的推送体系,创造绿色环境,减少与终端用户的利益冲突,提升整体行业形象,降低整体行业的实现成本,形成自律基础上的产业链协同发展,实现产业的共同繁荣。

      统一推送联盟是在自愿、平等、互利、合作的基础上,由国内外消息推送产业相关的企、事业单位、社团组织、高等院校、科研院所等自愿结成的跨行业、开放性、非营利性的社会组织。本联盟旨在促进相关主体之间的交流和深度合作,促进供需对接和知识共享,形成优势互补,有效推进消息推送产业的发展,切实解决产业现实问题。

     

    二、推送技术发展

    “推送”这一概念在1996年由PointCast 网络公司提出,旨在为用户提供更准确、更实时的消息推送。Google公司在2009年开发了C2DM(Cloud toDevice Messaging)推送技术以供Android平台的应用提供方进行消息推送。而后,苹果公司推出了APNS(Apple Push Notification service)推送技术,统一了IOS平台的推送业务。伴随着推送技术的发展,推送技术主要经历3个阶段,从轮询方式、SMS短信推送方式逐渐发展到长连接推送方式。

    1、轮询方式

    轮询是由客户端主动发起请求的推送方式。客户端通过与服务器的网络连接,以定时任务的方式询问服务器端是否有新的推送消息。这种方式的效率取决于请求频率的设计,如果请求频率过高,会消耗较多的资源;而若请求频率较低,则消息的延时较高,实时性得不到保证。

    2、SMS短信推送方式

    短信方式通过运营商的短信通道将消息发往客户设备。通过编码可以保证消息的保密性,应用再利用手机系统的短信拦截功能,获取推送消息,反向解码后推送给用户。短信方式的由于通过运营商渠道,推送的稳定性得以保障。但同时,由于要向运营商按推送量进行付费,因此成本较高,通常作为补充手段应用。

    3、长连接推送方式

    长连接推送方式是最为通用也是受到研究最多的推送方式。不同于“轮询”的消息传递方式,服务方通过保持与客户端的长连接,掌握了消息推送的主动权。客户端按一定频率向客户端发送一个心跳以保持长连接,当消息推送时直接通过长连接发送消息。长连接的推送方式,保证了消息推送的实时性。相比于“轮询”方式,长连接推送节省了客户端电量、流量等资源消耗。当然,当大量设备与服务器保持长连接时,服务器端的压力陡增,必须优化服务器以保持高并发下的良好性能。苹果公司的APNS推送方式、Google的C2DM推送方式以及基于MQTT协议或XMPP协议的推送都是基于长连接的方式进行消息的推送。

     

    三、统一推送

    由于一些特殊的原因,在国内的用户无法享受到谷歌安卓系统提供的 GMS 消息推送服务,不少国产安卓软件接收消息依靠后台服务存在,也由此出现了用户反映的耗电以及占用内存问题,不过未来这一问题有望得到全面解决。

    工信部旗下泰尔终端实验室发布消息称,各个终端厂商的系统级推送通道不可避免的存在差异性,因此,开发者同时接入、维护多条推送通道存在着一定的困难。在此背景下,泰尔终端实验室联合包括华为、OPPO、vivo、小米、三星、魅族、金立、努比亚、谷歌、百度、阿里巴巴、腾讯、个推、极光等国外内主要相关企业共同制定安卓统一推送服务(Unified Push Service,简称UPS)技术标准,旨在为国内的消息推送服务建立统一的标准,为终端用户提供更好的手机使用体验,为应用开发者更好解决消息推送需求,并取得了阶段性成果。

     

    四、作用

    “统一推送的标准”,对于消息推送会增强管理。例如,通过推送消息的相互拉起明确不被允许,利用透传消息拉起App的行为也被禁止。同时,为了保证用户体验,原则上也不支持推送消息的定制化(包括消息样式的定制化以及提示音的个性化,通知栏图标不允许使用外链),保证消息推送的公平性和用户界面的一致性。

     

    五、具体时间表

    201931日,联盟开始统一推送标准符合性测试。

    20191231日,现有各推送通道兼容统一推送标准。

     


     

    展开全文
  • 推送消息截图 今天,我将全面介绍Android中实现消息推送的7种主流解决方案 目录 示意图 1. 本质 应用App主动向用户推送服务器最新消息 实际上,是当服务器有新消息需推送给用户时,先发送给应用App,应用App...

    前言

    • 鉴于现在运营需求的增强,消息推送在Android开发中应用的场景是十分常见

    如电商的活动宣传、资讯类产品进行新闻推送等等

    推送消息截图

    • 今天,我将全面介绍Android中实现消息推送的7种主流解决方案

    目录

    示意图


    1. 本质

    应用App 主动向用户推送服务器最新消息

    实际上,是当服务器有新消息需推送给用户时,先发送给应用App,应用App再发送给用户

    示意图


    2. 作用

    • 产品角度:功能需要,如:资讯类产品的新闻推送、工具类产品的公告推送等等
    • 运营角度:活动运营需要,如:电商类产品的促销活动;召回用户 / 提高活跃度等等

    作为开发者,不要有需求就接,应该多思考、多理解用户 / 功能的使用场景,有助于我们更好地去选择合适的开发方式


    3. 原理

    • 推送的原理主要是2种方式:Push 和 Pull
    • 具体如下

    示意图


    4. 解决方案

    • Android中,实现消息推送的主流方案有7种
    • 下面,我将详细解析每个解决方案

    注:

    1. 每个操作系统有自身的消息推送功能,属于 系统级别,即 任何时候都可以推送给用户,且不会被系统杀死
    2. Android的消息推送服务称为:C2DM(Cloudto Device Messaging),将在下面详细描述

    4.1 C2DM

    Cloud to Device Messaging,云端推送,是Android系统级别的消息推送服务(Google出品)

    • 原理
      基于Push方式
    • 具体描述
      C2DM服务负责处理诸如消息排队等事务,并向运行于目标设备上的应用程序分发这些消息。如下图:

    C2DM原理

    • 优点
      C2DM提供了一个简单的、轻量级的机制,允许服务器可以通知移动应用程序直接与服务器进行通信,以便于从服务器获取应用程序更新和用户数据。
    • 缺点
      1. 依赖于Google官方提供的C2DM服务器,但在国内使用Google服务需要翻墙,成本较大;
      2. 需要用户手机安装Google服务。但由于Android机型、系统的碎片化 & 国内环境,国内的Android系统都自动去除Google服务,假如要使用C2DM服务,这意味着用户还得去安装Google服务,成本较大。

    4.2 轮询

    • 原理
      基于Pull方式
    • 具体描述
      应用程序隔固定时间主动与服务器进行连接并查询是否有新的消息
    • 优点
      实时性好
    • 缺点
      1. 成本大,需要自己实现与服务器之间的通信,例如消息排队等;
      2. 到达率不确定,考虑轮询的频率:太低可能导致消息的延迟;太高,更费客户端的资源(CPU资源、网络流量、系统电量)和服务器资源(网络带宽)

    4.3 SMS信令推送

    • 原理
      基于Push方式
    • 具体描述
      服务器有新消息时,发送1条类似短信的信令给客户端,客户端通过拦截信令,解析消息内容 / 向服务器获取信息
    • 优点
      可实现完全的实时操作
    • 缺点
      成本高(主要是短信资费的支出)

    4.4 MQTT协议

    • 定义
      轻量级的消息发布/订阅协议
    • 原理
      基于Push方式,wmqtt.jar 是IBM提供的MQTT协议的实现,原理如下图:

    MQTT协议原理

    更多关于MQTT协议:

    1. 项目实例源
    2. 一个采用PHP书写的服务器端
    3. Jar包下载地址,并加入自己的Android应用程序中。
    4. 拓展:RSMB是从MQTT协议引申出来的另外一种解决方案:简单的MQTT代理,详情请点击

    4.5 XMPP协议

    • 定义
      Extensible Messageing and Presence Protocol,可扩展消息与存在协议,是基于可扩展标记语言(XML)的协议,是目前主流的四种IM协议之一

    其他三种:

    • 即时信息和空间协议(IMPP)

    • 空间和即时信息协议(PRIM)

    • 即时通讯和空间平衡扩充的进程开始协议SIP(SIMPLE)

    • 原理
      XMPP中定义了三个角色,分别是客户端、服务器和网关
      客户端

      1. 通过 TCP/IP与XMPP 服务器连接,然后在之上传输与即时通讯相关的指令(XML);
      2. 解析组织好的 XML 信息包;
      3. 理解消息数据类型。
    • XMPP的核心:XML流传输协议(在网络上分片断发送XML的流协议),也是即时通讯指令的传递基础,即XMPP用TCP传的是XML流
    1. 与即时通讯相关的指令,在以前要么用2进制的形式发送(比如QQ),要么用纯文本指令加空格加参数加换行符的方式发送(比如MSN)。
    2. XMPP传输的即时通讯指令的逻辑与以往相仿,只是协议的形式变成了XML格式的纯文本。

    服务器

    1. 监听客户端连接,并直接与客户端应用程序通信(客户端信息记录)
    2. 与其他 XMPP 服务器通信;

    网关:与异构即时通信系统进行通信

    异构系统包括SMS(短信),MSN,ICQ等

    通信能够在这三者的任意两个之间双向发生。

    原理流程

    原理流程

    • 优点

      1. 开源:可通过修改其源代码来适应我们的应用程序。
      2. 简单:XML易于解析和阅读;将复杂性从客户端转移到了服务器端
      3. 可拓展性强:继承了在XML环境中灵活的发展性,可进一步对协议进行扩展,实现更为完善的功能。

      GTalk、QQ、IM等都用这个协议

    • 缺点
      如果将消息从服务器上推送出去,则不管消息是否成功到达客户端手机上。

    • 源码实例:有一个很棒的基于XMPP协议的java开源Android push notification:Androidpn项目地址,大家有兴趣可以去看看

    更多关于XMPP协议更加详细请点击

    4.6 使用第三方平台

    现今主流的推送平台分为

    1. 手机厂商类:小米推送、华为推送。
    2. 第三方平台类:友盟推送、极光推送、云巴(基于MQTT)
    3. BAT大厂的平台推送:阿里云移动推送、腾讯信鸽推送、百度云推送

    具体各推送平台的优缺点请看我写的文章:Android推送:第三方消息推送平台详细解析

    4.7 自己搭建

    如果你的产品对于消息推送具备较高的功能和性能要求,同时对安全性要求非常高的话,自己搭建可能是最好的方式,但这种方式无疑成本是最高的。

    至此,关于Android推送的解决方案讲解完毕。


    5. Android推送 与 iOS推送的区别

    示意图


    6. 总结

    • 经过上面的详细讲解,相信大家现在对Android中消息推送的解决方案已经非常了解,总结如下

       

      示意图

    展开全文
  • Android消息推送机制

    2021-01-16 11:44:01
    消息推送需要客户端与服务端进行连接,因此分为两种方式 长连接,在TCP层握手成功后,不立即断开连接,并在此连接的基础上进行多次消息(包括心跳)交互,直至连接的任意一方主动断开连接,此过程称为一次完整的...

    知识点:

    • 长连接与短连接
    • 端内与端外推送
    • 通知与透传消息
    • 服务保活(心跳机制)

    长连接和短连接

    消息推送需要客户端与服务端进行连接,因此分为两种方式

    • 长连接,在TCP层握手成功后,不立即断开连接,并在此连接的基础上进行多次消息(包括心跳)交互,直至连接的任意一方主动断开连接,此过程称为一次完整的长连接。HTTP 1.1相对于1.0最重要的新特性就是引入了长连接。比如现在的即时通讯,基于XMPP、MQTT协议的消息推送。

    • 短连接,客户端收到服务端的响应后,立刻发送FIN消息,主动释放连接。也有服务端主动断连的情况,凡是在一次消息交互(发请求-收响应)之后立刻断开连接的情况都称为短连接。注:短连接也是建立在TCP协议上的,有完整的握手挥手流程,区别于UDP协议的无连接。实现的过程是android开机启动服务,使用HTTP轮循方式,定时访问服务器,服务器json形式返回数据,客户端再解析数据,把内容显示在通知栏栏。

    端内与端外推送

    端指的是客户端,当App的推送服务在运行的时候,这时的推送称为端内推送。当App推送服务没有运行,或者被系统干掉的时候,就需要进行端外推送。

    端内推送一般是走App自己实现的一套推送系统:推送服务器是自己的,客户端维护一条长连接连到自己的推送服务器,不依赖任何第三方的推送系统,长连接与短连接就是端内推送的实现方式。

    端外推送,在iOS上只要使用APNS就行了,在Android上,跟APNS对应的服务是谷歌的GCM (Google Cloud Messaging),但是谷歌的网络我们用不了,所以我们必须依赖第三方的推送平台

    第三方推送,Android手机有非常多的厂商,各厂商推送没有统一的问题,导致Android消息推送难以同IOS一样。

    我们可以到各厂商开发者平台注册应用,然后进行集成,开启对应推送功能,获取对应的key和secret,也可以采用个推,极光推送,BAT大厂推送等,但是要钱。

    通知与透传消息

    • 透传消息是指第三方推送消息给客户端SDK,直接把消息通过回调方法发送给应用,不做任何处理,应用可以自己选择如何展示,在通知栏或者在应用右上角显示红点等方式。
    • 通知消息是指在设备接收到消息之后,直接弹出标准安卓通知栏通知。

    如果自己没有实现端内推送,也可以全部都通过第三方推送来实现,不过应该采用透传的方式。

    Android端实现消息推送的几种方式

    1. 轮询:客户端定时向服务器请求数据。伪推送。缺点:费电,费流量。

    2. 拦截短信消息。服务器需要向客户端发通知时,发送一条短信,客户端收到特定短信之后,先获取信息,然后拦截短信。伪推送。缺点:贵而且短信可能被安全软件拦截。

    3. 持久连接(Push)方式:客户端和服务器之间建立长久连接。真正的推送。

      • Google的C2DM(Cloudto Device Messaging)。需要科学上网,国内大多数用户无法使用。

      • XMPP。XMPP(可扩展通讯和表示协议)是基于可扩展标记语言(XML)的协议。androidpn是一个基于XMPP协议的java开源Android push notification实现。它包含了完整的客户端和服务器端。

      • MQTT。MQTT是一个轻量级的消息发布/订阅协议,它是实现基于手机客户端的消息推送服务器的理想解决方案。

    关于服务保活,为什么长连接还需要保活,就是因为安卓8.0后Service后台服务随时可能被干掉,还有TCP在一段时间内没有消息传递就会断开连接等等,就不在此展开。

    关于MQTT知识:

    https://www.runoob.com/w3cnote/mqtt-intro.html

     

     

     

     


     

    展开全文
  • Android实现APP在线下载更新,实现了软件自动更新功能的方法.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
  • ## Introduction NoPush是面向Android开发人员的消息推送库。 像许多其他推送库,例如JPush,BaiduPush等。 但是,与那些库不同,推送库提供的推送服务具有较少的权限,并且它是开源的,从而保证了不滥用和不作恶...
  • 平台提供整合了Android推送、iOS推送的统一推送服务。 产品特点 多种推送方式 Push Methods 通知:推送文本内容直接展示在用户的通知栏中。 自定义消息推送自定义的消息内容透传给应用处理。 富媒体:推送预先...
  • Android消息推送总结

    千次阅读 2018-12-24 21:38:57
    由于国内防火墙以及各手机厂商系统定制的原因,Android系统内置的GCM(已升级到FCM)推送服务在国内基本不能用,大家只能各自发挥,有的像QQ、微信一样自己搭建推送服务,有的集成像极光、个推等专门做推送服务的第三...

    现状

    由于国内防火墙以及各手机厂商系统定制的原因,Android系统内置的GCM(已升级到FCM)推送服务在国内基本不能用,大家只能各自发挥,有的像QQ、微信一样自己搭建推送服务,有的集成像极光、个推等专门做推送服务的第三方库,有的则使用手机厂商提供的推送服务如华为推送、小米推送。但即便有这么多选择,目前也仍然没有一家能做到百分百可靠,究其根源还是各大厂商各自为战缺乏统一规范所致。而由于推送服务都需要在后台长期驻留,多种多样的消息推送也成了影响Android手机性能和耗电的元凶之一。

    原理

    推送的实现原理主要有三种:

    轮询:客户端定时从服务端拉取最新消息,这种方式需要考虑轮询的频率,如果太慢可能导致消息的延迟,如果太快,则会大量消耗流量和电池。对于即时通讯类的产品,这种方案完全不可用;

    SMS: 服务端有新消息时,通过短信的方式发送到客户端,客户端监听短消息并获取消息内容;这种方式由于发送短信需要向运营商缴纳费用,故而成本较高;

    长连接:客户端与服务端保持长连接,服务端有新消息时通过连接主动发送到客户端;这种方式既能保证消息的实时性,又不会过于消耗手机资源,依托互联网成本不高,所以我们说的推送太多都是采用这种方式。

    注:这里说的长连接是应用层的概念,它的传输层实现既可以是TCP也可以是UDP。

    关键技术

    要实现一个高性能、低消耗的消息推送服务,对于Android客户端来说,涉及的关键技术主要有三点:心跳策略,后台保活 和 休眠唤醒。

    心跳策略

    前面说到了通过长连接的方式实现消息推送,而长连接往往会因为NAT表超时、DHCP租期、网络状态变化等问题而断开,因此需要不时地传输心跳数据来检测和维持连接的可用。而心跳策略做的就是在合适的时间以合适的间隔去发送心跳包,一个好的心跳策略既可以保证连接的稳定以避免消息延迟,又可以降低因为心跳而引起的信道资源消耗以及手机流量和电量损耗。

    微信智能心跳策略

    详细可以看这篇文章https://mp.weixin.qq.com/s/ghnmC8709DvnhieQhkLJpA?:

    前后台区分处理

    为了保证微信收消息及时性的体验,当微信处于前台活跃状态时,使用固定心跳。

    微信进入后台(或者前台关屏)时,先用几次最小心跳维持长链接。然后进入后台自适应心跳计算。目的是尽量选择用户不活跃的时间段,来减少心跳计算可能产生的消息不及时收取影响。

    自适应心跳算法

    自适应心跳算法的做法是通过从小到大逐步增加心跳间隔,来逼近出最大可用心跳,在逼近过程中使用延迟心跳测试法,即每次测试新的心跳间隔前,需要使用短心跳连续成功三次,才认为网络相对稳定,可以进行当前心跳间隔的测试。

    在最大心跳(即NAT超时值)算出来之后,使用稍微小一点的值作为后台稳定的心跳间隔,以避免计算结果是临界值的情况。在维持稳定心跳的过程中使用动态调整策略,即在发生心跳失败后,使用延迟心跳测试法测试五次,如果有一次成功,则保持当前心跳值不变,如果五次全部失败,则重新计算心跳值,并且以周为周期,每周三重新计算心跳值。

    使用冗余Sync和心跳,即在用户的一些主动操作以及联网状态改变时,增加冗余Sync和心跳,确保及时收到消息。如当用户点亮屏幕时,做一次心跳;当微信切换到前台时,做一词Sync; 联网重建信令TCP时,做一次Sync;

    后台保活

    Android系统在内存不足会将进程杀死,诸如360等清理软件也会将进程杀死,各厂商定制的后台管理机制也可能会将进程杀死,推送服务面临的威胁如此之多,如何维持推送服务不死也是一大难题。

    Android内存回收机制

    Android系统将进程按照优先级,从高到低划分为5类:

    1、前台进程

    (1)Activity正在与用户进程交互(Activity的onResume已经被调用)
    (2)与正在和用户交互的Activity绑定的Service
    (3)Service运行在前台——Service中调用了startForeground函数
    (4)Service正在执行生命周期回调函数(onCreate,onStart,onDestory)
    (5)BroadcastReceiver正在执行onReceive方法

    2、可视进程

    (1)Activity没有运行在前台,但是用户仍然可见(它的onPause方法被调用),例如:当前台Activity启动了一个Dialog,这样Dialog运行在前台,Activity仍然可见,属于可视进程。
    (2)与一个可视的Activity绑定的服务所在的进程

    3、服务进程

    进程中运行着被startService()启动的服务,并且没有进入上面1中(3)、(4)这两种情况。

    4、后台进程

    没有可见的Activity,并且没有运行中的服务

    5、空进程

    没有包含活动应用组件的进程为空进程,也就是进程的应用组件已经运行完毕。

    每个进程都持有一个adj值,优先级越高的进程持有的adj值就越小。Android内核中的low memory killer会依据这个值来选择杀死哪些进程,比如当内存小于X时,杀死adj值大于Y的进程,前台程序的adj值为0,这意味着它不会被系统杀死。

    保活方法

    保活的方法主要分为两类,一是尽量减少进程被杀死的概率,一是在进程被杀死后能尽快拉活。

    减少杀死的概率:

    • 通过startForeground设为前台服务
    • 在service的onStart方法里返回 STATR_STICK
    • 提高service的优先级
    • 使用系统级service
    • 加入厂商白名单

    拉活的方法:

    • 通过监听系统广播拉活

    • 多个app相互拉活

    • 在service的onDestroy方法里重启service

    • 服务互相绑定

    • 在native层fork一个子进程来与主进程互拉。

    休眠唤醒

    为了节省电量,Android系统在一段时间不操作后,会进入休眠状态,Android6.0之后更是引入了Doze和Standby两种省电模式,达到进一步省电的目的。在这些省电模式下,会挂起一些设备的电源,限制网络访问和一些其它的后台操作(详见Android系统休眠机制),因此休眠自然也会影响到后台的推送服务。

    Android休眠机制

    由于Android系统是基于Linux内核的,所以Android系统地休眠机制也继承自Linux,并且在此基础上增加了唤醒锁机制。

    唤醒锁(WakeLock)

    wake_lock 在Android的电源管理系统中扮演一个核心的角色。wake_lock是一种锁的机制,只要持有锁,系统就无法进入休眠,这个锁可以被用户态程序和内核获得。唤醒锁可以是有超时的或者是没有超时的,超时的锁会在超时以后自动解锁。如果没有锁了或者超时了,内核就会启动休眠的那套机制来进入休眠。

    Doze和App Standby

    从Android 6.0 (API level 23)开始,Android提供了两个节电功能用来增加电池的续航时间。Doze 可以在设备长时间不使用时,通过延迟后台CPU和网络的活动来减少电池的消耗;App Standby将延迟没有交互的app的网络活动。

    Doze:

    手机在不插电熄屏的状态下,静止不动一段时间(大概1个小时)后,会进入IDLE状态,此机制无视WeakLock,就是说即使持有WeakLock,但在满足上述条件后还是会进入IDLE状态。此状态下将限制应用的网络访问,GPS以及WIFI扫描,推迟包括JobScheduler、Syn、Alarm等操作。在IDLE状态下一段时间后,系统会退出该状态,进入到IDLE_MAINTENANCE状态,此状态下将运行之前推迟的那些操作,并且允许接入网络。在这之后系统又会回到IDLE状态,并且随着休眠时间的增长,IDLE状态下停留的时间也越来越长,进入到IDLE_MAINTENANCE状态的频率也将越来越低,直到维持在一个稳定值。

    App Standby:

    在App Standby模式下Android系统会使一个用户长时间未使用的应用进入空闲状态。具体来说,当用户长时间未与应用发生交互操作或以下任意场景都未出现时,Android系统就会使应用进入空闲状态:
    1.用户主动启动应用
    2.应用存在前台进程(前台活动或前台服务,或有组件被另一前台活动及服务使用)
    3.应用创建了一个用户可见的锁屏界面上或者是收入Notification tray中的Notification

    当用户给Android设备接入充电电源时,Android系统会将所有处于Standby状态的应用释放,允许它们自由的访问网络并执行所有Standby期间暂停的Jobs和Sync。如果应用长时间处于空闲状态,Android系统将会允许处于空闲状态的应用以大约一天一次的频率访问网络。

    唤醒方法:

    1、在执行发送心跳包、重连、拉取推送内容等操作时使用PARTIAL_WAKE_LOCK,防止在执行重要操作时CPU休眠,并在使用完成后释放,以便休眠;

    2、心跳定时器使用AlarmManager,在设置闹钟时使用带WAKEUP后缀的type,在6.0以后使用setExactAndAllowWhileIdle或setAndAllowWhileIdle方法设置闹钟,以便能在Doze模式下唤醒;

    3、在Doze模式下,alarm闹钟会被推迟,网络会被限制,可以通过申请加入电池优化白名单的方法修复;申请方法为在mainifest中增加REQUEST_IGNORE_BATTERY_OPTIMIZATIONS权限,在代码中使用ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS的Intent来弹出申请对话框。

    4、部分手机即便使用了上述方法也会存在网络断开、线程睡死等现象,只能自行适配,看看是否有独特的后台管理机制与省电策略。

    展开全文
  • 为增加极光推送成功率 针对VIP用户需要联系商务 VIP专享高速推送通道、子账户管理、更高的推送频率、用户分群推送 联系商务 极光新的SDK,已集成了小米,华为,魅族的厂商通道功能
  • 由于最近项目要用到Android消息推送,关于Android推送的解决方案有很多种,有C2DM,轮询, SMS,MQTT协议,XMPP协议和第三方平台,经过我们对项目需求的考虑之后我们选择了第三方平台推送的小米推送,下面就是小米...
  • c#实现消息推送

    2018-07-03 15:59:16
    apollo实现c#与android消息推送 需要的软件和包是apache apollo的代理服务器
  • 极光推送,是一个面向普通开发者开放的...参考官方Android SDK 教程完成激光推送的基本配置区别通知和自定义消息  通知即指在手机的通知栏(状态栏)上会显示的一条通知信息。  自定义消息是极光推送自己的概念。 
  • NotificationTest 消息推送的简单demo.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
  • 标签是用户的一种属性,在给某些用户设置某类标签后就可以针对推送。比如给喜欢“足球”打上“足球”标签,就可以只给他们精准推送。可以在应用管理页面管理每个应用的标签,每个应用最多打100个标签 Android平台SDK...
  • 当前随着移动互联网的不断加速,消息推送的功能越来越普遍,不仅仅是应用在邮件推送上了,更多的体现在手机的APP上。当我们开发需要和服务器交互的应用程序时,基本上都需要获取服务器端的数据,比如《地震应急通》...
  • 前言 iOS和Android上的实时消息推送差异很大,往小了说是技术实现的差异,往大了说是系统实现理念的不同。实时消息推送在移动端互联网时代很平常,也很重要,它的存在让智能终端真正成为全时信息传播的工具。本文将...
  • 最近有时间在我们的应用中集成了华为,小米,OPPO,vivo四大平台的推送,一切顺利。 这里做一个记录, 开撸: 一、华为推送 1、下载HMS Agent套件,解压如下: 找到GetHMSAgent_cn.bat 打开如下,按照提示...
  • 附带Nginx服务器搭建文档和flv分析器,详细博客内容链接:https://blog.csdn.net/wozuihaole/article/details/107838147
  • 最近接到新需求,需要...搭建服务器,有很多选择,作为 Java 为基础开发语言的,所以需要 apache 的服务器,网上有很多教程,但都是 1.7.1 的版本,但是官网已经没有这个版本的软件了,不过可以通过以下链接去下载: ...
  • Android 推送消息开放接口 OpenPush

    千次阅读 2016-11-05 17:09:59
    Android 推送消息开放接口 OpenPush 我们知道, 在中国不能使用 google 的服务. 在中国销售的手机甚至没有安装 google 的服务.所以, 原本由 google gcm 提供的推送消息服务, 在中国是不可以使用的. 你的 app 要在...
  • [文档标题] APP消息推送 PAGE 4 APP消息推送推送方式基础 当APP需要和服务器交互时基本上都需要获取服务器端的数据要获取服务器上不定时更新的数据一般来说有两种方法第一种是客户端使用PULL拉的方式就是隔一段...
  • android收不到消息推送原因分析

    万次阅读 2018-10-20 12:01:38
    怎么保证能实时收到推送消息? 应用需要有一个常驻的后台进程,能够实时处理服务器发过来的推送消息。 通过系统级推送服务来推送消息,这种做法应用不需要实现一个常驻的后台进程 现状 按理说如果有一个统一...
  • Android端进程被杀死后,目前自带的保护后台接收消息活跃机制。暂时没有什么好的机制保持任何情况下都活跃 文章参考:http://blog.csdn.net/marswin89/article/details/50917098 android原生系统用home键杀进程可以...
  • Android消息推送(广播机制)+通知

    千次阅读 2016-09-09 14:00:27
    Android广播机制使用了观察着模式; (1) 通知 1) 获取状态通知栏管理 NotificationManager 是一个系统Service,所以必须通过getSystemService(NOTIFICATION_SERVICE)方法来获取。 即: ...
  • Android集成小米推送教程

    千次阅读 2021-02-22 16:29:27
    目前Android应用在后台杀死进程之后,就收不到通知了,想要接收消息推送,需要集成各个厂商的推送SDK,以小米为例 1.接入前准备 1. 登录小米开发者网站(https://dev.mi.com/console/appservice/),创建App并...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 25,129
精华内容 10,051
关键字:

安卓软件消息推送