# Troubleshooting Push Notifications

Check push notification status and fix common issues.

If [push notifications](https://www.airship.com/docs/developer/sdk-integration/flutter/push-notifications/) aren't working as expected, you can check the notification status to diagnose the issue.

## Push Notifications Not Working

If push notifications are not being received:

- Verify that push notifications are enabled for both iOS and Android.
- Check that APNs (iOS) and FCM (Android) are properly configured.
- Ensure the app has notification permissions.
- For iOS, verify capabilities are enabled in Xcode (Push Notifications and Background Modes).
- For Android, ensure `google-services.json` is in `android/app/`.

## Checking Push Notification Status

If push notifications aren't working as expected, you can check the notification status to diagnose the issue:

```dart
PushNotificationStatus? status = await Airship.push.notificationStatus;

print('User notifications enabled: ${status?.isUserNotificationsEnabled}');
print('System notifications allowed: ${status?.areNotificationsAllowed}');
print('Push privacy feature enabled: ${status?.isPushPrivacyFeatureEnabled}');
print('Push token registered: ${status?.isPushTokenRegistered}');
print('User opted in: ${status?.isUserOptedIn}');
print('Fully opted in: ${status?.isOptedIn}');
```


You can also listen for status changes:

```dart
Airship.push.onNotificationStatusChanged.listen((event) {
  print('Notification status changed: ${event.status}');
  print('Is opted in: ${event.status.isOptedIn}');
});
```


## Common Status Scenarios

- `isUserOptedIn = false`: Check if `userNotificationsEnabled` is set to `true` and if the user granted permission
- `isPushPrivacyFeatureEnabled = false`: Push privacy feature is disabled in Privacy Manager
- `isPushTokenRegistered = false`: Device hasn't received a push token yet. Check network connectivity and platform configuration
- `isUserOptedIn = true` but `isOptedIn = false`: Push token registration is pending or failed. Check console logs for errors
