Capacitor SDKでリモートコンフィグペイウォールのペイウォールとプロダクトを取得する

リモートコンフィグやカスタムペイウォールを表示する前に、それらに関する情報を取得する必要があります。このトピックはリモートコンフィグおよびカスタムペイウォールに関するものです。ペイウォールビルダーでカスタマイズしたペイウォールの取得方法については、ペイウォールビルダーのペイウォールとその設定を取得するを参照してください。

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

モバイルアプリでペイウォールとプロダクトの取得を始める前に(クリックして展開)
  1. Adapty ダッシュボードでプロダクトを作成する

  2. Adapty ダッシュボードでペイウォールを作成し、プロダクトをペイウォールに組み込む

  3. Adapty ダッシュボードでプレースメントを作成し、ペイウォールをプレースメントに組み込む

  4. モバイルアプリにAdapty SDKをインストールする

ペイウォール情報を取得する

Adaptyでは、プロダクトはApp StoreとGoogle Playの両方のプロダクトを組み合わせたものです。これらのクロスプラットフォームプロダクトはペイウォールに統合され、特定のモバイルアプリのプレースメント内で表示できるようになります。

プロダクトを表示するには、getPaywallメソッドを使って、いずれかのプレースメントからペイウォールを取得する必要があります。


try {
  const paywall = await adapty.getPaywall({ 
    placementId: 'YOUR_PLACEMENT_ID', 
    locale: 'en',
    params: {
      fetchPolicy: 'reload_revalidating_cache_data', // Load from server, fallback to cache
      loadTimeoutMs: 5000 // 5 second timeout
    }
  });
  // the requested paywall
} catch (error) {
  console.error('Failed to fetch paywall:', error);
}
パラメータ必須説明
placementId必須プレースメントの識別子。Adapty ダッシュボードでプレースメントを作成する際に指定した値です。
locale

任意

デフォルト: en

ペイウォールのローカライゼーションの識別子。このパラメータはマイナス(-)文字で区切られた1つ以上のサブタグで構成される言語コードです。最初のサブタグは言語、2番目は地域を表します。

例:enは英語、pt-brはブラジルポルトガル語を表します。

ロケールコードの詳細と推奨される使い方については、ローカライゼーションとロケールコードを参照してください。

params.fetchPolicy

任意

デフォルト: 'reload_revalidating_cache_data'

デフォルトでは、SDKはサーバーからデータを読み込もうとし、失敗した場合はキャッシュデータを返します。ユーザーが常に最新のデータを取得できるため、この方法を推奨します。

ただし、ユーザーが不安定なインターネット環境を使用していると考える場合は、'return_cache_data_else_load'を使用して、キャッシュが存在する場合はキャッシュデータを返すようにすることを検討してください。この場合、ユーザーは最新のデータを得られない可能性がありますが、接続が不安定でも高速な読み込みを体験できます。キャッシュは定期的に更新されるため、ネットワークリクエストを避けるためにセッション中に使用しても安全です。

なお、キャッシュはアプリの再起動後も保持され、アプリの再インストールまたは手動でのクリーンアップ時にのみ削除されます。

params.loadTimeoutMs

任意

デフォルト: 5000 ms

このメソッドのタイムアウト(ミリ秒)を制限します。タイムアウトに達した場合、キャッシュデータまたはローカルフォールバックが返されます。

まれに、loadTimeoutMsで指定した時間よりもわずかに遅くタイムアウトする場合があります。これは、この操作が内部で複数のリクエストで構成されている場合があるためです。

プロダクトIDをハードコードしないでください。 ハードコードすべき唯一のIDはプレースメントIDです。ペイウォールはリモートで設定されるため、プロダクトの数や利用可能なオファーはいつでも変わる可能性があります。アプリはこれらの変更を動的に処理する必要があります。今日ペイウォールが2つのプロダクトを返し、明日3つ返す場合でも、コードを変更せずにすべてを表示できるようにしてください。

レスポンスパラメータ:

パラメータ説明
PaywallプロダクトIDのリスト、ペイウォール識別子、リモートコンフィグ、その他いくつかのプロパティを含むAdaptyPaywallオブジェクト。

プロダクトを取得する

ペイウォールを取得したら、それに対応するプロダクト配列を取得できます:


try {
  const products = await adapty.getPaywallProducts({ paywall });
  // the requested products list
} catch (error) {
  console.error('Failed to fetch products:', error);
}

レスポンスパラメータ:

パラメータ説明
Productsプロダクト識別子、プロダクト名、価格、通貨、サブスクリプション期間、その他いくつかのプロパティを含むAdaptyPaywallProductオブジェクトのリスト。

独自のペイウォールデザインを実装する際、AdaptyPaywallProductオブジェクトのこれらのプロパティにアクセスする必要があるでしょう。以下に最もよく使われるプロパティを示しますが、利用可能なすべてのプロパティの詳細については、リンク先のドキュメントを参照してください。

