Идентификация пользователей в React Native 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 можно настроить, что считать новой установкой.
Восстановление из резервной копии работает иначе, чем переустановка. По умолчанию при восстановлении из бэкапа SDK сохраняет кешированные данные и не создаёт новый профиль. Это поведение можно настроить с помощью параметра clearDataOnBackup. Подробнее.
Для анонимных пользователей установки считаются по идентификаторам устройств. При этом каждая установка приложения на устройство считается отдельной установкой, включая повторные.
Идентификация пользователей
Есть два способа идентифицировать пользователей в приложении:
-
При входе/регистрации: Если пользователи входят уже после запуска приложения, вызовите
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.
Идентификаторы пользователей должны быть уникальными для каждого пользователя. Если захардкодить значение параметра, все пользователи будут считаться одним.
Всегда используйте await для identify перед вызовом других методов SDK. Параллельные вызовы приводят к ошибке #3006 profileWasChanged или работают с анонимным профилем. См. Порядок вызовов в React Native SDK.
try {
await adapty.identify("YOUR_USER_ID"); // Unique for each user
// successfully identified
} catch (error) {
// handle the error
}
При активации 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.
adapty.activate("PUBLIC_SDK_KEY", {
customerUserId: "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.
});
Выход пользователей из аккаунта
Если в приложении есть кнопка выхода, используйте метод logout.
Выход из аккаунта создаёт новый анонимный профиль для пользователя.
try {
await adapty.logout();
// successful logout
} catch (error) {
// handle the error
}
Чтобы снова войти в аккаунт, используйте метод identify.
Разрешите покупки без входа в систему
Если пользователи могут совершать покупки как до, так и после входа в приложение, необходимо убедиться, что после входа они сохранят доступ:
- Когда неавторизованный пользователь совершает покупку, Adapty привязывает её к анонимному ID профиля.
- Когда пользователь входит в аккаунт, Adapty переключается на работу с идентифицированным профилем.
- Если это новый customer user ID (например, покупка была совершена до регистрации), Adapty присваивает customer user ID текущему профилю, сохраняя всю историю покупок.
- Если customer user ID уже существует (он уже привязан к профилю), после переключения профиля нужно получить актуальный уровень доступа. Для этого можно вызвать
getProfileсразу после идентификации или подписаться на обновления профиля, чтобы данные синхронизировались автоматически.
Следующие шаги
Поздравляем! Вы реализовали логику встроенных покупок в своём приложении! Желаем вам всего наилучшего в монетизации вашего приложения! Чтобы получить от Adapty ещё больше, изучите эти темы:
- Тестирование: Убедитесь, что всё работает как ожидается
- Онбординги: Вовлекайте пользователей с помощью онбордингов и повышайте удержание
- Интеграции: Интегрируйтесь с сервисами маркетинговой атрибуции и аналитики буквально в одну строку кода
- Настройка атрибутов профиля: Добавляйте пользовательские атрибуты к профилям и создавайте сегменты — чтобы запускать A/B-тесты или показывать разные пейволы разным пользователям