F-Droid发布推送通知服务FCM开源替代解决方案UnifiedPush

由于目前Android手机推送通知的唯一选择,只有Google的专有服务Firebase Cloud Messaging (FCM),因此Android开源应用程序商店F-Droid便推出替代方案UnifiedPush,让开发者可以不依赖任一企业服务推送通知。

推送通知对现代移动应用程序体验非常重要,赋给应用程序能够与用户即时沟通的能力,但是F-Droid提到,使用Google的推送通知对用户隐私和独立性产生影响,导致F-Droid应用程序不能包含FCM函数库,因此许多自由及开放源码软件会在应用程序和服务器之间,创建持久且直接的连接用以推送通知。

但这个方法存在许多限制,在应用程序和服务器之间创建直接连接,需占用大量的设备资源,包括电量、CPU和网络资源都会吃紧。操作系统为了要最大程度减少资源负载,通常会暂停未活跃使用的应用程序,但是当每个应用程序都与服务器创建主动连接,则会使操作系统无法暂停这些应用程序。

况且多个应用程序都以自己的节奏Ping服务器,便会使设备无法进入低功耗睡眠模式,使得设备电池更快耗尽,因此如果只由一个特殊的应用程序创建优先连接,便可以最大程度减少这些问题,也使得操作系统可以终止其他应用程序,进入睡眠状态节省电池消耗。

而对开发人员来说,管理后台服务和优化连接,是一个复杂且耗时的工作,借由使用专门的推送通知服务,能够减轻开发人员的负担,使其专注在应用程序的其他部分。UnifiedPush则担任这个专门负责推送通知的角色。

UnifiedPush的核心是一个规范,分为设备客户端和服务器端,设备客户端定义了API使得任意最终用户应用程序,能够与Ntfy与NextPush等配送应用程序通信,而UnifiedPush服务器端API则描述,应用程序向Ntfy与Nextcloud配送服务器发送消息的方式。

因此对用户来说,要在Android上获得采用UnifiedPush的应用程序通知,需要先安装像是Ntfy等配送应用程序,接着打开Ntfy应用程序并且停用电池优化,接着在其他支持UnifiedPush的应用程序中打开UnifiedPush,系统会自动侦测Ntfy应用程序。

UnifiedPush与RFC8030规范的WebPush原则上兼容,WebPush主要是用于浏览器通送通知的开放标准,官方现在正在研究解决方案,以提供更稳定的WebPush支持。现在已经有越来越多应用程序支持UnifiedPush,包括许多Matrix和Mastodon应用程序,官方也正在努力让Telegram和Signal应用程序开源版本支持UnifiedPush。