Flutter SDKでサブスクリプションステータスを確認する
Adaptyを使えば、サブスクリプションステータスの追跡が簡単になります。プロダクトIDをコードに手動で埋め込む必要はありません。代わりに、アクティブなアクセスレベルを確認するだけで、ユーザーのサブスクリプションステータスをすぐに把握できます。
サブスクリプションステータスの確認を始める前に(クリックして展開)
- iOS の場合、App Store Server Notifications を設定してください
- Android の場合、リアルタイム デベロッパー通知(RTDN) を設定してください
アクセスレベルと AdaptyProfile オブジェクト
アクセスレベルは AdaptyProfile オブジェクトのプロパティです。アプリ起動時(ユーザーを識別するタイミングなど)にプロファイルを取得し、変更があるたびに更新することをおすすめします。こうすることで、都度リクエストを送ることなくプロファイルオブジェクトを利用できます。
プロファイルの更新通知を受け取るには、以下のサブスクリプションステータス更新のリッスンセクションで説明しているプロファイル変更のリスニングを設定してください。
Adapty SDK がモバイルアプリにどのように統合されているか、実際の例を見てみませんか?ペイウォールの表示、購入処理、その他の基本機能を含む完全なセットアップを実演しているサンプルアプリをご覧ください。
サーバーからアクセスレベルを取得する
サーバーからアクセスレベルを取得するには、.getProfile() メソッドを使用します。
try {
final profile = await Adapty().getProfile();
// check the access
} on AdaptyError catch (adaptyError) {
// handle the error
} catch (e) {
}
レスポンスパラメーター:
| パラメーター | 説明 |
|---|---|
| Profile | AdaptyProfile オブジェクト。通常は、ユーザーがアプリのプレミアムアクセス権を持っているかどうかを判断するために、プロファイルのアクセスレベルのステータスだけを確認すれば十分です。
|
.getProfile() メソッドはユーザープロファイルを返し、そこからアクセスレベルのステータスを取得できます。アプリごとに複数のアクセスレベルを設定できます。たとえば、ニュースアプリでトピックごとに独立したサブスクリプションを販売する場合、「sports」と「science」というアクセスレベルを作成できます。ただし、多くの場合はアクセスレベルは1つで十分であり、その場合はデフォルトの「premium」アクセスレベルを使用するだけで問題ありません。
デフォルトの「premium」アクセスレベルを確認する例を示します。
try {
final profile = await Adapty().getProfile();
if (profile?.accessLevels['premium']?.isActive ?? false) {
// grant access to premium features
}
} on AdaptyError catch (adaptyError) {
// handle the error
} catch (e) {
}
サブスクリプションステータス更新のリッスン
ユーザーのサブスクリプションが変更されるたびに、Adaptyはイベントを発火します。
Adaptyからメッセージを受け取るには、追加の設定が必要です。
Adapty().didUpdateProfileStream.listen((profile) {
// handle any changes to subscription state
});
Adaptyはアプリ起動時にもイベントを発火します。この場合、キャッシュされたサブスクリプションステータスが渡されます。
サブスクリプションステータスのキャッシュ
Adapty SDKに実装されているキャッシュは、プロファイルのサブスクリプションステータスを保存します。そのため、サーバーが利用できない場合でも、キャッシュされたデータからプロファイルのサブスクリプションステータスを取得できます。
ただし、キャッシュから直接データをリクエストすることはできません。SDKは1分ごとにサーバーへ定期的にクエリを送信し、プロファイルに関する更新や変更を確認します。新しいトランザクションやその他の更新など変更があった場合は、サーバーとの同期を保つためにキャッシュデータへ反映されます。