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

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

В этой статье рассказывается, как обращаться к состоянию профиля, чтобы понимать, что показывать пользователю — пейвол или платный контент.

Получение статуса подписки

Когда нужно решить, показать пользователю пейвол или платный контент, проверьте его уровень доступа в профиле. Есть два способа:

  • Вызвать GetProfile, если нужны актуальные данные профиля прямо сейчас (например, при запуске приложения) или требуется принудительное обновление.
  • Настроить автоматические обновления профиля, чтобы хранить локальную копию, которая автоматически обновляется при изменении статуса подписки.

Получение профиля

Самый простой способ узнать статус подписки — использовать метод GetProfile:

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

// check the access
});

Отслеживание обновлений подписки

Чтобы автоматически получать обновления профиля в приложении:

  1. Унаследуйте AdaptyEventListener и реализуйте метод OnLoadLatestProfile — Adapty будет автоматически вызывать его при каждом изменении статуса подписки пользователя.
  2. Сохраняйте обновлённые данные профиля при вызове этого метода, чтобы использовать их в приложении без дополнительных сетевых запросов.
public class SubscriptionManager : MonoBehaviour, AdaptyEventListener {
    private AdaptyProfile currentProfile;
    
    void Start() {
        // Register this object as an Adapty event listener
        Adapty.SetEventListener(this);
    }
    
    // Store the profile when it updates
    public void OnLoadLatestProfile(AdaptyProfile profile) {
        currentProfile = profile;
        // Update UI, unlock content, etc.
    }
    
    public void OnInstallationDetailsSuccess(AdaptyInstallationDetails details) { }
    public void OnInstallationDetailsFail(AdaptyError error) { }
    
    // Use stored profile instead of calling getProfile()
    public bool HasAccess() {
        if (currentProfile?.AccessLevels != null && 
            currentProfile.AccessLevels.ContainsKey("premium")) {
            return currentProfile.AccessLevels["premium"].IsActive;
        }
        return false;
    }
}

Adapty автоматически вызывает OnLoadLatestProfile при запуске приложения, предоставляя кешированные данные о подписке даже при отсутствии интернета.

Связь профиля с логикой пейвола

Когда нужно мгновенно решить, показывать пейвол или открывать доступ к платным функциям, можно проверить профиль пользователя напрямую. Это удобно при запуске приложения, входе в премиальные разделы или перед показом определённого контента.

private void CheckAccessLevel()
{
    Adapty.GetProfile((profile, error) => {
        if (error != null) {
            Debug.LogError("Error checking access level: " + error.Message);
            // Show paywall if access check fails
            return;
        }
        
        var accessLevel = profile.AccessLevels["YOUR_ACCESS_LEVEL"];
        if (accessLevel == null || !accessLevel.IsActive) {
            // Show paywall if no access
        }
    });
}

private void InitializePaywall()
{
    LoadPaywall();
    CheckAccessLevel();
}

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

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