> ## Documentation Index
> Fetch the complete documentation index at: https://cometchat-22654f5b-feature-react-native-sdk-quotedmessage-a.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Setup

## Get your Application Keys

[Signup for CometChat](https://app.cometchat.com) and then:

1. Create a new app
2. Head over to the **API & Auth Keys** section and note the **Auth Key**, **App ID** & **Region**

## Add the CometChat Dependency

Install the package as NPM module:

<Tabs>
  <Tab title="JavaScript">
    ```js theme={null}
    npm install @cometchat-pro/cordova-ionic-chat@2.4.1 --save
    ```
  </Tab>
</Tabs>

<Note>
  v2.4+ onwards, Voice & Video Calling functionality has been moved to a separate library. In case you plan to use the calling feature, please install the Calling dependency (@cometchat-pro/ionic-calls).

  `npm install @cometchat-pro/ionic-calls@2.1.2--save`

  The calling component requires some configuration. Please follow the steps mentioned [here](/sdk/ionic/2.0/setup#calling-component-configuration).
</Note>

<Warning>
  The Calling Component (@cometchat-pro/ionic-calls) is a capacitor plugin so it won't work in a Cordova project.
</Warning>

## Calling Component Configuration

**Android**

Goto `./android` folder and open **project-level** build Gradle file and add all repository URLs in the `repositories` block under the `allprojects` section.

<Tabs>
  <Tab title="build.gradle">
    ```gradle theme={null}
    allprojects {
    repositories {
      maven {
          url "https://dl.cloudsmith.io/public/cometchat/cometchat-pro-android/maven/"
      }
    }
    }
    ```
  </Tab>
</Tabs>

You also need to update the minimum SDK version to `24`. You can update the minSDKVersion in the `variables.gradle` file located in the `android` folder.

<Tabs>
  <Tab title="variables.gradle">
    ```gradle theme={null}
    minSdkVersion = 24
    ```
  </Tab>
</Tabs>

In the Main activity you need to map Capacitor class add(Calling.class);

<Tabs>
  <Tab title="Java">
    ```java theme={null}
    package io.ionic.starter;

    import android.os.Bundle;

    import com.cometchat.calling.Calling; //Add this line

    import com.getcapacitor.BridgeActivity;
    import com.getcapacitor.Plugin;

    import java.util.ArrayList;

    public class MainActivity extends BridgeActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      this.init(savedInstanceState, new ArrayList<Class<? extends Plugin>>() {{
        add(Calling.class);
      }});
    }
    }
    ```
  </Tab>
</Tabs>

**iOS**:

Please update the minimum target version in the Podfile. Goto ./ios folder and open the Podfile. In the Podfile update the platform version to `11.0`.

<Tabs>
  <Tab title="Podfile">
    ```
    platform :ios, '11.0'
    ```
  </Tab>
</Tabs>

Open the `ios/App` folder and run `pod install` this will create an `App.xcworkspace` open this and run the app.

## Initialize CometChat

The `init()` method initialises the settings required for CometChat. The `init()` method takes the below parameters:

1. appId - Your CometChat App ID
2. appSettings - An object of the AppSettings class can be created using the AppSettingsBuilder class. The region field is mandatory and can be set using the `setRegion()` method.

The `AppSettings` class allows you to configure two settings:

* Region: The region where you app was created.
* [Presence Subscription](/sdk/ionic/2.0/user-presence)

You need to call `init()` before calling any other method from CometChat. We suggest you call the `init()` method on app startup, preferably in the `index.js` file.

<Tabs>
  <Tab title="JavaScript">
    ```js theme={null}
    let appID = "APP_ID";
    let region = "REGION";
    let cometChatSettings = new CometChat.AppSettingsBuilder()
      												.subscribePresenceForAllUsers()
      												.setRegion(region)
      												.build();
    CometChat.init(appID,cometChatSettings).then(
      () => {
      	console.log("Initialization completed successfully");
      }, error => {
      	console.log("Initialization failed with error:", error);
      }
    );
    ```
  </Tab>
</Tabs>

Make sure you replace the `APP_ID` with your CometChat **App ID** and `REGION` with your **App Region** in the above code.

| Parameter  | Description                         |
| ---------- | ----------------------------------- |
| appID      | CometChat App ID                    |
| appSetting | An object of the AppSettings class. |
