> until now, the only option for push notifications was Google’s proprietary service, Firebase Cloud Messaging (FCM). UnifiedPush is a new alternative that allows you to get push notifications without being tied to a single company.
> Applications that support UnifiedPush can receive notifications via a dedicated UnifiedPush application that maintains a single server connection to receive all notifications. We call this “UnifiedPush application” a distributor;
Conversations is now a distributor, and UnifiedPush-supporting apps like Element or Tusy can receive notifications through it.
For many apps, notifications are important. Using Mastodon as an example - if someone mentions you on Mastodon, your app should tell you. But unless you actually have the app open, it won't be able to receive any notification from your Mastodon server due to the OS restrictions.
As a solution, the OS vendors created special services embedded into the OS that are allowed to maintain a persistent network connection to the OS vendor's cloud servers.
Then if an app developer wants their app to display a notification, they obtain an API key from the OS vendor and connect to the OS vendor's API and submit their notification to it.
The OS vendor's servers will then deliver the notification to the notification service on the device, the notification service will display it to the user or wake up the app.
Google's service (Firebase Cloud Messaging (FCM)) and Apple's Push Notification Service are proprietary things.
On Android, there are free and open-source apps that don't link to Google's proprietary components, including their notification service. F-Droid is an FLOSS "app store" that will not distribute apps using Google's APIs in their repository. Some "de-Googled" Android flavours remove the component entirely from the OS.
However some developers still would like a way for their app to receive notifications without constantly polling (repeatedly making requests to check for new data) in the background. It's annoying and not very efficient (for network usage or battery).
UnifiedPush is an open API/specification that provides an alternative to the proprietary APIs. It allows you to set up a "distributor" app which will relay notifications to the other apps on your device. The distributor app generally keeps a single open connection to a server, and waits for notifications to come in.
App developers can deliver notifications to the user's chosen notification server using a standard API, and know that it can reach their device. The OS vendors are no longer in the loop.
Conversations is a messaging app, usually used for chats/calls like any other. It uses an open messaging protocol called XMPP, which has a bunch of open-source servers and clients, and can be self-hosted. Conversations already maintains a connection to the XMPP server, and XMPP already has various optimizations to minimize network activity and battery usage.
The Conversations developer has developed a way to re-use the existing XMPP connection for notifications, as well as your messaging traffic. Conversations acts as a "distributor" and will relay notifications to other apps on your device that support UnifiedPush.
Hope this helps! It can be a lot to take in :)
Is the overhead of having 1 TCP connection in idle state really noticably better than having ~20, each for every app? How does UnifiedPush work with apps with traditional protocols, e. g. IMAP/XMPP - I assume the remote server itself must be logged in to your IMAP/XMPP.
I never fully understood Google's mobile notifications.
(Trying to wrap my head around the architecture too, with the last sentence there. Presumably the service and client need to know how to talk to the UnifiedPush provider?)
I'm really hoping something comes along to provide email with webpush/unifiedpush notifications.
As a messaging protocol it appears to work well, it was relatively easy to get it running (although not as easy as matrix) and slidge is coming along nicely to provide interoperability with other chat platforms.