Troubleshooting
The most common causes when a notification doesn't arrive and how to fix them.
If suddenly nothing arrives, first check the status page: if there's an incident or maintenance in progress, it's published there and updated until it's resolved.
If the service is operational, open the app's Troubleshooter in the panel: it checks the device's token, credential, environment, permission and last delivery, and tells you the first step that fails. The Device debugger shows each delivery with Google's or Apple's exact error.
It doesn't arrive on iPhone
- Which token does it have? In Devices, check the type (APNs or FCM).
- APNs: you need the
.p8or.p12in Pushtifly. - FCM: you need the APNs key inside Firebase.
- See iOS via FCM.
- APNs: you need the
- The Push Notifications capability enabled in Xcode, and the provisioning profile regenerated afterwards.
- Permission: the user must have accepted.
notificationsEnabled: falseindicates it. - Bundle ID: the credential's must be the app's (
TopicDisallowed).
BadDeviceToken
It's almost always mixed environments: an app installed from Xcode (sandbox) gets a send to production, or the other way around.
- With
environment: "auto", Pushtifly tries the other environment and corrects itself. - If you see it repeatedly, the integration status flags it and tells you which app and environment to check.
It works in debug but not in TestFlight
TestFlight and App Store builds use production; Xcode builds, sandbox. Check:
- that the credential covers production (the
.p8covers both); - that you don't force
environment: "sandbox"when registering.
Expired certificate
Sends to iOS fail with 5003. Upload a new .p12 or, better, switch to the .p8 key, which doesn't expire.
It isn't shown with the app open
That's normal behavior for many libraries: with the app open, the notification reaches your code but isn't shown. Show it yourself; each framework guide explains how.
Expo token (2006)
ExponentPushToken[…] doesn't work. Use getDevicePushTokenAsync(). See Expo.
Capacitor iOS without an APNs credential
@capacitor/push-notifications delivers the Apple token on iOS. Upload the .p8 to Pushtifly. See Capacitor.
White square on Android
The small icon isn't monochrome. Use a white-on-transparent one and declare it as default_notification_icon.
Android: it doesn't arrive with the app closed on some phones
Some manufacturers (Xiaomi, Huawei, Oppo, Samsung with aggressive saving) close apps in the background. Send with priority: "high" and ask the user to exclude the app from battery saving.
Images aren't shown on iOS
The Notification Service Extension is missing. See Media.
Sends stay queued
Check in the history whether the send is scheduled, whether the credential is invalid or expired (sends wait until you fix it) or whether you reached the quota (3001).