首页 > 解决方案 > 带网络连接的 Android 后台服务

问题描述

目标
创建一个有网络连接的长时间运行的后台服务,类似于Zello应用程序。

问题
从 API 级别 26 (Oreo) 开始,对后台服务及其网络活动有严格的限制。

看看 Zello 应用程序,它有一个持续运行的后台服务,即使设备处于睡眠状态也能够接受音频和文本消息,我想知道他们是如何做到的?他们的服务没有在前台运行。此外,看起来他们并没有为此使用推送消息,因为该应用程序在推送消息接收出现问题的情况下(例如低端小米手机)工作得相当稳定。

任何想法,将不胜感激。

标签: androidandroid-service

解决方案


根据我收集的这些应用程序使用 Firebase Cloud 消息服务: https ://firebase.google.com/docs/cloud-messaging/

Firebase 服务嵌入在 Android 系统中,并与 Firebase 服务器保持持续的网络连接。然后,这些应用程序会联系 firebase 服务器,后者又会通知目标设备。

优点:

  • Android 系统负责保持服务器连接处于活动状态并运行
  • 网络负载被最小化,因为一个连接用于所有使用 firebase 服务的应用程序。

缺点:

  • 所有数据都通过 firebase 服务器发送,因此(理论上)Google 可以直接访问
  • 根据使用您的应用程序的设备数量,您需要为服务付费。

提出的类似问题也可能有助于解决该问题: 推送通知技术如何在 Android 上工作?


推荐阅读