Проверка статуса подписки в Unity SDK
С Adapty отслеживать статус подписки очень просто. Не нужно вручную прописывать идентификаторы продуктов в коде — достаточно проверить наличие активного уровня доступа, чтобы узнать, есть ли у пользователя активная подписка.
Перед тем как проверять статус подписки (нажмите, чтобы раскрыть)
- Для iOS настройте App Store Server Notifications
- Для Android настройте Real-time Developer Notifications (RTDN)
Уровень доступа и объект AdaptyProfile
Уровни доступа — это свойства объекта AdaptyProfile. Рекомендуем получать профиль при запуске приложения, например, когда вы идентифицируете пользователя, и обновлять его при любых изменениях. Так вы сможете использовать объект профиля, не запрашивая его каждый раз заново.
Чтобы получать уведомления об обновлениях профиля, подпишитесь на изменения профиля, как описано в разделе Отслеживание обновлений статуса подписки ниже.
Хотите увидеть реальный пример интеграции Adapty SDK в мобильное приложение? Посмотрите наши примеры приложений — они демонстрируют полную настройку: отображение пейволов, совершение покупок и другие базовые функции.
Получение уровня доступа с сервера
Чтобы получить уровень доступа с сервера, используйте метод .GetProfile():
Adapty.GetProfile((profile, error) => {
if (error != null) {
// handle the error
return;
}
// check the access
});
Параметры ответа:
| Параметр | Описание |
|---|---|
| Profile | Объект AdaptyProfile. Как правило, для определения доступа к премиум-функциям достаточно проверить статус уровня доступа профиля. Метод |
Метод .getProfile() возвращает профиль пользователя, из которого можно получить статус уровня доступа. В приложении может быть несколько уровней доступа. Например, в газетном приложении с независимыми подписками на разные темы можно создать уровни доступа «sports» и «science». Но в большинстве случаев достаточно одного уровня доступа — тогда можно просто использовать уровень доступа “premium” по умолчанию.
Пример проверки уровня доступа “premium” по умолчанию:
Adapty.GetProfile((profile, error) => {
if (error != null) {
// handle the error
return;
}
// "premium" is an identifier of default access level
var accessLevel = profile.AccessLevels["premium"];
if (accessLevel != null && accessLevel.IsActive) {
// grant access to premium features
}
});
Отслеживание обновлений статуса подписки
При каждом изменении подписки пользователя Adapty генерирует событие.
Чтобы получать сообщения от Adapty, необходимо выполнить дополнительную настройку:
// Extend `AdaptyEventListener ` with `OnLoadLatestProfile ` method:
public class AdaptyListener : MonoBehaviour, AdaptyEventListener {
public void OnLoadLatestProfile(AdaptyProfile profile) {
// handle any changes to subscription state
}
}
Adapty также генерирует событие при запуске приложения. В этом случае передаётся кэшированный статус подписки.
Кэш статуса подписки
Кэш, реализованный в Adapty SDK, хранит статус подписки профиля. Это означает, что даже при недоступности сервера из кэша можно получить информацию о статусе подписки профиля.
Однако важно учитывать, что напрямую запрашивать данные из кэша невозможно. SDK периодически обращается к серверу каждую минуту, чтобы проверить наличие обновлений профиля. При наличии изменений — например, новых транзакций или других обновлений — они записываются в кэш, чтобы он оставался синхронизированным с сервером.