Capacitor SDKのカスタムペイウォールで購入を有効化する

このガイドでは、カスタムペイウォールへのAdaptyの統合方法を説明します。Adapty SDKがプロダクトの取得、新規購入の処理、過去の購入の復元を担当しながら、ペイウォールの実装を完全にコントロールできます。このガイドはAdapty Capacitor SDK v4のAPIを使用しています。v3をお使いの場合は、対応するメソッド名について移行ガイドをご覧ください。

このガイドは、カスタムペイウォールを実装する開発者向けです。 課金を最も簡単に導入したい場合は、Adapty ペイウォールビルダーをご利用ください。ペイウォールビルダーを使えば、ノーコードのビジュアルエディターでペイウォールを作成でき、購入ロジックはすべて Adapty が自動的に処理します。また、アプリを再公開することなく異なるデザインをテストすることができます。

始める前に

プロダクトの設定

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

  • プロダクト – ユーザーが購入できるもの(サブスクリプション、消耗型アイテム、永続アクセスなど)
  • ペイウォール – どのプロダクトを提供するかを定義する設定。Adapty ではペイウォールがプロダクトを取得する唯一の手段ですが、この設計によりアプリのコードを変更せずにプロダクト、価格、オファーを変更できます。SDK v4 では、プレースメントのペイウォールバリアントは flow オブジェクトで管理されます — flow を取得してプロダクトを照会します。
  • プレースメント – アプリ内でペイウォールを表示する場所とタイミング(mainonboardingsettings など)。ダッシュボードでプレースメントごとにペイウォールを設定し、コード内ではプレースメント ID を指定してリクエストします。これにより、A/B テストの実施やユーザーごとに異なるペイウォールの表示が簡単に行えます。 カスタムペイウォールを実装する場合でも、これらの概念をしっかり理解しておく必要があります。基本的には、アプリで販売するプロダクトを管理するための仕組みです。

カスタムペイウォールを実装するには、ペイウォールを作成してプレースメントに追加する必要があります。この設定により、プロダクトを取得できるようになります。ダッシュボードでの作業手順については、クイックスタートガイドこちらを参照してください。

ユーザーの管理

バックエンドの認証を使用してもしなくても、どちらの方法でも利用できます。

ただし、Adapty SDK は匿名ユーザーと識別済みユーザーを異なる方法で扱います。詳細と正しいユーザー管理の方法については、識別クイックスタートガイドをご覧ください。

ステップ 1. プロダクトを取得する

カスタムペイウォール用のプロダクトを取得するには、以下の手順を実行します:

  1. プレースメント ID を getFlow メソッドに渡して flow オブジェクトを取得します。
  2. getPaywallProducts メソッドを使って、このフローのプロダクト配列を取得します。

async function loadPaywall() {
  try {
    const flow: AdaptyFlow = await adapty.getFlow({
      placementId: 'YOUR_PLACEMENT_ID'
    });

    const products: AdaptyPaywallProduct[] = await adapty.getPaywallProducts({
      flow
    });

    // Use products to build your custom paywall UI
  } catch (error) {
    // Handle the error
  }
}

ステップ2:購入を受け付ける

ユーザーがカスタムペイウォール上のプロダクトをタップしたら、選択されたプロダクトで makePurchase メソッドを呼び出します。これにより購入フローが処理され、更新されたプロファイルが返されます。


async function purchaseProduct(product: AdaptyPaywallProduct) {
  try {
    const result: AdaptyPurchaseResult = await adapty.makePurchase({ product });

    if (result.type === 'success') {
      // Purchase successful, profile updated
    } else if (result.type === 'user_cancelled') {
      // User canceled the purchase
    } else if (result.type === 'pending') {
      // Purchase is pending (e.g., user will pay offline with cash)
    }
  } catch (error) {
    // Handle the error
  }
}

ステップ3. 購入を復元する

アプリストアは、サブスクリプションを提供するすべてのアプリに対して、ユーザーが購入を復元できる手段を設けることを義務付けています。

ユーザーが復元ボタンをタップしたときに restorePurchases メソッドを呼び出してください。これにより、購入履歴がAdaptyと同期され、更新されたプロファイルが返されます。


async function restorePurchases() {
  try {
    const profile: AdaptyProfile = await adapty.restorePurchases();
    // Restore successful, profile updated
  } catch (error) {
    // Handle the error
  }
}

ステップ 4. サブスクリプションのステータスを確認する

購入またはリストア後、ペイウォールを表示するか有料機能をアンロックするかを判断するために、ユーザーのアクセスレベルを確認してください。makePurchase および restorePurchases メソッドはすでに更新済みのプロファイルを返しますが、アプリ内の他の場所で現在のステータスが必要な場合は getProfile メソッドを使用してください。


async function hasPremiumAccess(): Promise<boolean> {
  try {
    const profile = await adapty.getProfile();
    return profile.accessLevels?.['premium']?.isActive ?? false;
  } catch (error) {
    // Handle the error
  }
  return false;
}

サブスクリプションのステータスを確認・監視する方法(リアルタイムの更新を受け取る方法を含む)については、サブスクリプションのステータスを確認するを参照してください。

次のステップ

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

ペイウォールをアプリに表示する準備が整いました。App Store サンドボックスまたはGoogle Play ストアでテスト購入を行い、ペイウォールからテスト購入を完了できることを確認してください。本番環境に対応した実装例については、サンプルアプリの App.tsx を参照してください。適切なエラーハンドリング、ローディング状態、および包括的な SDK インテグレーションを含む購入処理の実装例を確認できます。