Идентификация пользователей в Flutter 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 вы можете настроить, что считается новой установкой.

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

try {
  await Adapty().identify(customerUserId); // Unique for each user
} on AdaptyError catch (adaptyError) {
  // handle the error
} catch (e) {
}

При активации SDK

Если customer user ID известен в момент активации SDK, вы можете передать его прямо в методе activate, не вызывая identify отдельно.

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

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

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

ID устройства соответствует одной установке приложения из стора на устройстве и обновляется только после переустановки приложения. Он не зависит от того, первая это установка или повторная, и от того, используется ли существующий customer user ID.

Создание профиля (при активации SDK или выходе из системы), вход в систему и обновление приложения без переустановки не генерируют дополнительных событий установки.

Если вы хотите считать установки по уникальным пользователям, а не устройствам, перейдите в App settings и настройте Installs definition for analytics.

   try {
       await Adapty().activate(
           configuration: AdaptyConfiguration(apiKey: 'YOUR_API_KEY')
             ..withCustomerUserId(YOUR_CUSTOMER_USER_ID) // Customer user IDs must be unique for each user. If you hardcode the parameter value, all users will be considered as one.
       );
   } catch (e) {
       // handle the error
   }

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

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

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

try {
  await Adapty().logout();
} on AdaptyError catch (adaptyError) {
  // handle the error
} catch (e) {
  // handle unknown error
}

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

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

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

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

Дальнейшие шаги

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

Чтобы получить от Adapty ещё больше, изучите следующие темы:

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