Capacitor SDKでのサブスクリプション状態の確認
Adaptyを使えば、サブスクリプションのステータス管理が簡単になります。プロダクトIDをコードに手動で埋め込む必要はありません。アクティブなアクセスレベルを確認するだけで、ユーザーのサブスクリプション状態をすぐに把握できます。
サブスクリプションステータスの確認を始める前に(クリックして展開)
- iOSの場合は、App Store サーバー通知を設定してください
- Androidの場合は、リアルタイム デベロッパー通知(RTDN)を設定してください
アクセスレベルとAdaptyProfileオブジェクト
アクセスレベルはAdaptyProfileオブジェクトのプロパティです。アプリの起動時(たとえばユーザーを識別するタイミング)にプロファイルを取得し、変更があるたびに更新することをおすすめします。こうすることで、都度リクエストすることなくプロファイルオブジェクトを活用できます。 プロファイルの更新通知を受け取るには、以下のプロファイルの更新(アクセスレベルを含む)のリッスンセクションで説明されているように、プロファイルの変更をリッスンしてください。
Adapty SDK がモバイルアプリにどのように統合されているか、実際の例を見てみませんか?ペイウォールの表示、購入処理、その他の基本機能を含む完全なセットアップを実演しているサンプルアプリをご覧ください。
サーバーからアクセスレベルを取得する
サーバーからアクセスレベルを取得するには、.getProfile() メソッドを使用します。
try {
const profile = await adapty.getProfile();
console.log('Profile retrieved successfully');
} catch (error) {
console.error('Failed to get profile:', error);
}
レスポンスパラメーター:
| パラメータ | 説明 |
|---|---|
| profile | AdaptyProfile オブジェクト。通常は、ユーザーがアプリのプレミアムアクセスを持っているかどうかを判断するために、プロファイルのアクセスレベルのステータスのみを確認します。.getProfile メソッドは常に API へのクエリを試みるため、最新の結果を提供します。何らかの理由(例:インターネット接続なし)で Adapty SDK がサーバーから情報を取得できない場合は、キャッシュのデータが返されます。また、Adapty SDK は AdaptyProfile のキャッシュを定期的に更新し、情報を可能な限り最新の状態に保つことにも注意してください。 |
.getProfile() メソッドを使うと、ユーザーのプロファイルを取得でき、そこからアクセスレベルの状態を確認できます。アプリには複数のアクセスレベルを設定することも可能です。たとえば、ニュースアプリでトピックごとに独立したサブスクリプションを販売する場合、「sports」と「science」というアクセスレベルを作成できます。ただし、ほとんどの場合はアクセスレベルが1つあれば十分なので、デフォルトの「premium」アクセスレベルをそのまま使えば大丈夫です。 |
デフォルトの「premium」アクセスレベルを確認する例を以下に示します。
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);
}
サブスクリプション状態の更新をリッスンする
ユーザーのサブスクリプションが変更されるたびに、Adapty はイベントを発行します。
Adapty からメッセージを受信するには、追加の設定が必要です:
// 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 はアプリ起動時にもイベントを発火します。この場合、キャッシュされたサブスクリプションのステータスが渡されます。
サブスクリプションステータスのキャッシュ
Adapty SDK に実装されたキャッシュは、プロファイルのサブスクリプションステータスを保存します。これにより、サーバーが利用できない場合でも、キャッシュされたデータを参照してプロファイルのサブスクリプションステータスに関する情報を取得できます。 ただし、キャッシュから直接データをリクエストすることはできません。SDKは1分ごとにサーバーへ定期的に問い合わせを行い、プロファイルに関する更新や変更がないかを確認します。新しいトランザクションやその他の更新など、何らかの変更があった場合は、サーバーとの同期を保つためにキャッシュされたデータへ反映されます。