購入結果への対応

購入が完了すると、Adapty SDK はその結果をアプリに返します。アプリが何らかの処理を行うまで、画面上は何も変わりません。アプリはペイウォールを閉じたり、再試行のために開いたままにしたり、購入を確認する2つ目のフローを開いたりすることができます。

ビルダーでは購入結果に基づく分岐はできません。購入完了時に発火するトリガーも、その結果を保持する変数も存在しないためです。そのため、この遷移は購入結果を受け取るアプリのコードで処理する必要があります。

作業は3つのパートに分かれます:

  • 購入後のフローを作成し、専用のプレースメントに割り当てる。
  • アプリのコードで購入結果に基づいて分岐する。
  • 成功時にペイウォールを閉じ、購入後のフローを表示する。

始める前に

1. 購入後のフローを作成する

フローを作成します。このフローは購入後に実行されるため、プロダクトは不要です。ユーザーをアプリ自身のUIに戻すには、最後の画面に Close Flow アクションを持つボタンを追加してください。

Post-purchase flow in the builder with a Thank you screen, the Start button selected, and its On Tap trigger set to the Close Flow action

カスタムアクションは、フローに複数の出口がある場合に使用してください。ボタンをそれぞれ独自のアクション IDで複数作成することで、アプリ側で Set up nowSet up later を区別できるようになります。

カスタムアクションを使用してください。

2. 購入後フローを専用プレースメントに追加する

アプリから購入後フローを取得するには、専用のプレースメントに割り当てる必要があります。ペイウォールのプレースメントでは代用できません。1つのプレースメントはオーディエンスごとに1つのフローしか提供できないためです。

  1. フローを公開する
  2. フロープレースメントを作成するPlacement ID をメモしておいてください。アプリはこのIDを使ってフローを取得します。
  3. 購入後フローを新しいプレースメントに割り当てる。

3. 購入結果に応じて処理を分岐する

アプリは2つのコールバックで購入結果を受け取ります。

  • Completion: 購入が完了しました — 成功、ユーザーによるキャンセル、または承認待ち(例:保護者の承認)のいずれかです。3つを区別するには、結果のタイプを確認してください。成功時には、更新された AdaptyProfile が結果に含まれます。
  • Failure: エラーにより購入が停止し、コールバックには AdaptyError が含まれます — 購入制限、無効なプロダクト、ネットワーク障害、またはトランザクション検証エラーが原因です。

コールバック名とシグネチャ: iOS | Android | React Native | Flutter | Unity | Kotlin Multiplatform | Capacitor

結果に応じて処理を分岐してください:

  • 成功時はペイウォールを閉じ、購入後のフローを表示します。
  • キャンセル・保留中の支払い・失敗時はペイウォールを開いたままにします。
Note

リストア処理は専用のコールバックでレポートされ、再インストールや機種変更をしたユーザーにも対応しています。返されたプロファイルにアクセスレベルがアクティブになっていることを確認し、通常と同じようにフローを閉じて表示してください。このコールバックには別のフローを割り当てましょう — 購入のお礼を伝えるスクリーンはリストアには適していません。

4. 購入後フローの読み込みと表示

待ち時間なく購入後フローを開くには、ハンドラー内ではなく、ペイウォールと並行して事前に取得してください。SDK は事前に画像をダウンロードしてキャッシュします。

複数のプレースメントを一度にキャッシュウォームアップするには、preloadFlows(SDK 4.1+)を使用してください。

フローとペイウォールの取得: iOS | Android | React Native | Flutter | Unity | Kotlin Multiplatform | Capacitor

フローとペイウォールの表示: iOS | Android | React Native | Flutter | Unity | Kotlin Multiplatform | Capacitor