# Why aren’t my Firebase push notifications arriving?

> Push notifications from Firebase never arrive, arrive late or reach Android but not iPhone. The permission, APNs key, priority and token causes, and the fix.

Canonical: https://app369.com/fix/firebase-push-notifications-not-working/
Last updated: 2026-11-12

You send a push notification and some users never see it. It reaches Android but not iPhone, it shows up late, or it stopped for people who used to get it. Firebase Cloud Messaging only delivers what the phone allows and what your setup asks for. Here are the causes in the docs’ own words, in the order to check them, or hand it over at a fixed price.

**Rather hand it over?** [App Fix Ticket](https://app369.com/fixed-price/flutter-firebase-bug-fix/): One reproducible bug in an existing mobile or web app, diagnosed and fixed.

[Pay $450 for a Diagnosis](https://buy.stripe.com/dRmdRa7K4bWz8CWdwagw003) [**Ask a question first**](https://app369.com/contact/?offer=offer1-diagnosis&amp;ask=1)

Full refund if Simon can’t take it on once he sees your project, or if you cancel before work starts. [Refund terms](https://app369.com/terms-of-service/#refunds).

- ![](https://app369.com/.netlify/images?w=28&amp;fm=webp&amp;url=%2Fimages%2Fszymon.jpg)Simon does the work himself
- [5.0 from 127 Fiverr reviews, checked Oct 30, 2026](https://app369.com/reviews/)

**Short answer**

Check the phone first: on Android 13 and higher a new install has notifications off until the user allows them, and on iPhone the app has to ask and the user can say no. If no iPhone gets anything, check that an APNs authentication key is uploaded in the Firebase console. If messages arrive late, send user-facing ones at high priority. If they stopped for some users, the server may be sending to old device tokens.

Rather not fix it yourself? [**App Fix Ticket**](https://app369.com/fixed-price/flutter-firebase-bug-fix/) starts with a fixed-price diagnosis, then a fixed price for the fix before any fix work.

## **Why notifications don’t arrive, and the fix**

1. 01 ### **Android 13 or higher: the user never allowed notifications**
  > “If a user installs your app on a device that runs Android 13 or higher, your app's notifications are off by default.” [**Android Developers, Notification runtime permission**](https://developer.android.com/develop/ui/compose/notifications/notification-permission) Android 13 added a POST_NOTIFICATIONS runtime permission. An app that never asks for it, or a user who taps Don’t allow, means nothing shows on that phone. The fix is to ask at a moment that makes sense to the user, for example after they book or order, and to point users who said no to your app’s notification settings.
2. 02 ### **iPhone: the app never asked, or the user said no**
  > “The first time your app makes this authorization request, the system prompts the person to grant or deny the request and records that response.” [**Apple, Asking permission to use notifications**](https://developer.apple.com/documentation/usernotifications/asking-permission-to-use-notifications) iOS asks the user once. If they deny it, asking again shows nothing, and only the user can turn notifications back on. Check the authorization status when the app opens, and if it is denied, explain why notifications help and point the user to the app’s settings.
3. 03 ### **iPhone gets nothing: no APNs key in Firebase**
  > “Upload your APNs authentication key to Firebase.” [**Firebase, Get started with Firebase Cloud Messaging in Apple platform apps**](https://firebase.google.com/docs/cloud-messaging/ios/get-started) Firebase sends to iPhones through Apple’s push service, so it needs an APNs authentication key from your Apple Developer account. Without one, Android can work while no iPhone receives anything. Open Project settings, then Cloud Messaging, and upload the key under your iOS app.
4. 04 ### **Notifications arrive late: they are sent at normal priority**
  > “When the device is in Doze mode, delivery may be delayed to conserve battery until the device exits doze.” [**Firebase, Setting the priority of a message**](https://firebase.google.com/docs/cloud-messaging/android-message-priority) Normal is the default priority. An Android phone that is asleep in Doze mode can hold a normal priority message until it wakes. Send notifications the user should see right away, such as a new message or an order update, at high priority.
5. 05 ### **It stopped for some users: the server sends to old tokens**
  > “Message sends and topic fanouts for these stale registrations are unlikely to ever be delivered.” [**Firebase, Best practices for FCM registration token management**](https://firebase.google.com/docs/cloud-messaging/manage-tokens) The server sends to the device tokens it has saved. A token can change, and a phone that has not connected to FCM for over a month goes stale. If the server keeps only an old token, that user stops getting notifications. Save the latest token each time the app opens, and remove tokens FCM rejects.
6. 06 ### **Nothing shows while the app is open**
  > “if the app is running in the foreground when the notification is received, the app's code determines the behavior.” [**Firebase, Firebase Cloud Messaging message types**](https://firebase.google.com/docs/cloud-messaging/customize-messages/set-message-type) When the app is in the background, Firebase shows a notification message for you. When the app is open, your code decides what happens, so you may need to show the notification yourself. Data messages, which carry only your own fields, always need your code to turn them into a visible notification.

Checked against the vendor’s docs on November 12, 2026: [Android Developers: Notification runtime permission](https://developer.android.com/develop/ui/compose/notifications/notification-permission); [Apple docs: Asking permission to use notifications](https://developer.apple.com/documentation/usernotifications/asking-permission-to-use-notifications); [Firebase docs: Get started with FCM in Apple platform apps](https://firebase.google.com/docs/cloud-messaging/ios/get-started); [Firebase docs: Setting the priority of a message](https://firebase.google.com/docs/cloud-messaging/android-message-priority); [Firebase docs: FCM registration token management](https://firebase.google.com/docs/cloud-messaging/manage-tokens); [Firebase docs: FCM message types](https://firebase.google.com/docs/cloud-messaging/customize-messages/set-message-type).

## **Rather hand it over?**

Fixed scope, fixed price, paid upfront. The work happens in writing; no call needed.

- [from $450**App Fix Ticket**One reproducible bug in an existing mobile or web app, diagnosed and fixed.**See scope and start**](https://app369.com/fixed-price/flutter-firebase-bug-fix/)
- [from $450**AI-Built App Rescue**A Lovable, Bolt or Cursor app checked end to end in 3 days, then its worst problems fixed at a fixed price.****No issues worth fixing, no charge.**** If the Launch Check finds nothing rated medium or higher, Simon refunds the full $450. You keep the report either way. This applies to the first 10 Launch Checks bought after October 30, 2026.**See scope and start**](https://app369.com/fixed-price/ai-app-rescue/)

[**All 127 Fiverr reviews**](https://app369.com/reviews/)

Related: [**Expo push notifications not working**](https://app369.com/fix/expo-push-notifications-not-working/) · [**App Store Guideline 4.5.4 push notifications**](https://app369.com/fix/app-store-guideline-4-5-4-push-notifications/) · [**Firebase users keep getting logged out**](https://app369.com/fix/firebase-users-keep-getting-logged-out/) · [**Firebase password reset email not arriving**](https://app369.com/fix/firebase-password-reset-email-not-arriving/)

Questions

## **More on this error**

<details>

<summary>**Push works on Android but not on iPhone. Where do I look? **+</summary>

Start with the APNs authentication key in the Firebase console, under Project settings, then Cloud Messaging. Then check that the iPhone user allowed notifications for the app in the Settings app.

</details>

<details>

<summary>**Which notifications should be high priority? **+</summary>

Firebase’s examples are chat messages, problems with an account and food delivery updates: anything the user expects to see right away. Background updates the user doesn’t need to see can stay at normal priority.

</details>

<details>

<summary>**Did users who upgraded to Android 13 lose notifications? **+</summary>

Android says the system pre-grants the permission to eligible apps when the user upgrades their device to Android 13 or higher. New installs on Android 13 and higher start with notifications off until the user allows them.

</details>

<details>

<summary>**Can you fix it for me? **+</summary>

If one bug is the whole problem, the App Fix Ticket covers it: a written diagnosis first, then the fix. If the app has more going on, the Launch Check is a written check of the whole app. Each issue found is rated critical, high, medium or low, with where it is and how it was confirmed. No issues worth fixing, no charge. If the Launch Check finds nothing rated medium or higher, Simon refunds the full $450. You keep the report either way. This applies to the first 10 Launch Checks bought after October 30, 2026.

</details>

A different error?

## **Describe it and get a written quote**

Send the error and what you were doing. You get a written scope, a fixed price and a timeline; Simon replies by email, usually within one business day.

[**Describe your problem **→](https://app369.com/contact/) [**All fixes**](https://app369.com/fix/)