# Install and Set Up the Cordova Plugin

How to install the Airship Cordova plugin.
## Requirements

- cordova-ios 7.0.0 or higher
- cordova-android 12.0.0 or higher
- iOS 15+ (Xcode 16+)
- Android API 23+


## Setup

Install the plugin using Cordova CLI:

```bash
cordova plugin add @ua/cordova-airship
```


For HMS support, you will also need the HMS module:

```bash
cordova plugin add @ua/cordova-airship-hms
```


### iOS

Modify the app's config.xml to enable swift support and set the min iOS version:

```xml
<!-- Deployment target must be >= iOS 15  -->
<preference name="deployment-target" value="15.0" />

<!-- Must be >= 5.0 -->
<preference name="SwiftVersion" value="5.0" />
```


## Initialize Airship

Before you can access any of the module's API, the Airship module needs to be initialized. This can be accomplished by calling [takeOff](https://www.airship.com/docs/reference/libraries/urbanairship-cordova/latest/interfaces/Airship.html#takeOff) when the device is ready.

**Calling takeOff**


```javascript
// TakeOff
Airship.takeOff({
  production: {
    appKey: "<APP_KEY>",
    appSecret: "<APP_SECRET>"
  },
  development: {
    appKey: "<APP_KEY>",
    appSecret: "<APP_SECRET>"
  },
  inProduction: true, 
  site: "us", // use "eu" for EU cloud projects
  urlAllowList: ["*"],
  android: {
      notificationConfig: {
          icon: "ic_notification",
          accentColor: "#00ff00"
      }
  }
})
```


Takeoff can be called multiple times, but the config passed in `takeOff` won't be applied until the next app init.

For a complete list of configuration options, see the [AirshipConfig reference](https://www.airship.com/docs/reference/libraries/urbanairship-cordova/latest/interfaces/AirshipConfig.html).

## Test the integration

After completing the setup, verify your integration:

1. **Build and run your app** on your iOS or Android device/simulator/emulator.
2. **Check the console output** for Airship channel creation:
   - **iOS**: Look for a log message in Xcode console: `Channel ID: <CHANNEL_ID>`
   - **Android**: Look for a log message in logcat: `Airship channel created: <CHANNEL_ID>`
   - The channel ID confirms successful SDK initialization.
   - For more detailed logging, see [Logging](https://www.airship.com/docs/developer/sdk-integration/cordova/installation/logging/).

If you see the channel ID in the console and no errors, your integration is successful.

## Next steps

- [Advanced Configuration](https://www.airship.com/docs/developer/sdk-integration/cordova/installation/advanced-configuration/): Configure URL allowlists and other advanced settings
- [Push Notifications](https://www.airship.com/docs/developer/sdk-integration/cordova/push-notifications/getting-started/): Configure push notifications
- [Deep Links](https://www.airship.com/docs/developer/sdk-integration/cordova/deep-links/): Handle deep links in your app

If you don't see a channel ID or encounter errors during initialization, see [Troubleshooting Initialization](https://www.airship.com/docs/developer/sdk-integration/cordova/troubleshooting/initialization/) for common problems and solutions.
