---
title: "Capacitor SDKでサブスクリプションステータスを確認する"
description: "Capacitorアプリでのユーザーサブスクリプションステータスの追跡と管理により、Adaptyでの顧客維持率を向上させましょう。"
---

Adaptyを使えば、サブスクリプションステータスの管理が簡単になります。プロダクトIDをコードに手動で記述する必要はありません。代わりに、有効な[アクセスレベル](access-level)を確認するだけで、ユーザーのサブスクリプションステータスを手軽に把握できます。

<details>
   <summary>サブスクリプションステータスの確認を始める前に（クリックして展開）</summary>

- iOSの場合は、[App Store Server Notifications](enable-app-store-server-notifications)を設定してください
- Androidの場合は、[リアルタイムデベロッパー通知（RTDN）](enable-real-time-developer-notifications-rtdn)を設定してください
</details>

## アクセスレベルとAdaptyProfileオブジェクト \{#access-level-and-the-adaptyprofile-object\}

アクセスレベルは[AdaptyProfile](https://capacitor.adapty.io/interfaces/adaptyprofile)オブジェクトのプロパティです。アプリの起動時（たとえば[ユーザーを識別する](capacitor-identifying-users#setting-customer-user-id-on-configuration)タイミング）にプロファイルを取得し、変更があるたびに更新することをお勧めします。こうすることで、都度リクエストを送ることなくプロファイルオブジェクトを利用できます。

プロファイルの更新通知を受け取るには、以下の[サブスクリプションステータス更新のリッスン](capacitor-listen-subscription-changes)セクションで説明している方法でプロファイルの変更をリッスンしてください。

:::tip

Adapty SDK がモバイルアプリにどのように統合されているか、実際の例を見てみませんか？ペイウォールの表示、購入処理、その他の基本機能を含む完全なセットアップを実演している[サンプルアプリ](sample-apps)をご覧ください。

:::

## サーバーからアクセスレベルを取得する \{#retrieving-the-access-level-from-the-server\}

サーバーからアクセスレベルを取得するには、`.getProfile()`メソッドを使用します。

```typescript showLineNumbers

try {
  const profile = await adapty.getProfile();
  console.log('Profile retrieved successfully');
} catch (error) {
  console.error('Failed to get profile:', error);
}
```

レスポンスパラメーター：

| パラメーター | 説明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| --------- |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **profile**   | [AdaptyProfile](https://capacitor.adapty.io/interfaces/adaptyprofile)オブジェクト。通常、ユーザーがプレミアムアクセス権を持っているかどうかを判断するには、プロファイルのアクセスレベルステータスのみを確認すれば十分です。`.getProfile`メソッドは常にAPIに問い合わせるため、最新の結果を提供します。何らかの理由（インターネット接続なし等）でAdapty SDKがサーバーから情報を取得できない場合は、キャッシュのデータが返されます。なお、Adapty SDKは`AdaptyProfile`キャッシュを定期的に更新し、情報をできる限り最新の状態に保ちます。 |

`.getProfile()`メソッドはユーザープロファイルを返し、そこからアクセスレベルのステータスを取得できます。アプリごとに複数のアクセスレベルを設定できます。たとえばニュースアプリで異なるトピックのサブスクリプションを個別に販売する場合、「sports」や「science」といったアクセスレベルを作成できます。ただし、ほとんどの場合はアクセスレベルは1つで十分です。その場合はデフォルトの「premium」アクセスレベルをそのまま使用できます。

デフォルトの「premium」アクセスレベルを確認する例を以下に示します。

```typescript showLineNumbers

try {
  const profile = await adapty.getProfile();
  
  const isActive = profile.accessLevels['premium']?.isActive;
  if (isActive) {
    // Grant access to premium features
    console.log('User has premium access');
  } else {
    console.log('User does not have premium access');
  }
} catch (error) {
  console.error('Failed to check subscription status:', error);
}
```

### サブスクリプションステータスの更新をリッスンする \{#listening-for-subscription-status-updates\}

ユーザーのサブスクリプションが変更されると、Adaptyはイベントを発火します。

Adaptyからメッセージを受け取るには、追加の設定が必要です。

```typescript showLineNumbers

// Create an "onLatestProfileLoad" event listener
adapty.addListener('onLatestProfileLoad', (data) => {
  const profile = data.profile;
  const isActive = profile.accessLevels['premium']?.isActive;
  
  if (isActive) {
    console.log('Subscription status updated: User has premium access');
  } else {
    console.log('Subscription status updated: User does not have premium access');
  }
});
```

Adaptyはアプリ起動時にもイベントを発火します。この場合、キャッシュされたサブスクリプションステータスが渡されます。

### サブスクリプションステータスのキャッシュ \{#subscription-status-cache\}

Adapty SDKに実装されたキャッシュは、プロファイルのサブスクリプションステータスを保存します。これにより、サーバーが利用できない場合でもキャッシュデータにアクセスでき、プロファイルのサブスクリプションステータスに関する情報を提供できます。

ただし、キャッシュからデータを直接リクエストすることはできません。SDKは1分ごとに定期的にサーバーへ問い合わせ、プロファイルに関する更新や変更がないかチェックします。新しいトランザクションなどの変更があれば、サーバーと同期を保つためにキャッシュデータへ反映されます。