Implementations
If you want your application to support UnifiedPush for receiving notifications using an external distributor, check if a library is available for your mobile app framework, programming language and platform.
If there isn’t any at the moment, feel free to reach out to us on Matrix or Mastodon, or to open an issue on Codeberg. Contributions are welcome!
UnifiedPush specifies how applications talk to each other in order to subscribe and deliver push notifications.
Many libraries are available to facilitate the use of this protocol. So knowledge about the specification is not always necessary.
So far there are official libraries for Flutter, as well as Java/Kotlin on the Android platform. There is also third-party library support for other frameworks.
As some users may have multiple UnifiedPush distributors installed on their system, it is necessary to provide a way to let the user decide which distributor they want to use. Some libraries implement a generic UI picker for their frameworks.
Also, UnifiedPush relies on the availability of at least one distributor on the system. For some users this might not be the case. Therefore, embedded distributors can be bundled with the application, which can be used as a fallback. For example, the embedded_fcm_distributor makes an app able to receive push notifications on an Android system that has Google Play Services installed, but no UnifiedPush distributor. This library is also compatible with frameworks like Flutter or React.
Below is a list of known libraries, with a short description and their language/framework.
- android-connector: Core library to support UnifiedPush on Android (Java/Kotlin)
- android-connector-ui (deprecated): Dialog to pick a distributor between those available (Java/Kotlin)
- embedded_fcm_distributor: Embed a distributor that works with Google Play Services. This is a fallback solution when the system has no distributor installed and the Play Services are available. (Java/Kotlin)
- flutter-connector: Flutter library to support UnifiedPush (Flutter)
- expo-unified-push: Expo/React Native integration of the android UnifiedPush library (Expo/React)
- flutter-connector: Flutter library to support UnifiedPush (Flutter)
- unifiedpush-rs: Rust crate
- libunifiedpush: GObject introspection (gir) bindings, usable from C, Python, and other gir-capable languages
- KUnifiedPush: KDE framework based implementation (documentation)
On the application server side, you should use a Web Push library. Most programming languages and frameworks should have such a library available. Make sure that the library complies with the latest version of the Web Push RFCs (see the introduction).