Идентификация пользователей в iOS 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.

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

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

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

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

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

  • При активации SDK: Если идентификатор пользователя уже сохранён на момент запуска приложения, передайте его при вызове 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.

Идентификаторы пользователей должны быть уникальными для каждого пользователя. Если задать значение параметра жёстко в коде, все пользователи будут считаться одним.

Всегда используйте await для identify перед вызовом других методов SDK. Параллельные вызовы приводят к ошибке #3006 profileWasChanged или попаданию в анонимный профиль. Подробнее: Порядок вызовов в iOS SDK.

При активации 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.

Выход пользователей из системы

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

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

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

Разрешение покупок без авторизации

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

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

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

Поздравляем! Вы реализовали логику встроенных покупок в своём приложении! Желаем вам успехов в монетизации! Чтобы получить от Adapty ещё больше, изучите эти темы:

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