How FCM push actually works
FCM is Google's official transport for delivering messages to Android apps. Your server (or a tool like Firebase Console) sends a payload to FCM, which routes it to the device and hands it to your app. Getting this right means handling device registration tokens, message types, and what happens when the app is in the foreground, background, or fully closed.
The details matter because Android treats notification payloads and data payloads differently, and behavior changes when your app isn't running. We build the send path and the receive path so a tap lands the user on the exact screen you intended, not just the home screen.
- Firebase project setup, google-services.json, and the FCM SDK wired into your app
- Registration token capture, refresh handling, and syncing tokens to your backend
- Notification vs. data messages, and foreground handling via a FirebaseMessagingService
- Deep links and pending intents so a tap opens the right screen with the right context
- Notification channels, importance levels, and grouping for Android 8.0+
- Server-side send from your backend or a service like Cloud Functions
Permissions, delivery, and things that trip teams up
Since Android 13, apps must request the POST_NOTIFICATIONS runtime permission, so notifications are opt-in and your prompt timing affects opt-in rates. Beyond that, aggressive battery optimization on some manufacturer skins (and Doze mode) can delay lower-priority messages, so critical alerts need the right priority and design.
We build for these realities instead of assuming every message arrives instantly. That includes a plan for measuring delivery and taps so you can see what's working rather than guessing.
- Android 13+ notification permission request with sensible timing and a fallback UI
- Message priority set correctly for time-sensitive vs. routine notifications
- Handling of Doze, battery optimization, and OEM-specific delivery quirks
- Rich notifications: images, actions, expandable text, and reply inputs where useful
- Delivery and open-rate tracking so you can tune content and timing
- Topic messaging and segmentation for broadcasts vs. targeted sends
More on android apps
Frequently asked questions
Do you support notifications on devices without Google Play Services?
FCM depends on Google Play Services, which covers the vast majority of consumer devices. For device families that ship without it (some enterprise, kiosk, or certain regional hardware), delivery needs a different approach — we can scope that during a free consultation once we know your target devices.
Can you send notifications from our existing backend?
Yes. FCM exposes an HTTP v1 API, so we can integrate sends into whatever backend you already run — Node, Python, .NET, PHP, or a serverless function — and store device tokens against your users so you can target the right people.
Why do some users not receive notifications?
Usually it's one of a few things: they never granted the Android 13+ permission, the OS throttled a low-priority message during Doze, or a manufacturer battery setting restricted the app. We design around these and can add delivery tracking so you can see what's actually happening rather than guessing.