睿诚科技协会

android 实时推送技术

这是一个非常重要且经典的话题,因为对于许多 App(如社交、IM、电商、新闻、工具类)实时推送是提升用户体验和活跃度的关键。

android 实时推送技术-图1
(图片来源网络,侵删)

本文将从以下几个方面展开:

  1. 为什么需要实时推送?
  2. Android 推送的“痛点”与挑战
  3. 主流的实时推送解决方案
  4. 技术选型与对比
  5. 最佳实践与注意事项

为什么需要实时推送?

实时推送的核心价值在于即时性可靠性

  • 提升用户体验:用户可以第一时间收到新消息、订单状态、动态更新等通知,无需频繁手动打开 App。
  • 提高用户粘性:有效的推送能吸引用户回到 App,增加日活和月活。
  • 关键业务场景
    • 即时通讯:微信、QQ 的新消息提醒。
    • 社交动态:朋友圈、微博的新点赞、评论。
    • 电商订单:下单、支付、发货、签收状态变更。
    • 新闻资讯:突发新闻、重要公告。
    • 系统提醒:版本更新、服务维护通知。

Android 推送的“痛点”与挑战

与 iOS 相比,Android 的推送生态要复杂得多,这也是其技术难点所在,主要挑战源于 Android 系统的“后台执行限制”

为了省电、提升流畅度和安全性,Google 不断加强对 App 后台活动的限制,这导致传统的、让 App 自己在后台长连接保活的方式几乎失效。

android 实时推送技术-图2
(图片来源网络,侵删)
  • Doze 模式 (Android 6.0+):设备闲置一段时间后,系统会定期让设备进入浅度睡眠,限制网络访问和 CPU 唤醒。
  • 应用待机模式:如果用户长时间未使用某个 App,系统会将其置于“待机”状态,限制其后台活动。
  • 后台限制:在 Android 8.0 (Oreo) 及以上版本,对后台服务的限制更加严格,默认无法创建后台服务。
  • 厂商系统级的省电优化:除了 Google 的原生限制,华为、小米、OPPO、VIVO 等厂商都有自己的“神隐模式”、“自启动管理”等,它们会进一步杀死后台进程和网络连接,导致推送延迟甚至丢失。

在 Android 平台,依赖 App 自身维持长连接来实现实时推送,是一条“死路”,必须借助第三方平台或系统级的能力。


主流的实时推送解决方案

业界主要有以下几类解决方案,它们各有优劣,适用于不同的场景。

厂商推送服务

这是目前最主流、最可靠的方案,它利用手机厂商提供的系统级推送通道,将消息直接推送到用户的手机系统通知栏,不受 App 后台状态限制。

  • 代表

    android 实时推送技术-图3
    (图片来源网络,侵删)
    • 华为推送服务
    • 小米推送服务
    • OPPO 推送服务
    • vivo 推送服务
    • Google Firebase Cloud Messaging (FCM) - 在海外和部分国内机型(如一加、部分三星)上表现优秀。
  • 工作原理

    1. App 向厂商推送服务器注册,获取一个 Token。
    2. 业务服务器需要将 App 的 Token 与用户账号绑定。
    3. 业务服务器向厂商推送服务器发送消息,并指定目标 Token。
    4. 厂商服务器通过系统级通道,将消息直接推送到设备。
    5. 系统收到消息后,弹出通知,并可以唤醒 App 的后台服务来处理数据。
  • 优点

    • 可靠性极高:绕过了 Android 的后台限制,消息触达率是所有方案中最高的。
    • 省电:App 无需常驻后台,不消耗电量。
    • 体验好:消息能被快速、稳定地送达。
  • 缺点

    • 集成复杂:需要同时集成多个厂商的 SDK,处理各自的逻辑和回调,维护成本高。
    • 覆盖不全:每个厂商只支持自己的手机,如果你的 App 用户设备品牌分散,就需要集成所有主流厂商的推送。
    • 厂商政策限制:厂商对推送的频率、内容、类型有严格规定,滥用可能导致推送能力被限制。

第三方推送聚合平台

为了解决集成多个厂商推送的复杂性,第三方聚合平台应运而生,它们在内部封装了所有主流厂商的推送 SDK,并提供统一的 API 接口。

  • 代表

    • 个推:国内老牌的推送服务商,生态成熟。
    • 极光推送:开发者社区非常熟悉,文档和 SDK 易用性好。
    • 小米推送服务:本身既是厂商推送,也提供聚合服务能力。
    • 腾讯信鸽:腾讯生态下的推送服务。
    • 华为推送服务:同样也提供聚合服务能力。
  • 工作原理

    1. App 集成第三方平台的 SDK。
    2. SDK 内部会自动集成并调用各个厂商的推送 SDK,进行注册和绑定。
    3. 业务服务器通过第三方平台提供的 API 发送消息。
    4. 第三方平台根据目标用户的设备类型,选择最优的推送通道(如华为手机走华为通道,小米手机走小米通道)进行下发。
  • 优点

    • 集成方便:一次集成,覆盖所有主流厂商推送,大大降低了开发和维护成本。
    • 功能丰富:除了基础推送,还提供推送统计、用户标签、消息模板、AB 测试等高级功能。
    • 通道互补:除了厂商通道,通常还会自建一套长连接通道(基于 MQTT 或长 HTTP)作为保底,用于覆盖那些不支持厂商推送的设备或网络环境。
  • 缺点

    • 依赖第三方:服务稳定性和数据隐私受第三方平台影响。
    • 成本:通常按日活或消息量收费,对于海量用户成本较高。
    • 定制化程度低:受限于第三方平台的规则和功能。

