Идентификация пользователей в Kotlin Multiplatform 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 сохраняет кэшированные данные и не создаёт новый профиль. Вы можете настроить это поведение с помощью параметра withAppleClearDataOnBackup. Подробнее.
Идентифицированные пользователи
Есть два способа идентифицировать пользователей в приложении:
-
При входе/регистрации: Если пользователи входят в систему после запуска приложения, вызовите
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.
Customer user ID должны быть уникальными для каждого пользователя. Если вы жёстко задаёте значение этого параметра, все пользователи будут считаться одним.
Adapty.identify("YOUR_USER_ID") // Уникально для каждого пользователя
.onSuccess {
// успешная идентификация
}
.onError { error ->
// обработка ошибки
}
При активации SDK
Если вы уже знаете customer user ID в момент активации SDK, вы можете передать его в метод activate вместо того, чтобы вызывать identify отдельно.
Если вы знаете customer user ID, но задаёте его только после активации, это означает, что при активации Adapty создаст новый анонимный профиль и переключится на существующий только после вызова identify.
Вы можете передать как существующий customer user ID (который уже использовали ранее), так и новый. Если вы передадите новый, созданный при активации профиль будет автоматически привязан к этому customer user ID.
По умолчанию создание анонимных профилей не влияет на дашборды аналитики, поскольку установки считаются по идентификаторам устройств.
Идентификатор устройства представляет одну установку приложения из стора на устройстве и обновляется только после переустановки приложения.
Он не зависит от того, является ли это первой или повторной установкой, и от того, используется ли существующий customer user ID.
Создание профиля (при активации SDK или выходе из аккаунта), вход в систему или обновление приложения без переустановки не генерирует дополнительных событий установки.
Если вы хотите считать установки по уникальным пользователям, а не устройствам, перейдите в App settings и настройте Installs definition for analytics.
AdaptyConfig.Builder("PUBLIC_SDK_KEY")
.withCustomerUserId("user123") // Customer user ID должны быть уникальными для каждого пользователя. Если вы жёстко задаёте значение параметра, все пользователи будут считаться одним.
.build()
Выход пользователей из системы
Если в вашем приложении есть кнопка выхода, используйте метод logout.
Выход из аккаунта создаёт новый анонимный профиль для пользователя.
Adapty.logout()
.onSuccess {
// успешный выход
}
.onError { error ->
// обработка ошибки
}
Чтобы снова войти в приложение, используйте метод identify.
Разрешить покупки без входа в систему
Если ваши пользователи могут совершать покупки как до входа в аккаунт, так и после, вам нужно убедиться, что после входа они сохранят доступ:
- Когда пользователь без аккаунта совершает покупку, Adapty привязывает её к его анонимному идентификатору профиля.
- Когда пользователь входит в свой аккаунт, Adapty переключается на работу с его идентифицированным профилем.
- Если это новый customer user ID (например, покупка была совершена до регистрации), Adapty присваивает customer user ID текущему профилю, сохраняя всю историю покупок.
- Если это существующий customer user ID (customer user ID уже привязан к профилю), вам нужно получить актуальный уровень доступа после переключения профиля. Вы можете либо вызвать
getProfileсразу после идентификации, либо подписаться на обновления профиля, чтобы данные синхронизировались автоматически.
Следующие шаги
Поздравляем! Вы реализовали логику покупок в приложении! Желаем вам всего наилучшего с монетизацией!
Чтобы получить ещё больше от Adapty, изучите эти темы:
- Тестирование: Убедитесь, что всё работает как ожидается
- Интеграции: Подключитесь к сервисам маркетинговой атрибуции и аналитики всего одной строкой кода
- Установка пользовательских атрибутов профиля: Добавьте пользовательские атрибуты к профилям и создайте сегменты, чтобы запускать A/B-тесты или показывать разные пейволы разным пользователям