> ## Documentation Index
> Fetch the complete documentation index at: https://cometchat-22654f5b-docs-agent-in-group-react-v6.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Setup

> Setup — CometChat documentation.

### Get your Application Keys

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

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

<Note>
  Minimum Requirement

  * Android API Level 21
  * AndroidX Compatibility
  * iOS 11 or higher
  * Flutter SDK 1.2 or higher
</Note>

### Add the CometChat Dependency

1. Add the following code in your `pubspec.yaml` file and run `pub get` command.

<Tabs>
  <Tab title="Dart">
    ```dart theme={null}
    cometchat: any
    ```
  </Tab>
</Tabs>

2. Add following code to podfile inside iOS section of your app

<Tabs>
  <Tab title="Ruby">
    ```rb theme={null}
    post_install do |installer|

    installer.pods_project.targets.each do |target|

    flutter_additional_ios_build_settings(target)

    //Copy from here------->

    target.build_configurations.each do |build_configuration|

    build_configuration.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'arm64 i386'

    end

    //Copy TILL here------->

    end

    end
    ```
  </Tab>

  <Warning>
    **Apple Silicon (M1/M2/M3) users:** Excluding `arm64` from the simulator build prevents the app from running natively on Apple Silicon Macs. If you are developing on an Apple Silicon Mac, consider excluding only `i386` instead of `arm64 i386` to enable native simulator builds.
  </Warning>
</Tabs>

3. For iOS, change the deployment target to `11` or higher.
4. For iOS, navigate to your iOS folder in terminal or CMD and do `pod install` . For apple chip system use rosetta terminal.
5. For iOS you can set the Enabled Bitcode settings to **NO** present in build settings of XCODE project

<Frame>
  <img src="https://mintcdn.com/cometchat-22654f5b-docs-agent-in-group-react-v6/fW0PxkjcCIs_jips/images/d36654d9-uqw7o892u1k2jfoi48c3mpcr3mfz8ha80dlt89198cy33d4xxfkqkic9gof95zj2-e78adc70b09a7dec13c4af65e00c0232.png?fit=max&auto=format&n=fW0PxkjcCIs_jips&q=85&s=bfe29f3d21282637474e5969c2e45ce2" width="934" height="189" data-path="images/d36654d9-uqw7o892u1k2jfoi48c3mpcr3mfz8ha80dlt89198cy33d4xxfkqkic9gof95zj2-e78adc70b09a7dec13c4af65e00c0232.png" />
</Frame>

Import CometChat SDK using following code in dart

<Tabs>
  <Tab title="Dart">
    ```dart theme={null}
    import 'package:cometchat/cometchat_sdk.dart';
    ```
  </Tab>
</Tabs>

## Initialise CometChat

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

1. appID - You 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 three settings:

* **Region**: The region where you app was created.
* **[Presence Subscription](/sdk/flutter/3.0/user-presence):** Represents the subscription type for user presence (real-time online/offline status)
* **autoEstablishSocketConnection(boolean value)**: This property takes a boolean value which when set to true informs the SDK to manage the web-socket connection internally. If set to false, it informs the SDK that the web-socket connection will be managed manually. The default value for this parameter is true. For more information on this, please check the [Managing Web-Socket connections manually](/sdk/flutter/3.0/advanced-managing-web-sockets-connections-manually) section. The default value for this property is **true.**
* **adminHost(adminHost: string)**: This method takes the admin URL as input and uses this admin URL instead of the default admin URL. This can be used in case of dedicated deployment of CometChat.
* **clientHost(clientHost: string)**: This method takes the client URL as input and uses this client URL instead of the default client URL. This can be used in case of dedicated deployment of CometChat.

<Tabs>
  <Tab title="Dart">
    ```dart theme={null}
    String region = "REGION";
    String appId = "APP_ID";

    AppSettings appSettings= (AppSettingsBuilder()
            ..subscriptionType = CometChatSubscriptionType.allUsers
            ..region= region
    				..adminHost = "" //optional
    				..clientHost = "" //optional
            ..autoEstablishSocketConnection =  true
     ).build();

    CometChat.init(appId, appSettings, 
    	onSuccess: (String successMessage) {
    		debugPrint("Initialization completed successfully  $successMessage");
    	}, onError: (CometChatException excep) {
    		debugPrint("Initialization failed with exception: ${excep.message}");
    	}
    );
    ```
  </Tab>
</Tabs>

We suggest you call the `init()` method on app startup.
