Ably can deliver push notifications to devices using, amongst others, Apple’s Push Notification service and Google’s Firebase Cloud Messaging service. Push notifications, unlike Ably’s channel based pub/sub messaging, do not require the device to maintain a connection to Ably, as the underlying platform or OS is responsible for maintaining its own battery-efficient transport to receive push notifications. Therefore, push notifications are commonly used to display visual notifications to users or launch a background process for an app in a battery-efficient manner.
Delivering push notifications
As shown above, Ably provides two models for delivering push notifications to devices:
Ably provides a REST API that allows push notifications to be delivered directly to:
- Devices identified by their unique device ID
- Devices identified by their assigned
- Devices identified by the recipient details of the push transport such as their unique
registrationTokenin the case of FCM,
deviceTokenin the case of APNS, or
encryptionKeyin the case of a Web device (experimental). This means is particularly useful when migrating to Ably with existing push notification target devices.
The model for delivering push notifications to devices over channels is intentionally very similar to how messages are normally delivered using Ably’s pub/sub channel. For example, a normal message published on an Ably channel is broadcast immediately to all realtime subscribers of that channel. When broadcasting push notifications on channels, however, the process is the same with the exception that the subscribers (devices receiving push notifications) are registered in advance using our API and the message itself must contain an extra push notification payload that specifies the optional visual format and optional data payload of the push notification.
Activating a device and receiving notifications
Every device that will receive push notifications must register itself with the platform specific push notification service (APNs on iOS, FCM on Android). The Ably client libraries provide a consistent API for registration across all platforms, including device registration and receiving push notifications via Ably channels sent from other platforms.
Managing devices and subscriptions
Whilst the realtime client libraries provide APIs for a device to activate itself (via
client.push) and subscribe for push notifications (via
channel.push), those APIs are intentionally limited to actions pertaining to the device it is run on.
Ably currently offers support for push notifications on the following platforms:
- Apple Push Notifications
- supported on all mobile devices running iOS and desktop devices running macOS
- Firebase Cloud Messaging
- supported on all Android and iOS devices, although we use FCM exclusively for Android message delivery
- Experimental W3C Push API
- experimental support for modern W3C compliant browsers (this does not include Apple’s Safari browser). You must request access to use this API.