<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/ensure-your-firebase-cloud-messaging-notifications-reach-your-users-on-android-xdwg3nqfn" -->

---
title: Ensure your Firebase Cloud Messaging notifications reach...
description: Guidance on configuring Firebase Cloud Messaging (FCM) so notifications reliably reach Android users despite Doze mode battery optimizations. Explains the...
canonical: https://daily.dev/posts/ensure-your-firebase-cloud-messaging-notifications-reach-your-users-on-android-xdwg3nqfn
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Ensure your Firebase Cloud Messaging notifications reach your users on Android | daily.dev
og:description: Guidance on configuring Firebase Cloud Messaging (FCM) so notifications reliably reach Android users despite Doze mode battery optimizations. Explains the...
og:url: https://daily.dev/posts/ensure-your-firebase-cloud-messaging-notifications-reach-your-users-on-android-xdwg3nqfn
og:image: https://api.daily.dev/og/posts/xDwG3Nqfn.png
og:image:alt: Ensure your Firebase Cloud Messaging notifications reach your users on Android
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Ensure your Firebase Cloud Messaging notifications reach your users on Android

**[Firebase](https://daily.dev/sources/firebase-blog)** · 7 min read · 0 upvotes · 0 comments

## Summary

Guidance on configuring Firebase Cloud Messaging (FCM) so notifications reliably reach Android users despite Doze mode battery optimizations. Explains the difference between normal and high priority messages, when to use each, how to set priority via the Admin SDK or REST API JSON payload, limits on high priority message throttling, and best practices for processing message payloads within onMessageReceived (using WorkManager expedited jobs for high priority, regular WorkRequests for normal priority). Also covers how to test high priority notification delivery while a device is in Doze mode.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://firebase.blog/posts/2025/04/fcm-on-android>

## Questions this post answers

### Should I use high priority or normal priority for Firebase Cloud Messaging notifications on Android?

Use high priority for most user-visible notifications since normal priority delivery can be delayed by Doze mode when the screen is off. High priority lets FCM wake a sleeping device immediately, making it ideal for chat messages, fraud alerts, or delivery updates, while normal priority suits non-time-sensitive notifications like a bank statement being ready.

_daily.dev surfaces practical guidance like this for developers tuning push notification reliability._

### Why are my Firebase Cloud Messaging high priority notifications getting throttled or deprioritized?

High priority FCM messages get throttled when they don't result in a user-visible notification or app foregrounding, such as using high priority for a 'user is typing' indicator. Reserving high priority strictly for messages that produce a visible notification avoids throttling and prevents delays to genuinely important messages like chat notifications.

_Developers debugging notification delivery issues can find this kind of detail through daily.dev._

### How do I process additional data like an image in onMessageReceived without delaying my FCM notification?

Use Android WorkManager to extend the app's process lifecycle instead of making network calls directly inside onMessageReceived. For high priority notifications, start an expedited WorkManager job, which gets a brief exemption from expedited job quotas right after dispatch; for normal priority notifications, use a regular WorkRequest to avoid unnecessary battery drain.

_Android engineers wiring up reliable notification pipelines often track implementation patterns like this via daily.dev._

## Similar posts on daily.dev

- [When Notifications Became Data Trucks: A Real-World Crash Story from Firebase FCM](https://daily.dev/posts/when-notifications-became-data-trucks-a-real-world-crash-story-from-firebase-fcm-nh9ixqylv) · ProAndroidDev · 1 upvotes · 0 comments
- [Deep Linking and Navigation from Notifications](https://daily.dev/posts/deep-linking-and-navigation-from-notifications-zyqz11wln) · Medium · 0 upvotes · 0 comments
- [Beyond Doze: Building Reliable Background Execution on Modern Android \(Including OEM Realities\)](https://daily.dev/posts/beyond-doze-building-reliable-background-execution-on-modern-android-including-oem-realities--b4bmxjjrv) · ProAndroidDev · 1 upvotes · 0 comments
- [We now support Pushover's priority messages](https://daily.dev/posts/we-now-support-pushover-s-priority-messages-qdorcjtpo) · Oh Dear · 1 upvotes · 0 comments

---

Tags: [#android](https://daily.dev/tags/android)

[View this post on daily.dev](https://daily.dev/posts/ensure-your-firebase-cloud-messaging-notifications-reach-your-users-on-android-xdwg3nqfn)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Ensure your Firebase Cloud Messaging notifications reach your users on Android","url":"https://daily.dev/posts/ensure-your-firebase-cloud-messaging-notifications-reach-your-users-on-android-xdwg3nqfn","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/ensure-your-firebase-cloud-messaging-notifications-reach-your-users-on-android-xdwg3nqfn"},"datePublished":"2026-08-23T12:18:57.827Z","dateModified":"2026-08-23T12:23:41.632Z","description":"Guidance on configuring Firebase Cloud Messaging (FCM) so notifications reliably reach Android users despite Doze mode battery optimizations. Explains the...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/3b74b43f8b5ff32da952671b0d49286f?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/3b74b43f8b5ff32da952671b0d49286f?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Firebase","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Firebase","logo":"https://media.daily.dev/image/upload/s--i395oqZH--/f_auto,q_auto/v1787487448/logos/firebase-blog?_a=BAMAMicg0","url":"https://daily.dev/sources/firebase-blog"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/ensure-your-firebase-cloud-messaging-notifications-reach-your-users-on-android-xdwg3nqfn","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"android","timeRequired":"PT7M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Firebase","item":"https://daily.dev/sources/firebase-blog"},{"@type":"ListItem","position":3,"name":"Ensure your Firebase Cloud Messaging notifications reach your users on Android"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/ensure-your-firebase-cloud-messaging-notifications-reach-your-users-on-android-xdwg3nqfn#faq","mainEntity":[{"@type":"Question","name":"Should I use high priority or normal priority for Firebase Cloud Messaging notifications on Android?","acceptedAnswer":{"@type":"Answer","text":"Use high priority for most user-visible notifications since normal priority delivery can be delayed by Doze mode when the screen is off. High priority lets FCM wake a sleeping device immediately, making it ideal for chat messages, fraud alerts, or delivery updates, while normal priority suits non-time-sensitive notifications like a bank statement being ready. daily.dev surfaces practical guidance like this for developers tuning push notification reliability."}},{"@type":"Question","name":"Why are my Firebase Cloud Messaging high priority notifications getting throttled or deprioritized?","acceptedAnswer":{"@type":"Answer","text":"High priority FCM messages get throttled when they don't result in a user-visible notification or app foregrounding, such as using high priority for a 'user is typing' indicator. Reserving high priority strictly for messages that produce a visible notification avoids throttling and prevents delays to genuinely important messages like chat notifications. Developers debugging notification delivery issues can find this kind of detail through daily.dev."}},{"@type":"Question","name":"How do I process additional data like an image in onMessageReceived without delaying my FCM notification?","acceptedAnswer":{"@type":"Answer","text":"Use Android WorkManager to extend the app's process lifecycle instead of making network calls directly inside onMessageReceived. For high priority notifications, start an expedited WorkManager job, which gets a brief exemption from expedited job quotas right after dispatch; for normal priority notifications, use a regular WorkRequest to avoid unnecessary battery drain. Android engineers wiring up reliable notification pipelines often track implementation patterns like this via daily.dev."}}]}
```

