# 3. Initialization

Initialization sets up internal SDK components to allow the creation of a Sentiance user on the device, and perform detections in the background.

Only a limited set of SDK functions are allowed to be invoked before initializing the SDK.

### iOS

The correct way to natively initialize on iOS is to do it inside the `application:didFinishLaunchingWithOptions:` method of the `AppDelegate` class.

{% code title="AppDelegate.swift" %}

```swift
override func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
  ) -> Bool {
    GeneratedPluginRegistrant.register(with: self)
    SentianceCorePlugin.shared.initialize()
    return super.application(application, didFinishLaunchingWithOptions: launchOptions)
  }
```

{% endcode %}

### Android

In order to initialize the SDK, add the following line inside the `onCreate()` method of your `Application` class:

```kotlin
package com.your.domain;

import android.app.Application
import com.sentiance.core_plugin.CorePlugin

class MainApplication : Application() {
    override fun onCreate() {
        // ...
        
        CorePlugin.initialize(this) // Add this line
    }
}
```
