# Troubleshooting Common issues and solutions for Airship module setup, initialization, and integration. # Troubleshooting Initialization > Troubleshoot common initialization issues and apply solutions. When following steps in [Getting Started](https://www.airship.com/docs/developer/sdk-integration/react-native/installation/getting-started/) or [Advanced Configuration](https://www.airship.com/docs/developer/sdk-integration/react-native/installation/advanced-configuration/), if you don't see a channel ID in the logs or encounter errors during initialization, review the following common problems and solutions. ## Installation Errors If you encounter errors during installation: - Verify that you're using a compatible version of React Native. See [Requirements](https://www.airship.com/docs/developer/sdk-integration/react-native/installation/getting-started/#requirements) in *Getting Started*. - Ensure all native dependencies are properly linked. - Check that your iOS and Android projects are correctly configured. ## Initialization Errors If you encounter errors during SDK initialization: - Verify your credentials in the Airship dashboard. The credentials used by `takeOff` are your Airship project's [App Key](https://www.airship.com/docs/reference/glossary/#app_key) and [App Secret](https://www.airship.com/docs/reference/glossary/#app_secret). To find them, select the dropdown menu (▼) next to your project name, and then **Project details**. - Check that `takeOff` is called correctly in your app. - Ensure both iOS and Android native modules are properly installed. ## Expo: iOS Build Errors with Missing Headers If you encounter iOS build errors with messages like `'tuple' file not found`, `'iosfwd' file not found`, or `'generated/RNAirshipSpec/RNAirshipSpec.h' file not found`, this is typically caused by a compatibility issue between Expo and React Native's C++ headers. This usually happens when: - You're using `use_frameworks! :linkage => :static` in your Podfile - Your Expo SDK version has an incompatible `expo-dev-menu` dependency To fix this issue: - Add a resolution to your `package.json` to force a compatible version: ```json { "resolutions": { "expo-dev-menu": "X.X.X" // Replace with compatible version (e.g., 6.0.21) } } ``` - Or update `expo-dev-client` to the latest version. - Run `npm install` and `pod install` again. If you're running Firebase alongside Airship, see [Extending the FirebaseMessagingService](https://www.airship.com/docs/developer/sdk-integration/android/installation/getting-started/#extending-the-firebasemessagingservice) for Android configuration. # Troubleshooting Push Notifications > Check push notification status and fix common issues. If [push notifications](https://www.airship.com/docs/developer/sdk-integration/react-native/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. ## Checking Push Notification Status If push notifications aren't working as expected, you can check the notification status to diagnose the issue: ```typescript const status = await Airship.push.getNotificationStatus(); console.log('User notifications enabled:', await Airship.push.isUserNotificationsEnabled()); console.log('Notifications allowed:', status.areNotificationsAllowed); console.log('Push token registered:', status.isPushTokenRegistered); console.log('Privacy feature enabled:', status.isPushPrivacyFeatureEnabled); console.log('User opted in:', status.isUserOptedIn); console.log('Fully opted in:', status.isOptedIn); ``` You can also listen for status changes: ```typescript Airship.addListener(EventType.PushNotificationStatusChangedStatus, (event) => { console.log('Notification status changed:', event.status); console.log('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. ## Expo: Push Notifications Not Received If you don't receive Airship pushes in your Expo app, make sure you didn't previously install `expo-notifications` or another push provider by mistake. There can only be one service in each app that receives FCM messages, so it might create conflicts with Airship. If you do want to have another push provider alongside Airship, you will need to create your own `FirebaseMessagingService` to forward `onNewToken` and `onMessageReceived` calls to the Airship SDK. Follow the steps for [Extending the FirebaseMessagingService](https://www.airship.com/docs/developer/sdk-integration/android/installation/getting-started/#extending-the-firebasemessagingservice) in the *Android SDK Setup* documentation. If you're running Firebase alongside Airship, see [Extending the FirebaseMessagingService](https://www.airship.com/docs/developer/sdk-integration/android/installation/getting-started/#extending-the-firebasemessagingservice) for Android configuration.