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

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

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

  • Профили — сущности, необходимые для работы 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. Подробнее.

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

  • Если у профиля ещё нет 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 при входе с новых устройств или переустановке приложения.

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 (уже связанный с профилем), Adapty автоматически синхронизирует транзакции.
    • Если это новый customer user ID (например, покупка была сделана до регистрации), Adapty присваивает customer user ID текущему профилю, сохраняя всю историю покупок.