Push

Best SDK for Real-Time Push Notification Delivery: What Actually Matters

9:41

A “your driver has arrived” alert that shows up five minutes late, or a flash-sale push that lands after the sale ended, is worse than no notification at all. If you're choosing a push SDK because delivery speed matters, here's how delivery actually works and what to compare.

How push delivery works

Every push notification takes the same path, whichever SDK you use:

  1. Your server, or your push provider, sends the message with the device's token.
  2. The platform service delivers it: Firebase Cloud Messaging (FCM) on Android and Apple Push Notification service (APNs) on iOS.
  3. The operating system wakes your app or shows the notification directly.
  4. A good SDK then reports back that the message arrived and whether it was tapped.

That means no SDK can deliver faster than FCM or APNs. What an SDK can do is make sure every message is sent in the way that gets it delivered immediately, and tell you when that didn't happen.

Why push notifications arrive late

  • Normal priority on Android. FCM holds normal-priority messages while the phone is in Doze mode and delivers them in the next maintenance window. Only high-priority messages wake the device.
  • Hidden high-priority messages. Android may deprioritise an app whose high-priority messages don't result in a visible notification. Keep high priority for messages the user will see.
  • Battery optimisation on some Android phones. Several manufacturers stop background apps aggressively, which is common on phones popular in India. Data messages handled by your app suffer most; notification messages shown by the system are more reliable.
  • Low priority or background pushes on iOS. APNs delivers apns-priority: 5 and silent content-available pushes when it suits the device's power state, and throttles them.
  • Stale device tokens. Tokens change after reinstalls and restores. Sending to an old token fails silently unless your provider removes tokens that FCM or APNs reports as unregistered.
  • Slow fan-out on the sending side. Large campaigns sent one token at a time from a single worker can take minutes to reach the last user.

The settings that control delivery speed

For a time-sensitive alert, these are the fields that matter in an FCM HTTP v1 request:

{
  "message": {
    "token": "DEVICE_TOKEN",
    "notification": { "title": "Your order is out for delivery", "body": "Arriving in 20 minutes" },
    "android": { "priority": "high", "ttl": "600s", "collapse_key": "order_1234" },
    "apns": {
      "headers": { "apns-priority": "10", "apns-push-type": "alert", "apns-collapse-id": "order_1234" }
    }
  }
}
  • android.priority: high and apns-priority: 10 deliver immediately.
  • apns-push-type: alert marks a user-facing notification on iOS.
  • ttl drops the message if it can't be delivered in time, so a stale “driver arriving” alert never shows up an hour later.
  • collapse_key and apns-collapse-id replace an older update with the newest one instead of stacking them.

What to compare when choosing a push SDK

CheckWhy it matters for real-time delivery
Priority control per messageRide, delivery, and payment updates need high priority; promotions don't
Delivery receipts from the device“Sent” isn't “delivered”. You need to see what reached the phone
Automatic token refresh and cleanupStale tokens are the quietest cause of lost notifications
Background and killed-app handlingNotifications must show when the app isn't running
TTL and collapse supportOld alerts expire instead of arriving late
Fallback channelIf a push isn't delivered or opened, a WhatsApp message can still reach the user
SDKs for your stackNative setup for React Native and Flutter is where most delivery bugs start

Comparing providers? See how this plays out in notifySphere vs OneSignal and other OneSignal alternatives.

How to test delivery speed yourself

  1. Install a release build on a real Android phone and a real iPhone, not an emulator.
  2. Lock both phones and leave them for 30 minutes so Android enters Doze.
  3. Send a high-priority notification and note the time it appears.
  4. Repeat with the app force-stopped, and on a phone from a manufacturer known for battery optimisation.
  5. Compare the send time with the delivery time your provider reports.

Real-time push with notifySphere

notifySphere delivers through FCM and APNs, and its React Native and Flutter SDKs report delivery and taps back to your dashboard, so you see what actually arrived, not just what was sent:

import NotifySphere from "react-native-notify-sphere";

await NotifySphere.initialize({
  applicationUserId: 123,
  type: Platform.OS === "android" ? "AndroidPush" : "IOSPush",
  appId: "YOUR_APP_ID",
  apiKey: "YOUR_API_KEY",
});

// Delivery and press events are reported back to your dashboard automatically
NotifySphere.onNotification((notification, type) => {
  if (type === "press") {
    // open the screen this notification is about
  }
});

If a push isn't opened, a journey can follow up on WhatsApp from the same dashboard. Setting up iOS? Start with the Firebase iOS push guide.

Frequently asked questions

What is the best SDK for real-time push notification delivery?

There's no SDK that is faster than the transport: on Android every push SDK delivers through Firebase Cloud Messaging, and on iOS through Apple Push Notification service. The best SDK is the one that sends with the right priority, keeps device tokens fresh, retries on failure, and reports delivery back to you so you can see what actually arrived.

Why are my push notifications delayed on Android?

The usual causes are normal-priority messages held during Doze mode, aggressive battery optimisation on some Android phones that stops apps in the background, and stale device tokens. Send time-sensitive messages with high priority and make sure each one shows a visible notification.

Why are push notifications delayed on iOS?

Low-priority (apns-priority 5) and background (content-available) pushes are delivered when it suits the device's power state and are throttled. User-facing alerts sent with apns-priority 10 and apns-push-type alert are delivered immediately.

Is Firebase Cloud Messaging real-time?

High-priority FCM messages are delivered immediately when the device is online, including waking it from Doze. Normal-priority messages may wait for a maintenance window. FCM is the delivery layer most push SDKs, including notifySphere, use on Android.

How can I measure push notification delivery?

A send API returning success only means FCM or APNs accepted the message. To know whether it reached the phone, the SDK on the device has to report a delivery event back. notifySphere's React Native and Flutter SDKs report delivery and taps to your dashboard.