AppReviewX Log in

Push notifications not arriving in the test build

Systematic check: permission, token, channel, battery rules and server side.

In this guide

A push that works on your phone and never shows up on a tester's phone has one of five causes. Check them in this order, from the device outward to your server. Each layer takes a few minutes, and the first one that fails is your answer.

1. Permission on the device

  • On Android 13 (API 33) and newer, notifications are a runtime permission and the app must ask for it; on iOS the user must allow notifications too (check Apple's current documentation). A tester who tapped "Don't allow" gets nothing. Android's documentation says that for apps targeting API 32 or lower, a user who taps Don't allow isn't asked again until the app is reinstalled or updated to target Android 13 or higher.
  • Ask the tester to open the system settings for your app and check that notifications are on.
  • Check your own flow: is the permission request shown at all, and at a moment where it makes sense? If the request never appears, the problem is in the app, not the phone.

2. Notification channel (Android)

  • Android groups notifications into channels (required from Android 8.0; for apps targeting API 26 or higher a notification without a channel is not shown). If a channel is switched off or set to silent, the message arrives but is not shown.
  • Ask the tester to look at the channel list in the app's notification settings.
  • Once a channel exists, the app can no longer change its importance or sound; the user controls them. A phone with an older channel keeps the old behavior even if you changed the code. Android's documentation suggests reinstalling the app or clearing its data to reset test channels on development devices; a new channel ID also shows whether this is the cause.

3. The token

The push service addresses a device by a token. No valid token, no delivery.

  • Log the token on the device and compare it with the one stored on your server. Are they the same?
  • Tokens can change, for example after a reinstall or a data reset. Does your app send the new token to the server?
  • Check that the test build uses the same push project and configuration as your server. A build variant with a different config file is a common mismatch.
  • On iOS, find out in Apple's current push notification documentation which push environment (development or production) your build uses, and make sure your server sends to the same one.

4. Battery and background rules

Some phone makers stop or delay background apps aggressively. A push can arrive minutes late or only when the screen is turned on. If delivery is irregular rather than absent, read background work killed by battery optimization and ask the tester to try with the app excluded from battery limits.

5. Server side

  • Look at the response of your push call. An error such as "invalid token" or "unregistered" tells you the token is stale.
  • Check the message type. A message the app only handles in code (data message) does nothing visible unless your app builds the notification itself. A message meant to be shown needs the display fields.
  • Check the priority and any time-to-live you set. A short lifetime means a phone that was offline misses the message. Firebase's documentation says a message without a set time-to-live can last up to four weeks, and a TTL of 0 means a message that can't be delivered immediately is discarded.
  • Send one test message to a single token from the push console of your provider. If it arrives there but not from your server, the fault is in your server code.

Narrow it down fast

What you see Likely layer
Works on your phone, not on any tester phone Server or build configuration
Fails on one tester only Permission, channel or battery
Arrives late or only with screen on Battery rules
Server reports invalid token Token

Ask the tester for the right details

Request the phone model, Android or iOS version, whether notification permission is on, whether the app was opened after install, and whether battery saver is active. A good bug report saves a round of questions.

Need testers on real devices to confirm the fix? AppReviewX gives you private, structured feedback from other developers: you write one feedback, you earn one credit, and credits buy feedback on your own app. See how AppReviewX works