Идентификация пользователей в Unity SDK
Этот гайд для вас, если у вас есть собственная система аутентификации. Здесь вы узнаете, как работать с профилями пользователей в Adapty, чтобы они корректно интегрировались с вашей существующей системой аутентификации.
То, как вы управляете покупками пользователей, зависит от модели аутентификации в вашем приложении:
- Если ваше приложение не использует серверную аутентификацию и не хранит данные пользователей, см. раздел об анонимных пользователях.
- Если в вашем приложении есть (или будет) серверная аутентификация, см. раздел об идентифицированных пользователях. Ключевые понятия:
- Профили — это сущности, необходимые для работы SDK. Adapty создаёт их автоматически.
- Они могут быть анонимными (без customer user ID) или идентифицированными (с customer user ID).
- Вы передаёте customer user ID, чтобы связать профили в Adapty с вашей внутренней системой авторизации.
Вот чем отличаются анонимные и идентифицированные пользователи:
| Анонимные пользователи | Идентифицированные пользователи | |
|---|---|---|
| Управление покупками | Восстановление покупок на уровне стора | История покупок сохраняется на всех устройствах через customer user ID |
| Управление профилем | Новый профиль при каждой переустановке | Один и тот же профиль во всех сессиях и на всех устройствах |
| Сохранность данных | Данные анонимных пользователей привязаны к установке приложения | Данные идентифицированных пользователей сохраняются между установками приложения |
Анонимные пользователи
Если у вас нет серверной аутентификации, вам не нужно реализовывать аутентификацию в коде приложения:
- Когда SDK активируется при первом запуске приложения, Adapty создаёт новый профиль для пользователя.
- Когда пользователь совершает покупку в приложении, она привязывается к его профилю Adapty и аккаунту в сторе.
- Когда пользователь переустанавливает приложение или устанавливает его на новое устройство, Adapty создаёт новый анонимный профиль при активации.
- Если пользователь ранее совершал покупки в вашем приложении, по умолчанию они автоматически синхронизируются из App Store при активации SDK. Таким образом, для анонимных пользователей при каждой установке будет создаваться новый профиль — но это не проблема, так как в аналитике Adapty можно настроить, что считать новой установкой.
Для анонимных пользователей нужно считать установки по device ID. В этом случае каждая установка приложения на устройство считается отдельной установкой, включая переустановки.
Идентификация пользователей
Есть два способа идентифицировать пользователей в приложении:
-
При входе/регистрации: Если пользователи входят в систему после запуска приложения, вызовите
identify()с customer user ID в момент аутентификации. -
При активации SDK: Если customer user ID уже сохранён на момент запуска приложения, передайте его при вызове
activate().
По умолчанию, когда Adapty получает покупку от Customer User ID, который уже связан с другим Customer User ID, уровень доступа становится общим — оба профиля получают платный доступ. Вы можете настроить это поведение так, чтобы платный доступ переносился с одного профиля на другой, или полностью отключить общий доступ. Подробнее см. в статье.
При входе или регистрации
Если вы идентифицируете пользователей после запуска приложения (например, после входа или регистрации), используйте метод identify, чтобы задать их customer user ID.
- Если вы ещё не использовали этот customer user ID, Adapty автоматически привяжет его к текущему профилю.
- Если вы уже использовали этот customer user ID для идентификации пользователя, Adapty переключится на работу с профилем, связанным с этим customer user ID.
ID пользователя должен быть уникальным для каждого пользователя. Если вы укажете фиксированное значение параметра, все пользователи будут считаться одним.
Дождитесь выполнения коллбэка Identify перед вызовом других методов SDK. Параллельные вызовы приводят к ошибке #3006 profileWasChanged или попаданию в анонимный профиль. См. Порядок вызовов в Unity SDK.
Adapty.Identify("YOUR_USER_ID", (error) => { // Уникальный для каждого пользователя
if(error == null) {
// successful identify
}
});
Во время активации SDK
Если вы уже знаете customer user ID в момент активации SDK, можно передать его прямо в метод activate — вместо того чтобы вызывать identify отдельно.
Если вы знаете customer user ID, но задаёте его только после активации, то при активации Adapty создаст новый анонимный профиль и переключится на существующий лишь после вызова identify.
Вы можете передать как существующий customer user ID (тот, что использовали раньше), так и новый. Если передать новый — профиль, созданный при активации, будет автоматически привязан к этому customer user ID.
По умолчанию создание анонимных профилей не влияет на аналитические дашборды, поскольку установки считаются по идентификаторам устройств. Идентификатор устройства соответствует одной установке приложения из стора на устройстве и пересоздаётся только при переустановке приложения. Он не зависит от того, первая это установка или повторная, и от того, используется ли существующий пользовательский ID.
Создание профиля (при активации SDK или выходе из аккаунта), вход в систему или обновление приложения без переустановки не генерируют дополнительных событий установки. Если вы хотите считать установки на основе уникальных пользователей, а не устройств, перейдите в App settings и настройте параметр Installs definition for analytics.
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;
}
});
Выход пользователей из системы
Если у вас есть кнопка для выхода из аккаунта, используйте метод logout.
При выходе из аккаунта для пользователя создаётся новый анонимный профиль.
Adapty.Logout((error) => {
if(error == null) {
// successful logout
}
});
Чтобы снова войти в приложение, используйте метод identify.
Разрешите покупки без входа в систему
Если пользователи могут совершать покупки как до, так и после входа в приложение, нужно убедиться, что после авторизации они сохранят доступ к купленным возможностям:
- Когда неавторизованный пользователь совершает покупку, Adapty привязывает её к анонимному идентификатору профиля.
- Когда пользователь входит в аккаунт, Adapty переключается на работу с идентифицированным профилем.
- Если это новый customer user ID (например, покупка была совершена до регистрации), Adapty присваивает customer user ID текущему профилю, сохраняя всю историю покупок.
- Если это существующий customer user ID (customer user ID уже привязан к профилю), нужно получить актуальный уровень доступа после переключения профиля. Можно вызвать
getProfileсразу после идентификации или подписаться на обновления профиля, чтобы данные синхронизировались автоматически.
Следующие шаги
Поздравляем! Вы реализовали логику встроенных покупок в своём приложении! Желаем вам успехов в монетизации! Чтобы получить от Adapty ещё больше, изучите эти темы:
- Тестирование: Убедитесь, что всё работает как ожидается
- Онбординги: Вовлекайте пользователей с помощью онбордингов и повышайте удержание
- Интеграции: Интегрируйтесь с сервисами маркетинговой атрибуции и аналитики буквально в одну строку кода
- Установка пользовательских атрибутов профиля: Добавляйте пользовательские атрибуты к профилям и создавайте сегменты, чтобы запускать A/B-тесты или показывать разные пейволы разным пользователям