Android SDKでリモートコンフィグペイウォールのペイウォールとプロダクトを取得する
リモートコンフィグおよびカスタムペイウォールを表示する前に、それらに関する情報を取得する必要があります。このトピックはリモートコンフィグおよびカスタムペイウォールに関するものです。ペイウォールビルダーでカスタマイズされたペイウォールの取得方法については、ペイウォールビルダーのペイウォールと設定の取得を参照してください。
Adapty SDK がモバイルアプリにどのように統合されているか、実際の例を見てみませんか?ペイウォールの表示、購入処理、その他の基本機能を含む完全なセットアップを実演しているサンプルアプリをご覧ください。
モバイルアプリでペイウォールとプロダクトの取得を始める前に(クリックして展開)
-
Adapty ダッシュボードでプロダクトを作成します。
-
Adapty ダッシュボードでペイウォールを作成し、プロダクトをペイウォールに組み込みます。
-
Adapty ダッシュボードでプレースメントを作成し、ペイウォールをプレースメントに組み込みます。
-
モバイルアプリにAdapty SDKをインストールします。
ペイウォール情報の取得
Adaptyでは、プロダクトはApp StoreとGoogle Play両方のプロダクトを組み合わせたものです。これらのクロスプラットフォームプロダクトはペイウォールに統合され、特定のモバイルアプリのプレースメント内で表示できます。
プロダクトを表示するには、getPaywallメソッドを使用して、いずれかのプレースメントからペイウォールを取得する必要があります。
プロダクトIDをハードコーディングしないでください。 ハードコーディングすべき唯一のIDはプレースメントIDです。ペイウォールはリモートで設定されるため、プロダクトの数や利用可能なオファーはいつでも変更される可能性があります。アプリはこれらの変更を動的に処理する必要があります。今日ペイウォールが2つのプロダクトを返し、明日3つ返した場合、コードを変更せずにすべてを表示できるようにしてください。
| パラメータ | 必須/任意 | 説明 |
|---|---|---|
| placementId | 必須 | プレースメントの識別子。Adapty ダッシュボードでプレースメントを作成する際に指定した値です。 |
| locale | 任意 デフォルト: | ペイウォールのローカライゼーションの識別子。このパラメータはマイナス(-)文字で区切られた1つ以上のサブタグで構成される言語コードであることが期待されます。最初のサブタグは言語、2番目は地域を表します。 例: ロケールコードおよび推奨される使用方法については、ローカライゼーションとロケールコードを参照してください。 |
| fetchPolicy | デフォルト: .reloadRevalidatingCacheData | デフォルトでは、SDKはサーバーからデータを読み込もうとし、失敗した場合はキャッシュされたデータを返します。ユーザーが常に最新のデータを取得できるため、この方法を推奨します。 ただし、ユーザーが不安定なインターネット環境にある場合は、 キャッシュはアプリの再起動後も保持され、アプリの再インストールまたは手動クリーンアップ時にのみクリアされます。 Adapty SDKはペイウォールを2つのレイヤーに保存します:上記の定期的に更新されるキャッシュとフォールバックペイウォールです。また、CDNを使用してペイウォールをより速く取得し、CDNに到達できない場合のスタンドアロンフォールバックサーバーも使用します。このシステムは、インターネット接続が不安定な場合でも常にペイウォールの最新バージョンを取得できるよう設計されています。 |
| loadTimeout | デフォルト: 5秒 | この値はこのメソッドのタイムアウトを制限します。タイムアウトに達した場合、キャッシュされたデータまたはローカルフォールバックが返されます。 まれに、処理が内部で複数のリクエストで構成される場合があるため、このメソッドは |
プロダクトIDをハードコーディングしないでください!ペイウォールはリモートで設定されるため、利用可能なプロダクト、プロダクト数、特別オファー(無料トライアルなど)は時間とともに変更される可能性があります。これらのシナリオをコードで処理してください。
例えば、最初に2つのプロダクトを取得した場合、アプリはその2つを表示する必要があります。その後3つのプロダクトを取得した場合、コードを変更せずに3つすべてを表示する必要があります。ハードコーディングが必要なのはプレースメントIDだけです。
レスポンスパラメータ:
| パラメータ | 説明 |
|---|---|
| Paywall | プロダクトIDのリスト、ペイウォール識別子、リモートコンフィグ、その他いくつかのプロパティを含むAdaptyPaywallオブジェクト。 |
プロダクトの取得
ペイウォールを取得したら、それに対応するプロダクト配列を照会できます:
レスポンスパラメータ:
| パラメータ | 説明 |
|---|---|
| Products | プロダクト識別子、プロダクト名、価格、通貨、サブスクリプション期間、その他いくつかのプロパティを含むAdaptyPaywallProductオブジェクトのリスト。 |
独自のペイウォールデザインを実装する場合、AdaptyPaywallProductオブジェクトのこれらのプロパティにアクセスする必要があるでしょう。以下によく使用されるプロパティを示しますが、利用可能なすべてのプロパティの詳細については、リンクされたドキュメントを参照してください。
| プロパティ | 説明 |
|---|---|
| Title | プロダクトのタイトルを表示するには、product.localizedTitleを使用します。ローカライゼーションはデバイス自体のロケールではなく、ユーザーが選択したストアの国に基づいています。 |
| Price | ローカライズされた価格を表示するには、product.price.localizedStringを使用します。このローカライゼーションはデバイスのロケール情報に基づいています。product.price.amountを使用して数値として価格にアクセスすることもできます。値はローカル通貨で提供されます。関連する通貨記号を取得するには、product.price.currencySymbolを使用します。 |
| Subscription Period | 期間(週、月、年など)を表示するには、product.subscriptionDetails?.localizedSubscriptionPeriodを使用します。このローカライゼーションはデバイスのロケールに基づいています。プログラムでサブスクリプション期間を取得するには、product.subscriptionDetails?.subscriptionPeriodを使用します。そこからunit列挙型にアクセスして期間の長さ(DAY、WEEK、MONTH、YEAR、またはUNKNOWN)を取得できます。numberOfUnitsの値で期間単位の数を取得できます。例えば、四半期ごとのサブスクリプションの場合、unitプロパティにMONTH、numberOfUnitsプロパティに3が表示されます。 |
| Introductory Offer | サブスクリプションに初回オファーが含まれているかどうかを示すバッジやインジケーターを表示するには、product.subscriptionDetails?.introductoryOfferPhasesプロパティを確認してください。これは最大2つの割引フェーズ(無料トライアルフェーズと初回価格フェーズ)を含めることができるリストです。各フェーズオブジェクト内には以下の役立つプロパティがあります:• paymentMode:FREE_TRIAL、PAY_AS_YOU_GO、PAY_UPFRONT、UNKNOWNの値を持つ列挙型。無料トライアルはFREE_TRIALタイプになります。• price:数値としての割引価格。無料トライアルの場合は0を探してください。• localizedNumberOfPeriods:オファーの期間を説明するデバイスのロケールを使用してローカライズされた文字列。例えば、3日間のトライアルオファーはこのフィールドに3 daysと表示されます。• subscriptionPeriod:または、このプロパティでオファー期間の個別の詳細を取得できます。オファーに対しては前のセクションで説明したのと同じ方法で機能します。• localizedSubscriptionPeriod:ユーザーのロケールに対してフォーマットされた割引のサブスクリプション期間。 |
デフォルトオーディエンスのペイウォールでペイウォール取得を高速化する
通常、ペイウォールはほぼ即座に取得されるため、このプロセスの高速化を心配する必要はありません。ただし、オーディエンスとペイウォールが多数あり、ユーザーのインターネット接続が弱い場合、ペイウォールの取得に予想以上に時間がかかることがあります。そのような状況では、ペイウォールをまったく表示しないよりもスムーズなユーザー体験を確保するために、デフォルトのペイウォールを表示したい場合があります。
これに対処するため、getPaywallForDefaultAudienceメソッドを使用できます。このメソッドは、All Usersオーディエンス向けに指定されたプレースメントのペイウォールを取得します。ただし、上記のペイウォール情報の取得セクションで詳述されているように、推奨されるアプローチはgetPaywallメソッドでペイウォールを取得することであることを理解することが重要です。
getPaywallを推奨する理由
getPaywallForDefaultAudienceメソッドにはいくつかの重大な欠点があります:
- 後方互換性の問題の可能性:現在および将来のアプリバージョンで異なるペイウォールを表示する必要がある場合、課題に直面する可能性があります。現在の(レガシー)バージョンをサポートするペイウォールを設計するか、現在の(レガシー)バージョンのユーザーがレンダリングされないペイウォールに問題が発生する可能性を受け入れる必要があります。
- ターゲティングの喪失:すべてのユーザーがAll Usersオーディエンス向けに設計された同じペイウォールを表示するため、パーソナライズされたターゲティング(国、マーケティングアトリビューション、独自のカスタム属性に基づくものを含む)が失われます。
これらの欠点を受け入れてペイウォール取得の高速化の恩恵を受けたい場合は、以下のようにgetPaywallForDefaultAudienceメソッドを使用してください。そうでない場合は、上記で説明したgetPaywallを使用してください。
getPaywallForDefaultAudienceメソッドはAndroid SDKバージョン2.11.3以降から利用可能です。
| パラメータ | 必須/任意 | 説明 |
|---|---|---|
| placementId | 必須 | プレースメントの識別子。Adapty ダッシュボードでプレースメントを作成する際に指定した値です。 |
| locale | 任意 デフォルト: | ペイウォールのローカライゼーションの識別子。このパラメータはマイナス(-)文字で区切られた1つ以上のサブタグで構成される言語コードであることが期待されます。最初のサブタグは言語、2番目は地域を表します。 例: ロケールコードおよび推奨される使用方法については、ローカライゼーションとロケールコードを参照してください。 |
| fetchPolicy | デフォルト: .reloadRevalidatingCacheData | デフォルトでは、SDKはサーバーからデータを読み込もうとし、失敗した場合はキャッシュされたデータを返します。ユーザーが常に最新のデータを取得できるため、この方法を推奨します。 ただし、ユーザーが不安定なインターネット環境にある場合は、 キャッシュはアプリの再起動後も保持され、アプリの再インストールまたは手動クリーンアップ時にのみクリアされます。 |