Идентификация пользователей в React Native SDK

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

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

Ключевые понятия:

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

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

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

Анонимные пользователи

Если у вас нет серверной аутентификации, вам не нужно реализовывать аутентификацию в коде приложения:

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

При работе с анонимными пользователями при каждой установке будут создаваться новые профили, но это не проблема: в аналитике Adapty вы можете настроить, что считать новой установкой.

Восстановление из резервной копии отличается от переустановки. По умолчанию при восстановлении из резервной копии SDK сохраняет кешированные данные и не создаёт новый профиль. Это поведение можно настроить с помощью параметра clearDataOnBackup. Подробнее.

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

Идентифицированные пользователи

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

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

  • При активации SDK: Если customer user ID уже известен на момент запуска приложения, передайте его при вызове activate().

По умолчанию, когда Adapty получает покупку от Customer User ID, который уже связан с другим Customer User ID, уровень доступа становится общим — оба профиля получают платный доступ. Вы можете настроить это поведение: перенести платный доступ с одного профиля на другой или полностью отключить совместный доступ. Подробнее см. в статье.

identify-diagram.webp

При входе/регистрации

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

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

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

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.

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

Идентификатор устройства соответствует одной установке приложения из стора на устройстве и обновляется только после переустановки приложения. Он не зависит от того, первая это или повторная установка, и от того, используется ли существующий customer user 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.

Покупки без входа в аккаунт

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

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

Следующие шаги

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

Чтобы использовать Adapty по максимуму, изучите эти темы:

  • Тестирование: Убедитесь, что всё работает как ожидается
  • Онбординги: Вовлекайте пользователей с помощью онбордингов и повышайте удержание
  • Интеграции: Подключайте сервисы маркетинговой атрибуции и аналитики буквально в одну строку кода
  • Задать пользовательские атрибуты профиля: Добавляйте пользовательские атрибуты к профилям и создавайте сегменты для A/B-тестов или показа разных пейволов разным пользователям