OpenPush - 适用于 Android 的自由、去中心化推送消息框架
发布于 2020-02-03,发布者为推送消息是连接移动设备的重要组成部分。它们也是开源 Android 生态系统中关键缺失的部分之一。到目前为止,自由 Android 应用要么需要实现自己的推送通知系统,要么不使用任何推送消息,要么使用专有的 Google Cloud Messaging 服务。
我们希望我们的移动设备具有较长的电池寿命和即时通知。在实现你自己的移动推送功能时,你通常可以针对这些目标中的任何一个进行优化。如果用户正在运行多个应用,每个应用都有自己的持续的推送通知连接,则尤其如此。为了解决与维护多个连接相关的电池消耗问题,Google 引入了 Google Cloud Messaging (GCM) 框架,该框架最近已成为 Firebase Cloud Messaging (FCM)。Firebase Cloud Messaging 依赖于 Android 设备上专有的 Google Play 服务框架的可用性。使用 FCM 还需要将专有的 FCM 客户端库包含到 Signal、Wire 甚至 Firefox 等开源 Android 应用中,这使得它们实际上是非自由软件,无法通过完全自由的 F-Droid 软件存储库进行分发。此外,所有通过 FCM 传递的推送通知都需要通过 Google 的服务器留下元数据踪迹,即使它是空唤醒事件或消息内容已加密。
像 Matrix、Nextcloud 或 RocketChat 这样的去中心化、自托管系统目前仍然依赖 Google 的基础设施和服务条款来提供推送通知。这些应用的 F-Droid 版本需要依靠更低效的轮询,甚至缺乏对通知的任何支持。
OpenPush 是一个自托管、自由的替代推送消息实现,可以与 FCM 一起运行或替代 FCM。
在 FOSDEM 上介绍了 OpenPush 。该演讲提供了一般架构概述,并介绍了推送消息服务的设计和实现挑战。