プロパティ説明
タイトルプロダクトのタイトルを表示するには、product.localizedTitleを使用します。ローカライゼーションはデバイスのロケールではなく、ユーザーが選択しているストアの国に基づいています。
価格価格のローカライズされた表示には、product.price?.localizedStringを使用します。このローカライゼーションはデバイスのロケール情報に基づいています。product.price?.amountを使って数値として価格にアクセスすることもできます。値はローカル通貨で提供されます。関連する通貨記号を取得するには、product.price?.currencySymbolを使用します。
サブスクリプション期間期間(週、月、年など)を表示するには、product.subscription?.localizedSubscriptionPeriodを使用します。このローカライゼーションはデバイスのロケールに基づいています。プログラムでサブスクリプション期間を取得するには、product.subscription?.subscriptionPeriodを使用します。そこからunitプロパティにアクセスして期間の長さ(‘day’、‘week’、‘month’、‘year’、‘unknown’のいずれか)を取得できます。numberOfUnitsの値で期間単位の数を取得できます。例えば、四半期サブスクリプションの場合、unitプロパティには'month'、numberOfUnitsには3が入ります。
初回オファーサブスクリプションに初回オファーが含まれているかどうかを示すバッジなどのインジケーターを表示するには、product.subscription?.offer?.phasesプロパティを確認してください。これは最大2つの割引フェーズ(無料トライアルフェーズと初回価格フェーズ)を含むリストです。各フェーズオブジェクトには以下の便利なプロパティがあります:
paymentMode'free_trial''pay_as_you_go''pay_up_front''unknown'の値を持つ文字列。無料トライアルは'free_trial'タイプになります。
price:数値としての割引価格。無料トライアルの場合は0を確認してください。
localizedNumberOfPeriods:デバイスのロケールを使ってローカライズされた、オファーの長さを示す文字列。例えば、3日間のトライアルオファーの場合、このフィールドには'3 days'が表示されます。
subscriptionPeriod:代替として、このプロパティを使ってオファー期間の個別の詳細を取得できます。前のセクションで説明した方法と同様に機能します。
localizedSubscriptionPeriod:ユーザーのロケールに合わせてフォーマットされた割引のサブスクリプション期間。

デフォルトオーディエンスのペイウォールでペイウォール取得を高速化する

通常、ペイウォールはほぼ瞬時に取得されるため、このプロセスの高速化を心配する必要はありません。ただし、オーディエンスとペイウォールが多数あり、ユーザーのインターネット接続が弱い場合、ペイウォールの取得に時間がかかることがあります。そのような状況では、ペイウォールをまったく表示しないよりも、デフォルトのペイウォールを表示してスムーズなユーザー体験を確保したい場合があります。

これに対処するために、getPaywallForDefaultAudienceメソッドを使用できます。このメソッドは、指定したプレースメントのAll Usersオーディエンス向けペイウォールを取得します。ただし、上記のペイウォール情報を取得するセクションで説明したgetPaywallメソッドでペイウォールを取得する方法が推奨アプローチであることを理解しておくことが重要です。

getPaywallを推奨する理由

getPaywallForDefaultAudienceメソッドにはいくつかの重大な欠点があります:

  • 後方互換性の問題の可能性:現在のバージョンと将来のバージョンで異なるペイウォールを表示する必要がある場合、課題が生じる可能性があります。現在の(レガシー)バージョンをサポートするペイウォールを設計するか、現在の(レガシー)バージョンのユーザーがレンダリングされないペイウォールに遭遇する可能性を受け入れるかのどちらかになります。
  • ターゲティングの喪失:すべてのユーザーがAll Usersオーディエンス向けに設計された同じペイウォールを見ることになるため、パーソナライズされたターゲティング(国、マーケティングアトリビューション、独自のカスタム属性に基づくものを含む)が失われます。

これらの欠点を受け入れてでもペイウォール取得の高速化のメリットを享受したい場合は、以下のようにgetPaywallForDefaultAudienceメソッドを使用してください。そうでない場合は、上記で説明したgetPaywallを使用し続けてください。


try {
  const paywall = await adapty.getPaywallForDefaultAudience({ 
    placementId: 'YOUR_PLACEMENT_ID', 
    locale: 'en',
    params: {
      fetchPolicy: 'reload_revalidating_cache_data' // Load from server, fallback to cache
    }
  });
  // the requested paywall
} catch (error) {
  console.error('Failed to fetch default audience paywall:', error);
}

getPaywallForDefaultAudienceメソッドはCapacitor SDKバージョン2.11.2以降で利用可能です。

パラメータ必須説明
placementId必須プレースメントの識別子。Adapty ダッシュボードでプレースメントを作成する際に指定した値です。
locale

任意

デフォルト: en

ペイウォールのローカライゼーションの識別子。このパラメータはマイナス(-)文字で区切られた1つ以上のサブタグで構成される言語コードです。最初のサブタグは言語、2番目は地域を表します。

例:enは英語、pt-brはブラジルポルトガル語を表します。

ロケールコードの詳細と推奨される使い方については、ローカライゼーションとロケールコードを参照してください。

params.fetchPolicy

任意

デフォルト: 'reload_revalidating_cache_data'

デフォルトでは、SDKはサーバーからデータを読み込もうとし、失敗した場合はキャッシュデータを返します。ユーザーが常に最新のデータを取得できるため、この方法を推奨します。

ただし、ユーザーが不安定なインターネット環境を使用していると考える場合は、'return_cache_data_else_load'を使用して、キャッシュが存在する場合はキャッシュデータを返すようにすることを検討してください。この場合、ユーザーは最新のデータを得られない可能性がありますが、接続が不安定でも高速な読み込みを体験できます。キャッシュは定期的に更新されるため、ネットワークリクエストを避けるためにセッション中に使用しても安全です。

なお、キャッシュはアプリの再起動後も保持され、アプリの再インストールまたは手動でのクリーンアップ時にのみ削除されます。