---
title: "Идентификация пользователей в iOS SDK"
description: "Идентифицируйте пользователей в Adapty для улучшения персонализированного опыта подписки."
---

Adapty создаёт внутренний ID профиля для каждого пользователя. Если у вас есть собственная система аутентификации, вы можете задать свой Customer User ID. Найти пользователей по Customer User ID можно в разделе [Profiles](profiles-crm), а также использовать его в [серверном API](getting-started-with-server-side-api) — он будет передаваться во все интеграции.

## Задать Customer User ID при инициализации \{#set-customer-user-id-on-configuration\}

Если ID пользователя известен на момент инициализации, передайте его в параметре `customerUserId` метода `.activate()`:

<Tabs groupId="current-os" queryString>
<TabItem value="swift" label="Swift" default>

```swift showLineNumbers
// In your AppDelegate class:

let configurationBuilder =
    AdaptyConfiguration
        .builder(withAPIKey: "PUBLIC_SDK_KEY")
        .with(customerUserId: "YOUR_USER_ID")

do {
  try await Adapty.activate(with: configurationBuilder.build())
} catch {
  // handle the error
}
```
</TabItem>

<TabItem value="swift-callback" label="Swift-Callback" default>

```swift showLineNumbers
// In your AppDelegate class:

let configurationBuilder =
    AdaptyConfiguration
        .builder(withAPIKey: "PUBLIC_SDK_KEY")
        .with(customerUserId: "YOUR_USER_ID")

Adapty.activate(with: configurationBuilder.build()) { error in
  // handle the error
}
```

</TabItem>

</Tabs>

:::tip

Хотите увидеть реальный пример интеграции Adapty SDK в мобильное приложение? Посмотрите наши [примеры приложений](sample-apps) — они демонстрируют полную настройку: отображение пейволов, совершение покупок и другие базовые функции.

:::

## Задать Customer User ID после инициализации \{#set-customer-user-id-after-configuration\}

Если ID пользователя не был известен при инициализации SDK, его можно задать в любой момент с помощью метода `.identify()`. Чаще всего это нужно после регистрации или авторизации — когда анонимный пользователь становится аутентифицированным.

<Tabs groupId="current-os" queryString>
<TabItem value="swift" label="Swift" default>

```swift showLineNumbers
do {
    try await Adapty.identify("YOUR_USER_ID")
} catch {
    // handle the error
}
```
</TabItem>
<TabItem value="swift-callback" label="Swift-Callback" default>

```swift showLineNumbers
Adapty.identify("YOUR_USER_ID") { error in
    if let error {
        // handle the error
    }
}
```
</TabItem>
</Tabs>

Параметры запроса:

- **Customer User ID** (обязательный): строковый идентификатор пользователя.

:::warning
Повторная отправка важных данных пользователя

В некоторых случаях, например когда пользователь повторно входит в аккаунт, серверы Adapty уже располагают информацией об этом пользователе. В таких ситуациях Adapty SDK автоматически переключится на работу с новым пользователем. Если вы передавали какие-либо данные анонимному пользователю — например, кастомные атрибуты или атрибуцию из сторонних сетей — их нужно повторно отправить для идентифицированного пользователя.

Также важно учитывать, что после идентификации пользователя необходимо повторно запросить все пейволы и продукты, поскольку данные нового пользователя могут отличаться.
:::

## Выход и вход в аккаунт \{#logging-out-and-logging-in\}

Выйти из аккаунта можно в любой момент, вызвав метод `.logout()`:

<Tabs groupId="current-os" queryString>
<TabItem value="swift" label="Swift" default>

```swift showLineNumbers
do {
    try await Adapty.logout()
} catch {
    // handle the error
}
```
</TabItem>
<TabItem value="swift-callback" label="Swift-Callback" default>

```swift showLineNumbers
Adapty.logout { error in
    if error == nil {
        // successful logout
    }
}
```
</TabItem>
</Tabs>

После этого можно выполнить вход с помощью метода `.identify()`.

## Задать appAccountToken \{#set-appaccounttoken\}

[`appAccountToken`](https://developer.apple.com/documentation/storekit/product/purchaseoption/appaccounttoken(_:)) — это UUID, который помогает StoreKit 2 от Apple идентифицировать пользователей при переустановке приложения и смене устройства.

Начиная с Adapty iOS SDK 3.10.2, можно передавать `appAccountToken` как при инициализации SDK, так и при идентификации пользователя:

<Tabs groupId="current-os" queryString>
<TabItem value="swift" label="Swift" default>

```swift showLineNumbers
// During configuration:
let configurationBuilder =
    AdaptyConfiguration
        .builder(withAPIKey: "PUBLIC_SDK_KEY")
        .with(customerUserId: "YOUR_USER_ID", withAppAccountToken: UUID())

do {
  try await Adapty.activate(with: configurationBuilder.build())
} catch {
  // handle the error
}

// Or when identifying a user:
do {
    try await Adapty.identify("YOUR_USER_ID", withAppAccountToken: UUID())
} catch {
    // handle the error
}
```
</TabItem>

<TabItem value="swift-callback" label="Swift-Callback" default>

```swift showLineNumbers
// During configuration:
let configurationBuilder =
    AdaptyConfiguration
        .builder(withAPIKey: "PUBLIC_SDK_KEY")
        .with(customerUserId: "YOUR_USER_ID", withAppAccountToken: UUID())

Adapty.activate(with: configurationBuilder.build()) { error in
  // handle the error
}

// Or when identifying a user:
Adapty.identify("YOUR_USER_ID", withAppAccountToken: UUID()) { error in
    if let error {
        // handle the error
    }
}
```
</TabItem>
</Tabs>

После этого можно выполнить вход с помощью метода `.identify()`.