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

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

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

始める前に

プロダクトのセットアップ

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

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

カスタムペイウォールを使う場合でも、これらの概念を理解しておくことが重要です。基本的に、アプリで販売するプロダクトを管理するための手段です。

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

ユーザーの管理

バックエンド認証の有無にかかわらず利用できます。

ただし、Adapty SDKは匿名ユーザーと識別済みユーザーを異なる方法で扱います。詳細を確認し、ユーザーを適切に扱うために識別クイックスタートガイドをお読みください。

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

カスタムペイウォール用のプロダクトを取得するには、以下の手順が必要です。

  1. プレースメント ID を GetFlow メソッドに渡して flow オブジェクトを取得する。
  2. そのフローのプロダクト配列を GetPaywallProducts メソッドで取得する。
using AdaptySDK;

void LoadPaywall() {
    Adapty.GetFlow("YOUR_PLACEMENT_ID", (flow, error) => {
        if (error != null) {
            // Handle the error
            return;
        }

        Adapty.GetPaywallProducts(flow, (products, productsError) => {
            if (productsError != null) {
                // Handle the error
                return;
            }

            // Use products to build your custom paywall UI
        });
    });
}

ステップ 2. 購入を処理する

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

using AdaptySDK;

void PurchaseProduct(AdaptyPaywallProduct product) {
    Adapty.MakePurchase(product, (result, error) => {
        if (error != null) {
            // Handle the error
            return;
        }

        switch (result.Type) {
            case AdaptyPurchaseResultType.Success:
                var profile = result.Profile;
                // Purchase successful, profile updated
                break;
            case AdaptyPurchaseResultType.UserCancelled:
                // User canceled the purchase
                break;
            case AdaptyPurchaseResultType.Pending:
                // Purchase is pending (e.g., user will pay offline with cash)
                break;
        }
    });
}

ステップ 3. 購入の復元

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

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

using AdaptySDK;

void RestorePurchases() {
    Adapty.RestorePurchases((profile, error) => {
        if (error != null) {
            // Handle the error
            return;
        }

        // Restore successful, profile updated
    });
}

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

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

using AdaptySDK;

void CheckPremiumAccess() {
    Adapty.GetProfile((profile, error) => {
        if (error != null) {
            // Handle the error
            return;
        }

        var hasPremiumAccess =
            profile.AccessLevels.TryGetValue("premium", out var premium) && premium.IsActive;
        // Grant access to paid features if hasPremiumAccess is true
    });
}

サブスクリプションステータスの確認・監視方法(リアルタイム更新のリッスンを含む)については、サブスクリプションステータスの確認をご覧ください。

次のステップ

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

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