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

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

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

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

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

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

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

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

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

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

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

try {
    const id = 'YOUR_PLACEMENT_ID';
    const locale = 'en';

    const paywall = await adapty.getPaywall(id, locale);
    // the requested paywall
} catch (error) {
    // handle the error
}
パラメータ必須説明
placementId必須プレースメントの識別子。Adapty ダッシュボードでプレースメントを作成する際に指定した値です。
locale

任意

デフォルト: en

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

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

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

fetchPolicyデフォルト: .reloadRevalidatingCacheData

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

ただし、ユーザーが不安定なインターネット環境にいると想定される場合は、.returnCacheDataElseLoadを使用してキャッシュデータが存在すれば返すことを検討してください。この場合、最新データが取得できないこともありますが、接続状況に関わらず読み込み時間が短縮されます。キャッシュは定期的に更新されるため、セッション中にネットワークリクエストを避けるために使用しても安全です。

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

Adapty SDKはペイウォールを2つのレイヤーで保存します: 上記の定期更新キャッシュとフォールバックペイウォールです。また、ペイウォールをより速く取得するためにCDNを使用し、CDNに到達できない場合のためにスタンドアロンのフォールバックサーバーも利用しています。このシステムは、インターネット接続が不安定な場合でも常に最新のペイウォールを取得できるよう設計されています。

loadTimeoutMsデフォルト: 5秒

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

まれに、内部で複数のリクエストが実行される場合があるため、loadTimeoutで指定した時間よりわずかに遅れてタイムアウトすることがあります。

プロダクトIDをハードコードしないでください!ペイウォールはリモートで設定されるため、利用可能なプロダクト、プロダクト数、特別オファー(無料トライアルなど)は随時変更される可能性があります。これらのシナリオをコードで適切に処理してください。
例えば、最初に2つのプロダクトを取得した場合はその2つを表示し、後で3つになった場合はコード変更なしに3つすべてを表示できるようにしてください。ハードコードが必要なのはプレースメントIDのみです。

レスポンスパラメータ:

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

プロダクトを取得する

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

try {
    // ...paywall
    const products = await adapty.getPaywallProducts(paywall);
  // the requested products list
} catch (error) {
    // handle the 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 id = 'YOUR_PLACEMENT_ID';
    const locale = 'en';

    const paywall = await adapty.getPaywallForDefaultAudience(id, locale);
  // the requested paywall
} catch (error) {
    // handle the error
}

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

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

任意

デフォルト: en

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

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

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

fetchPolicyデフォルト: .reloadRevalidatingCacheData

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

ただし、ユーザーが不安定なインターネット環境にいると想定される場合は、.returnCacheDataElseLoadを使用してキャッシュデータが存在すれば返すことを検討してください。この場合、最新データが取得できないこともありますが、接続状況に関わらず読み込み時間が短縮されます。キャッシュは定期的に更新されるため、セッション中にネットワークリクエストを避けるために使用しても安全です。

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