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

:::important
Этот гайд для вас, если у вас есть собственная система аутентификации. Здесь вы узнаете, как работать с профилями пользователей в Adapty так, чтобы это соответствовало вашей системе аутентификации.
:::

То, как вы управляете покупками пользователей, зависит от модели аутентификации вашего приложения:
- Если приложение не использует бэкенд-аутентификацию и не хранит данные пользователей, см. [раздел об анонимных пользователях](#anonymous-users).
- Если в вашем приложении есть (или будет) бэкенд-аутентификация, см. [раздел об идентифицированных пользователях](#identified-users).

**Ключевые понятия**:
- **Профили** — это сущности, необходимые для работы SDK. Adapty создаёт их автоматически.
- Они могут быть анонимными **(без customer user ID)** или идентифицированными **(с customer user ID)**.
- Вы передаёте **customer user ID**, чтобы связать профили в Adapty с вашей внутренней системой аутентификации.

Вот в чём разница между анонимными и идентифицированными пользователями:

|                             | Анонимные пользователи                                         | Идентифицированные пользователи                                                           |
|-----------------------------|----------------------------------------------------------------|-------------------------------------------------------------------------------------------|
| **Управление покупками**    | Восстановление покупок на уровне стора                         | Сохранение истории покупок на всех устройствах через customer user ID                    |
| **Управление профилем**     | Новый профиль при каждой переустановке                         | Один и тот же профиль во всех сессиях и на всех устройствах                              |
| **Сохранность данных**      | Данные анонимного пользователя привязаны к установке приложения | Данные идентифицированного пользователя сохраняются между установками приложения          |

## Анонимные пользователи \{#anonymous-users\}

Если у вас нет бэкенд-аутентификации, **обрабатывать аутентификацию в коде приложения не нужно**:

1. При активации SDK при первом запуске приложения Adapty **создаёт новый профиль для пользователя**.
2. Когда пользователь совершает покупку в приложении, она **привязывается к его профилю в Adapty и его аккаунту в сторе**.
3. При **переустановке** приложения или установке на **новое устройство** Adapty **создаёт новый анонимный профиль при активации**.
4. Если пользователь ранее совершал покупки в вашем приложении, по умолчанию они автоматически синхронизируются из App Store при активации SDK.

Таким образом, при работе с анонимными пользователями при каждой установке будет создаваться новый профиль — но это не проблема, поскольку в аналитике Adapty можно [настроить, что считается новой установкой](general#4-installs-definition-for-analytics).

Для анонимных пользователей установки нужно считать по **ID устройств**. В этом случае каждая установка приложения на устройстве считается отдельной установкой, включая переустановки.

## Идентифицированные пользователи \{#identified-users\}

Есть два способа идентифицировать пользователей в приложении:

- [**При входе/регистрации:**](#during-loginsignup) Если пользователи входят в систему после запуска приложения, вызовите `identify()` с customer user ID при их аутентификации.

- [**При активации SDK:**](#during-the-sdk-activation) Если customer user ID уже известен на момент запуска приложения, передайте его при вызове `activate()`.

:::important
По умолчанию, когда Adapty получает покупку от customer user ID, который уже связан с другим customer user ID, уровень доступа предоставляется обоим профилям. Вы можете изменить эту настройку: передавать платный доступ от одного профиля к другому или полностью отключить совместный доступ. Подробнее см. в [статье](general#6-sharing-paid-access-between-user-accounts).
:::

  <img src="/assets/shared/img/identify-diagram.webp"
  style={{
    border: '1px solid #727272', /* border width and color */
    width: '700px', /* image width */
    display: 'block', /* for alignment */
    margin: '0 auto' /* center alignment */
  }}
/>

### При входе/регистрации \{#during-loginsignup\}

Если вы идентифицируете пользователей после запуска приложения (например, после входа в аккаунт или регистрации), используйте метод `identify`, чтобы задать их customer user ID.

- Если вы **ещё не использовали этот customer user ID**, Adapty автоматически привяжет его к текущему профилю.
- Если вы **уже использовали этот customer user ID для идентификации пользователя**, Adapty переключится на работу с профилем, связанным с этим customer user ID.

:::important
Customer user ID должны быть уникальными для каждого пользователя. Если захардкодить значение параметра, все пользователи будут считаться одним.
:::

```csharp showLineNumbers
Adapty.Identify("YOUR_USER_ID", (error) => { // Unique for each user
  if(error == null) {
    // successful identify
  }
});
```

### При активации SDK \{#during-the-sdk-activation\}

Если customer user ID уже известен на момент активации SDK, его можно передать прямо в методе `activate`, не вызывая `identify` отдельно.

Если вы знаете customer user ID, но задаёте его только после активации, это означает, что при активации Adapty создаст новый анонимный профиль и переключится на существующий только после вызова `identify`.

Вы можете передать как существующий customer user ID (который уже использовался ранее), так и новый. Если передать новый, созданный при активации профиль автоматически привяжется к этому customer user ID.

:::note
По умолчанию создание анонимных профилей не влияет на дашборды аналитики, поскольку установки считаются по ID устройств.

ID устройства представляет одну установку приложения из стора на устройстве и обновляется только после переустановки приложения.
Он не зависит от того, первая это или повторная установка, и от того, используется ли существующий customer user ID.

Создание профиля (при активации SDK или выходе из аккаунта), вход в систему или обновление приложения без переустановки не генерируют дополнительные события установки.

Если вы хотите считать установки по уникальным пользователям, а не по устройствам, перейдите в **App settings** и настройте [**Installs definition for analytics**](general#4-installs-definition-for-analytics).
:::

```csharp showLineNumbers
using UnityEngine;
using AdaptySDK;

var builder = new AdaptyConfiguration.Builder("YOUR_API_KEY")
    .SetCustomerUserId("YOUR_USER_ID"); // Customer user IDs must be unique for each user. If you hardcode the parameter value, all users will be considered as one.

Adapty.Activate(builder.Build(), (error) => {
    if (error != null) {
        // handle the error
        return;
    }
}); 
```

### Выход пользователей из системы \{#log-users-out\}

Если у вас есть кнопка для выхода из аккаунта, используйте метод `logout`.

:::important
При выходе из аккаунта для пользователя создаётся новый анонимный профиль.
:::

```csharp showLineNumbers
Adapty.Logout((error) => {
  if(error == null) {
    // successful logout
  }
});
```

:::info
Чтобы снова войти в приложение, используйте метод `identify`.
:::

### Разрешить покупки без входа в систему \{#allow-purchases-without-login\}

Если пользователи могут совершать покупки как до, так и после входа в приложение, нужно убедиться, что после входа они сохранят доступ:

1. Когда пользователь, не вошедший в систему, совершает покупку, Adapty привязывает её к ID его анонимного профиля.
2. Когда пользователь входит в свой аккаунт, Adapty переключается на работу с его идентифицированным профилем.
    - Если это новый customer user ID (например, покупка была сделана до регистрации), Adapty привязывает customer user ID к текущему профилю, сохраняя всю историю покупок.
    - Если это существующий customer user ID (customer user ID уже связан с профилем), после переключения профиля нужно получить актуальный уровень доступа. Для этого можно либо вызвать [`getProfile`](unity-check-subscription-status) сразу после идентификации, либо [подписаться на обновления профиля](unity-check-subscription-status), чтобы данные синхронизировались автоматически.

## Следующие шаги \{#next-steps\}

Поздравляем! Вы реализовали логику встроенных покупок в своём приложении! Желаем успехов с монетизацией!

Чтобы получить от Adapty ещё больше, изучите следующие темы:
- [**Тестирование**](troubleshooting-test-purchases): Убедитесь, что всё работает как ожидается
- [**Онбординги**](onboardings): Вовлекайте пользователей с помощью онбордингов и повышайте удержание
- [**Интеграции**](configuration): Подключайтесь к сервисам маркетинговой атрибуции и аналитики буквально одной строкой кода
- [**Задать атрибуты профиля**](unity-setting-user-attributes): Добавляйте кастомные атрибуты к профилям пользователей и создавайте сегменты для A/B-тестов или показа разных пейволов разным пользователям