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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

try {
  await adapty.identify({ customerUserId: "YOUR_USER_ID" });
  // 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.

Чтобы исключить созданные пустые профили из аналитики дашборда, перейдите в App settings и настройте Installs definition for analytics.

await adapty.activate({
  apiKey: "YOUR_PUBLIC_SDK_KEY",
  params: {
    customerUserId: "YOUR_USER_ID"
  }
});

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

Если в приложении есть кнопка выхода, используйте метод logout. При этом для пользователя создаётся новый анонимный ID профиля.

try {
  await adapty.logout();
  // successful logout
} catch (error) {
  // handle the error
}

Для повторного входа пользователя в приложение используйте метод identify.

Разрешить покупки без входа в систему

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

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