---
title: "Kotlin Multiplatform SDKでサブスクリプションのステータスを確認する"
description: "AdaptyでKotlin Multiplatformアプリのサブスクリプションステータスを確認する方法を学びましょう。"
---

ユーザーが有料コンテンツにアクセスできるかどうか、またはペイウォールを表示するかどうかを判断するには、プロファイル内の[アクセスレベル](access-level)を確認する必要があります。

この記事では、プロファイルの状態にアクセスして、ペイウォールを表示するか有料機能へのアクセスを許可するかを判断する方法を説明します。

## サブスクリプションステータスを取得する \{#get-subscription-status\}

ペイウォールや有料コンテンツをユーザーに表示するかどうかを決める際には、プロファイル内の[アクセスレベル](access-level)を確認します。方法は2つあります。

- アプリ起動時など、最新のプロファイルデータがすぐに必要な場合や強制的に更新したい場合は、`getProfile` を呼び出す。
- **プロファイルの自動更新**を設定して、サブスクリプションのステータスが変わるたびに自動的に更新されるローカルコピーを保持する。

### プロファイルを取得する \{#get-profile\}

サブスクリプションのステータスを確認するもっとも簡単な方法は、`getProfile` メソッドを使ってプロファイルにアクセスすることです。

```kotlin showLineNumbers
Adapty.getProfile()
    .onSuccess { profile ->
        // check the access
    }
    .onError { error ->
        // handle the error
    }
```

### サブスクリプションの更新を監視する \{#listen-to-subscription-updates\}

アプリ内でプロファイルの更新を自動的に受け取るには、次のようにします。

1. `Adapty.setOnProfileUpdatedListener()` を使ってプロファイルの変更を監視する。ユーザーのサブスクリプションステータスが変わるたびに、Adaptyが自動的にこのメソッドを呼び出します。
2. このメソッドが呼び出されたときに更新されたプロファイルデータを保存しておくと、追加のネットワークリクエストなしにアプリ全体で利用できます。

```kotlin showLineNumbers
class SubscriptionManager {
    private var currentProfile: AdaptyProfile? = null
    
    init {
        // Listen for profile updates
        Adapty.setOnProfileUpdatedListener { profile ->
            currentProfile = profile
            // Update UI, unlock content, etc.
        }
    }
    
    // Use stored profile instead of calling getProfile()
    fun hasAccess(): Boolean {
        return currentProfile?.accessLevels?.get("YOUR_ACCESS_LEVEL")?.isActive == true
    }
}
```

:::note
Adaptyはアプリ起動時にプロファイル更新リスナーを自動的に呼び出し、デバイスがオフラインでもキャッシュされたサブスクリプションデータを提供します。
:::

## プロファイルとペイウォールのロジックを連携させる \{#connect-profile-with-paywall-logic\}

ペイウォールの表示や有料機能へのアクセス許可をすぐに判断する必要がある場合は、ユーザーのプロファイルを直接確認できます。この方法は、アプリ起動時、プレミアムセクションへの遷移時、特定のコンテンツ表示前といったシナリオで役立ちます。

```kotlin showLineNumbers
private fun checkAccessAndShowPaywall() {
    // First, check if user has access
    Adapty.getProfile()
        .onSuccess { profile ->
            val hasAccess = profile.accessLevels?.get("YOUR_ACCESS_LEVEL")?.isActive == true
            
            if (!hasAccess) {
                // User doesn't have access, show paywall
                showPaywall()
            } else {
                // User has access, show premium content
                showPremiumContent()
            }
        }
        .onError { error ->
            // If we can't check access, show paywall as fallback
            showPaywall()
        }
}

private fun showPaywall() {
    // Get and display paywall using the KMP SDK
    Adapty.getPaywall("YOUR_PLACEMENT_ID")
        .onSuccess { paywall ->
            if (paywall.hasViewConfiguration) {
                val paywallView = AdaptyUI.createPaywallView(paywall = paywall)
                paywallView?.present()
            } else {
                // Handle remote config paywall or show custom UI
                handleRemoteConfigPaywall(paywall)
            }
        }
        .onError { error ->
            // Handle paywall loading error
            showError("Unable to load paywall")
        }
}

private fun showPremiumContent() {
    // Show your premium content here
    // This is where you unlock paid features
}
```

## 次のステップ \{#next-steps\}

サブスクリプションのステータスを追跡する方法を理解したら、次は[ユーザープロファイルの操作](kmp-quickstart-identify)を学んで、ユーザーが購入済みのコンテンツに確実にアクセスできるようにしましょう。