This article describes various issues that could lead to push notifications (PN) not being delivered to the end user and offers advice on how to address them.
Currently the only scenario that involves the Futurae backend sending a visible push notification to the end user is when performing a One-Touch authentication attempt or making use of the Custom In-App Message, yet there are a few reasons that may cause the notifications to not be delivered.
Push notification flow overview
The diagram below illustrates the end-to-end flow of push notification registration and delivery, and highlights where delivery may be affected by factors outside of Futurae’s control.
Invalid or expired server-side PN credentials
This is one common reason for failed push notifications in customer apps which integrate the Futurae mobile SDK. This case is relatively easy to identify, as it will be affecting all the users of a specific platform (iOS or Android).
Futurae currently supports the following types of push notification credentials:
Apple Push Notification service (APNs) credentials: Composed of the APNs Certificate and key, or, preferably, an APNs authentication token (JWT), which consists of a Key ID, Team ID, and Auth Key, offering improved security and does not require yearly renewal, providing an easier long-term maintenance compared to certificates. The credentials are used to authenticate to the APNs when sending push notification messages to iOS devices.
Google Firebase Cloud Messaging (FCM HTTP v1) credentials: Composed of the FCM Project ID and Service Account, it's required to send push notifications to Android devices through the FCM backend.
If the push notification credentials configured for one of your Futurae mobile SDKs have expired or might have been incorrectly configured in the first place, please follow these steps:
- Get your current APNs or FCM credentials from your Apple developer account or Firebase console respectively
- Login to Command & Control (formerly Futurae Admin)
- Select the Futurae Service on the left panel
- Head to "Settings" >> "Mobile SDK"
- Update the APNs/FCM credentials and save
Note that if you are using the Futurae mobile app or a Futurae Access app, you don't need to worry about this, as Futurae takes care of the necessary PN credentials configuration.
Push token outdated
This case applies only to customer apps that integrate Futurae mobile SDK.
Sometimes, the app's registered push token for APNs/FCM may be automatically refreshed. The app should receive the new push token from the OS and would need to always communicate it to the Futurae backend using the functionality provided by the Futurae mobile SDK. If the push token is not communicated to the Futurae backend in time, it will result in push notifications not being delivered to the particular device and user. Other users and devices of the same Futurae Service, for which the Futurae backend already has the correct push token, will not be affected.
The customer app that integrates the Futurae mobile SDK is responsible for registering the app (as targets for push notifications) on APNs/FCM using each platform's (iOS/Android) provided functionality. As a result, the app receives a push token (used to identify the target device on the respective push notification server) that needs to be registered on the Futurae side using the Mobile SDK methods for Android (registerPushToken) and iOS (didRegisterForRemoteNotificationsWithDeviceToken). The push token registration should happen both at the very first time, as well as every time the push token is refreshed, as mentioned above. Registering the push token at each app launch may further improve reliability, ensuring that any unnoticed token changes are updated to Futurae.
Common pitfalls when registering push notification tokens
While the SDK documentation provides the necessary steps to register and handle push notification tokens, a few implementation oversights can lead to silent failures when registering the push token to Futurae, potentially impacting push notification delivery to end users.
Below are some common cases observed during customer integrations.
Android SDK v3 – Missing `await` when registering Firebase token
The Futurae Android SDK v3 provides the method
FuturaeSDK.client.accountApi.registerFirebasePushToken()
to register the Firebase Cloud Messaging (FCM) token with the Futurae backend.
If this call is made without using Kotlin’s await operator, the asynchronous registration may not complete before the method returns.
As a result, the new Firebase token might not be updated on the Futurae backend, even though the method appears to have been invoked successfully.
To avoid this, ensure that registerFirebasePushToken() is called within a coroutine and that the call is awaited until completion.
iOS SDK v3 – Missing completion handlers in push token registration
In iOS integrations using the Futurae SDK v3, the push notification token must be registered with the Futurae backend using:
FTRClient.shared.registerPushToken(deviceToken, success: { ... }, failure: { error in ... })
As described in the SDK documentation, both the success and failure completion handlers are mandatory.
If these handlers are not included, the registration call may appear to execute successfully but can fail silently, leaving the device without a valid push token on Futurae.
Push notification permissions not requested or granted
Both iOS and Android require explicit user consent before an app can receive push notifications.
If the user declines the permission prompt, the OS may not issue a valid push token, or the token may not be usable for delivering notifications.
As a result, no push notifications will be received, even if the Futurae SDK and backend are correctly configured.
To avoid this, ensure that your app:
- Requests notification permission at an appropriate time during onboarding.
- Clearly informs the user that enabling push notifications is required for authentication or app functionality.
-
Handles the case where permission is denied (for example, by displaying an in-app message prompting the user to enable notifications from system settings).
Device configuration and intermittent connectivity issues
Assuming that the APNs/FCM credentials are correctly configured on the Futurae backend, as well as each device's push token gets correctly registered, then user device configuration, intermittent network connectivity issues, as well as intermittent delays in APNs/FCM delivering the push notification are the most common reasons for not prompt delivery.
In case that the user device is offline or under poor network conditions, APNs/FCM may not be able to deliver the push notification. Once the user comes back online, all non-expired push notifications will be delivered.
Moreover, device-specific configuration (such as push notification permissions for the particular app, do not disturb mode, as well as a particularly restrictive corporate network or VPN) or even application (such as, push notification blockers) may prevent push notifications from being displayed to the user.
Modern operating systems also include features that can delay or suppress delivery:
iOS: Focus modes, notification summaries, or missing Time-Sensitive permission can delay or silence notifications.
Android: Notification permissions, Battery Saver, background data restrictions can delay or suppress delivery.
An incorrect device time or date configuration can also prevent push notifications from being delivered.
If the device’s clock is significantly ahead of the actual network time, APNs or FCM may consider the push message expired and drop it before display.
It is important to note that all of the causes mentioned in this section are completely out of Futurae's control. Once the Futurae backend connects successfully to APNs/FCM and uses a valid push token to deliver the PN payload to APNs/FCM, Futurae cannot subsequently control any of the above mentioned factors that might result in a delayed or no delivery of the push notification to the user's app.
Performing One-Touch even if no notification is delivered
It is important to highlight that even if push notification is not currently delivered for whatever, the user may still be able approve a One-Touch login or transaction.
The Futurae app and Futurae Access apps, whenever brought to foreground, will check if there are any pending authentication attempts and in case there are, the app will automatically fetch the required information and display the approval screen, enabling the user to approve a One-Touch session despite the notification being not delivered.
This same capability can be achieved by customer apps which use the Futurae mobile SDK. For that you just need to make sure that your app follows our Account Status instructions for Android and iOS, whenever brought to foreground, or using some other kind of trigger. For example, an explicit "refresh" functionality in the UI of the app which enables the user to actively check for pending authentication sessions.
Useful references
iOS SDK guide
https://www.futurae.com/docs/guide/futurae-sdks/mobile-sdk-ios/
Android SDK guide
https://www.futurae.com/docs/guide/futurae-sdks/mobile-sdk-android/
FCM credentials
https://firebase.google.com/docs/cloud-messaging/send/v1-api
Comments
0 comments
Article is closed for comments.