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

Adapty создаёт внутренний ID профиля для каждого пользователя. Однако если у вас есть собственная система аутентификации, вам следует задать свой Customer User ID. Вы можете находить пользователей по их Customer User ID в разделе Профили и использовать его в серверном API — он будет передаваться во все интеграции.

Установите customer user ID при настройке

Если у вас есть ID пользователя на момент настройки, просто передайте его как параметр customerUserId в метод .activate():

Хотите увидеть реальный пример интеграции Adapty SDK в мобильное приложение? Посмотрите наши примеры приложений — они демонстрируют полную настройку: отображение пейволов, совершение покупок и другие базовые функции.

Задайте customer user ID после конфигурации

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

Параметры запроса:

  • Customer User ID (обязательный): строковый идентификатор пользователя.

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

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

Выход из системы и вход

Вы можете выйти из аккаунта пользователя в любой момент, вызвав метод .logout():

После этого вы можете войти под другим пользователем с помощью метода .identify().

Установка appAccountToken

appAccountToken — это UUID, который помогает StoreKit 2 от Apple идентифицировать пользователей при переустановке приложения и смене устройств.

Начиная с Adapty iOS SDK 3.10.2, вы можете передавать appAccountToken при настройке SDK или при идентификации пользователя:

Затем вы можете авторизовать пользователя с помощью метода .identify().

Определение пользователей на разных устройствах

При активации SDK он автоматически считывает существующие права пользователя из StoreKit (iOS) или Google Play Billing (Android) и синхронизирует их с бэкендом Adapty. Активная подписка появляется в профиле Adapty без вызова restorePurchases со стороны приложения.

Что не происходит автоматически — так это распознавание того, что профиль на новом устройстве принадлежит тому же пользователю, что и профиль на исходном устройстве. Adapty сопоставляет профили по Customer User ID, поэтому непрерывность идентификации зависит от того, что вы используете в качестве CUID.

Что Adapty может определить между устройствами

Ваша настройкаЧто Adapty определяетЧто нужно сделать
Customer User ID = device_id (без входа в аккаунт)Новое устройство получает другой CUID и, следовательно, другой профиль. Подписка синхронизируется с новым профилем через событие Access level updated, но subscription_started не срабатывает — новый профиль считается наследником исходной покупки. Аналитика, основанная на subscription_started, будет занижать количество возвращающихся пользователей.Используйте стабильный идентификатор аккаунта в качестве Customer User ID, чтобы вернувшийся пользователь соответствовал существующему профилю на разных устройствах.
Customer User ID = стабильный идентификатор аккаунта (вход на каждом устройстве)SDK автоматически синхронизирует подписку при activate(), а identify() сопоставляет существующий профиль по CUID.Никаких дополнительных действий не требуется — и идентификация, и подписка разрешаются автоматически.
Наследник Apple Family SharingЧлен семьи получает подписку только через событие Access level updatedsubscription_started не срабатывает.Отслеживайте событие Access level updated. Полную матрицу событий см. в разделе Apple Family Sharing.
Один аккаунт Apple/Google, разные пользователи внутри приложенияПервый профиль, зафиксировавший покупку, становится родительским. Последующие профили видят подписку через цепочку наследования с одним событием Access level updated.Требуйте входа в аккаунт, затем выберите режим совместного использования, подходящий для вашей модели.

Восстановление покупок на новом устройстве

Добавьте кнопку «Восстановить покупки», инициируемую пользователем, на свой пейвол. Apple App Review (руководство 3.1.1) её требует, и она служит запасным вариантом на случай, если автоматическая синхронизация пропустит граничный случай. Кнопка должна вызывать restorePurchases в вашем SDK.

Программный вызов restorePurchases при первом запуске не нужен для обычного использования — SDK уже выполняет аналогичную операцию при activate(). Программные вызовы стоит использовать только для принудительной проверки чека, например при отладке отсутствующего доступа после завершения activate().