Проверка статуса подписки в Unity SDK

С Adapty отслеживать статус подписки очень просто. Не нужно вручную прописывать идентификаторы продуктов в коде — достаточно проверить наличие активного уровня доступа, чтобы узнать, есть ли у пользователя активная подписка.

Перед тем как проверять статус подписки (нажмите, чтобы раскрыть)

Уровень доступа и объект AdaptyProfile

Уровни доступа — это свойства объекта AdaptyProfile. Рекомендуем получать профиль при запуске приложения, например, когда вы идентифицируете пользователя, и обновлять его при любых изменениях. Так вы сможете использовать объект профиля, не запрашивая его каждый раз заново.

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

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

Получение уровня доступа с сервера

Чтобы получить уровень доступа с сервера, используйте метод .GetProfile():

Adapty.GetProfile((profile, error) => {
  if (error != null) {
    // handle the error
    return;
  }

// check the access
});

Параметры ответа:

ПараметрОписание
Profile

Объект AdaptyProfile. Как правило, для определения доступа к премиум-функциям достаточно проверить статус уровня доступа профиля.

Метод .getProfile всегда пытается обратиться к API и возвращает наиболее актуальные данные. Если по какой-то причине (например, при отсутствии интернета) Adapty SDK не может получить данные с сервера, возвращаются данные из кэша. Важно учитывать, что Adapty SDK регулярно обновляет кэш 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 периодически обращается к серверу каждую минуту, чтобы проверить наличие обновлений профиля. При наличии изменений — например, новых транзакций или других обновлений — они записываются в кэш, чтобы он оставался синхронизированным с сервером.