在后台启动一个服务,它确实像在 Whatsapp 中一样被破坏

Start a service in background which does gets destroyed as in Whatsapp

我正在使用 firebase 构建一个聊天应用程序。我想在应用程序处于 background/foreground/terminated 时显示新消息通知。我试图使用后台服务来展示它,但每次应用程序被销毁时它都会被杀死。我知道可以使用 FCM 来完成,但我不想使用它。它也可以使用前台服务来完成,但我不想要那个严格的通知。 我浏览了各种博客,我开始知道会发生这种情况,因为它在同一进程中运行并创建另一个进程,它从 Oreo 和更高版本变得复杂。 我也知道了 JobService 但它的最小周期时间是 15 分钟,如果实施将失去实时通知的性质。

如何像在 WhatsApp 中那样实施? 如果您查看 WhatsApp 的设置,您会看到 1 Process and 1 Service 消息不断显示,表明 MessageService 仍然是 运行 这意味着它可以使用后台服务来完成

我了解到 WhatsApp 也在使用 FCM 这类具有高优先级的东西来显示通知。 当使用 FCM 收到数据消息时,它只是同步数据库中的更改。 此数据消息可以使用 firebase GUI 或受信任的环境发送,例如 admin-sdk ..

我使用后者从我的服务器使用 admin-sdk 发送数据消息。

我使用 API 将用户的设备令牌作为数据消息发送 POST 请求到我的服务器,服务器将通知作为数据消息发送到接收方设备以触发同步。 同步完成后,我已相应发送通知。