Capacitor SDKでペイウォールを使って購入を有効にする

アプリ内課金を有効にするには、次の3つの主要な概念を理解する必要があります。

  • プロダクト – ユーザーが購入できるもの(サブスクリプション、消耗型アイテム、永続アクセス)
  • ペイウォール – どのプロダクトを提供するかを定義する設定です。Adaptyではペイウォールを通じてのみプロダクトを取得できますが、この設計によりアプリのコードを変更せずにオファー内容、価格、プロダクトの組み合わせを変更できます。
  • プレースメント – アプリ内でペイウォールをどこでいつ表示するか(mainonboardingsettings など)。ダッシュボードでプレースメントにペイウォールを設定し、コード内ではプレースメントIDで取得します。これによりA/Bテストの実行や、ユーザーごとに異なるペイウォールの表示が簡単になります。

Adaptyではアプリに購入機能を実装するための方法を3つ提供しています。アプリの要件に応じて選択してください。

実装方法複雑さ使うタイミング
Adapty ペイウォールビルダー✅ 簡単ノーコードビルダーで購入対応ペイウォールを作成します。Adaptyが自動的にレンダリングし、複雑な購入フロー、レシート検証、サブスクリプション管理をすべて裏側で処理します。
makePurchase🟡 中程度アプリのコードでペイウォールUIを実装しますが、プロダクトオファーの柔軟性を保つためにAdaptyからペイウォールオブジェクトを取得します。ガイドをご覧ください。
オブザーバーモード🔴 難しい購入フローを完全に自分で実装します。ガイドをご覧ください。

以下の手順は、Adaptyペイウォールビルダーで作成したペイウォールの実装方法を示しています。

ペイウォールビルダーを使用しない場合は、手動作成ペイウォールでの購入処理ガイドをご覧ください。

Adaptyペイウォールビルダーで作成したペイウォールを表示するには、アプリのコードで次の3つの手順のみ必要です。

  1. ペイウォールを取得する: AdaptyからペイウォールのObjectを取得します。
  2. ペイウォールを表示する(購入はAdaptyが処理): 取得したペイウォールコンテナをアプリに表示します。
  3. ボタンアクションを処理する: ペイウォール上のユーザー操作とアプリの応答を関連付けます。たとえば、ユーザーがボタンをクリックしたときにリンクを開いたりペイウォールを閉じたりします。

始める前に

始める前に、次の手順を完了してください。

  1. AdaptyダッシュボードでアプリをApp StoreまたはGoogle Play(あるいはその両方)に接続します。
  2. Adaptyでプロダクトを作成します
  3. ペイウォールを作成してプロダクトを追加します
  4. プレースメントを作成してペイウォールを追加します
  5. アプリのコードにAdapty SDKをインストールして有効化します

これらの手順を最速で完了するには、クイックスタートガイドに従うか、Developer CLIを使ってペイウォールとプレースメントを作成してください。

1. ペイウォールを取得する

ペイウォールはダッシュボードで設定したプレースメントに関連付けられています。プレースメントを使うことで、異なるオーディエンスに異なるペイウォールを表示したり、A/Bテストを実行したりできます。

Adaptyペイウォールビルダーで作成したペイウォールを取得するには、次の手順が必要です。

  1. getPaywall メソッドを使ってプレースメントIDで paywall オブジェクトを取得し、hasViewConfiguration プロパティでビルダーで作成したペイウォールかどうかを確認します。

  2. createPaywallView メソッドを使ってペイウォールビューを作成します。このビューにはペイウォールを表示するためのUI要素とスタイリングが含まれています。

ビュー設定を取得するには、ペイウォールビルダーで Show on device トグルをオンにする必要があります。そうしないと、空のビュー設定が返され、ペイウォールが表示されません。


try {
  const paywall = await adapty.getPaywall({
    placementId: 'YOUR_PLACEMENT_ID',
  });
  // the requested paywall
} catch (error) {
  // handle the error
}

if (paywall.hasViewConfiguration) {
  try {
    const view = await createPaywallView(paywall);
  } catch (error) {
    // handle the error
  }
} else {
  // use your custom logic
}

2. ペイウォールを表示する

ペイウォールの設定を取得したら、数行のコードを追加するだけでペイウォールを表示できます。

ペイウォールを表示するには、createPaywallView メソッドで作成した view に対して view.present() メソッドを呼び出します。各 view は一度しか使用できません。再度ペイウォールを表示する必要がある場合は、createPaywallView をもう一度呼び出して新しい view インスタンスを作成してください。

try {
  await view.present();
} catch (error) {
  // handle the error
}

ペイウォールの表示方法についての詳細は、ガイドをご覧ください。

3. ボタンアクションを処理する

ユーザーがペイウォール内のボタンをクリックすると、Capacitor SDKは購入、復元、ペイウォールのクローズを自動的に処理します。

ただし、カスタムまたは事前定義のIDを持つボタンはコード内でアクションを処理する必要があります。また、デフォルトの動作をオーバーライドしたい場合もあります。

たとえば、ユーザーがWebリンクを開いた後もペイウォールを開いたままにしたい場合があります。実装でどのように処理できるか見てみましょう。

ボタンのアクションイベントの処理方法については、各ガイドをご覧ください。

const unsubscribe = view.setEventHandlers({
  onUrlPress(url) {
    window.open(url, '_blank');
    return false;
  },
});

次のステップ

ご質問やお困りのことがあれば、サポートフォーラムをご覧ください。よくある質問への回答を見つけたり、ご自身の質問を投稿することができます。チームとコミュニティがサポートいたします!

ペイウォールをアプリに表示する準備ができました。App StoreのサンドボックスまたはGoogle Play Storeでテスト購入を行い、ペイウォールからのテスト購入が正常に完了することを確認してください。

次に、適切なユーザーにペイウォールを表示したり有料機能へのアクセスを付与したりするため、ユーザーのアクセスレベルを確認する必要があります。

完全なサンプル

以下は、これらすべての手順をアプリに統合した例です。


export default function PaywallScreen() {
  const showPaywall = async () => {
    try {
      const paywall = await adapty.getPaywall({
        placementId: 'YOUR_PLACEMENT_ID',
      });

      if (!paywall.hasViewConfiguration) {
        // use your custom logic
        return;
      }

      const view = await createPaywallView(paywall);

      view.setEventHandlers({
        onUrlPress(url) {
          window.open(url, '_blank');
          return false;
        },
      });

      await view.present();
    } catch (error) {
      // handle any error that may occur during the process
      console.warn('Error showing paywall:', error);
    }
  };

  return (
    <div style={{ display: 'flex', justifyContent: 'center', alignItems: 'center', height: '100vh' }}>
      <button onClick={showPaywall}>Show Paywall</button>
    </div>
  );
}