自建长连接推送

这是最传统的方式,即 App 在后台自己维护一个长连接(通常是 TCP 或基于 WebSocket 的长 HTTP),用于接收服务器下发的指令。

  • 工作原理

    1. App 启动后,与自建的服务器建立一个长连接。
    2. 服务器有消息要推送时,通过这个长连接将消息发送给 App。
    3. App 收到消息后,解析并处理,如显示通知。
  • 优点

    • 完全可控:不依赖任何第三方,自主性强。
    • 功能灵活:可以自定义协议,实现非常复杂的业务逻辑。
  • 缺点

    • 可靠性极差:在 Android 的后台限制下,长连接非常容易被系统杀死,导致消息延迟或丢失。
    • 开发成本高:需要自己搭建和维护推送服务器,处理连接保活、断线重连、心跳检测等复杂逻辑。
    • 耗电:为了维持长连接,App 需要频繁唤醒,非常耗电。
    • 需要保底方案:为了提高可靠性,通常需要将自建方案与厂商推送结合使用,作为厂商推送的补充或保底通道,这就回到了“方案一”或“方案二”的范畴。

除非有非常特殊的需求(如金融、政务等对数据安全有极高要求的内部 App),否则强烈不建议完全采用自建长连接方案作为主力推送通道。


技术选型与对比

方案 可靠性 集成复杂度 成本 控制权 适用场景
厂商推送 ⭐⭐⭐⭐⭐ (极高) ⭐⭐ (高,需多端集成) 免费 对消息触达率有极致要求,且有足够研发资源去维护多端集成的 App。
第三方聚合平台 ⭐⭐⭐⭐ (高) ⭐ (低,一次集成) 收费 (按量/按DAU) 绝大多数 App 的首选,平衡了可靠性、开发成本和功能需求。
自建长连接 ⭐ (低) ⭐⭐⭐⭐ (极高) 高 (服务器/人力) 极高 不推荐,仅作为特殊场景下的补充或保底通道。
FCM ⭐⭐⭐⭐ (高,在海外和部分国内机型) ⭐⭐ (中等) 免费 主要面向海外市场,或国内用户设备品牌分散且对华为、小米等品牌依赖不高的 App。

推荐策略(混合推送)

目前业界最成熟、最可靠的方案是“混合推送”,即以第三方聚合平台为主,以厂商推送为辅助的方案。

  • 主体:使用第三方聚合平台(如个推、极光)的 SDK。
  • 工作流
    1. App 集成第三方 SDK。
    2. SDK 内部会自动尝试集成并注册厂商推送
    3. 如果注册成功(即设备支持厂商推送),则优先使用厂商通道进行推送。
    4. 如果注册失败(用户关闭了权限,或不支持厂商推送的设备),则退回到第三方平台自建的长连接通道进行推送。
  • 优势:结合了厂商推送的高可靠性和第三方平台的集成便捷性,实现了 1+1 > 2 的效果,是目前 App 推送的“黄金标准”。

最佳实践与注意事项

  1. 用户授权是前提:在 Android 13 (API 33) 及以上版本,发送通知前必须请求 POST_NOTIFICATIONS 权限,务必做好引导,告知用户为什么需要此权限。
  2. 提升推送到达率
    • 引导用户开启自启动:在合适的时机(如首次使用或遇到推送问题时),温和地引导用户在系统设置中为你的 App 开启“自启动”或“忽略电池优化”。
    • 善用厂商通道:确保正确集成了所有主流厂商的推送,并处理其回调逻辑。
  3. 优化推送体验
    • 精准推送:根据用户画像、地理位置、行为习惯等,推送用户真正感兴趣的内容,避免“骚扰”。
    • 清晰的文案:通知文案要简洁、有吸引力,并包含明确的行动点(如“查看详情”、“立即领取”)。
    • 合理的频率:控制推送频率,避免信息过载导致用户反感或卸载 App。
  4. 处理推送点击事件
    • 当用户点击通知时,要能正确跳转到 App 内对应的页面(如聊天详情页、商品详情页)。
    • 需要处理 App 在前台、后台、已关闭等不同状态下点击通知的逻辑。
  5. 数据统计与分析

    使用第三方平台提供的数据后台,分析推送的到达率、点击率、转化率等关键指标,不断优化推送策略。

对于 Android 实时推送,没有“银弹”,但有“黄金标准”。

  • 不要试图通过 App 自身保活来实现推送,这是在对抗 Android 系统的设计,注定失败。
  • 首选采用第三方聚合推送平台,它们是解决 Android 推送复杂性和不可靠性的最佳方案。
  • 最佳实践混合推送策略,利用第三方平台集成厂商推送,实现高可靠、低成本的实时推送体验。
  • 始终将用户体验放在首位,尊重用户,通过精准、有价值的内容来赢得用户的关注。
分享:
扫描分享到社交APP
上一篇
下一篇