Skip to main content

Device Registration Issues

No push token

Symptoms: getDevicePushTokenAsync() throws or returns nothing Common causes:
  • Expo Go: Push tokens need a development build
  • Emulator: Android emulators without Google Play can’t get push tokens
  • Permission denied: User declined notification permission
  • Missing Firebase config: googleServicesFile isn’t set in app.json
Solutions:
  • Run a development build on a physical device
  • Check the Platform Setup is complete
  • Check the permission in the device’s system settings
The iOS simulator gets a push token only with Xcode 14+ on a Mac with Apple silicon.

Device doesn’t appear in the dashboard

Symptoms: identify() throws, or the device is missing in the PNTA dashboard Solutions:
  • Verify project ID format: prj_XXXXXXXXX
  • Check the error message: it includes the status code
  • Make sure you call identify() with the token from getDevicePushTokenAsync(), not getExpoPushTokenAsync()

Notification Delivery Issues

Notifications not received

Solutions:
  • Check that the device appears as active in the dashboard
  • Check your APNs key and Firebase service account in Platform Keys
  • Check the delivery logs in the dashboard for the APNs or FCM response
  • Set a notification handler to see notifications while the app is open (see Quick Start)

Wrong bundle identifier or package name

Symptoms: APNs or FCM rejects the send in the delivery logs Solutions:
  • Make sure ios.bundleIdentifier and android.package in app.json match the credentials you uploaded
Symptoms: The app opens but doesn’t navigate to link_to Solutions:
  • Call pnta.onNotificationTap() in your root component, so it also gets the tap that launched the app
  • Make sure the callback calls router.push(payload.link_to) (see Link Handling)
  • Check that the route exists in your app/ directory, for example app/profile.tsx for /profile
  • Check the link_to value you set when sending the notification

Getting Help

Email [email protected] or ask in Discord.