docs.unity3d.com
    目次を表示する/隠す

    初期化

    Unity IAP が購入関連イベントをアプリケーションに通知するために使用する IStoreListener インターフェースの実装を提供する必要があります。

    初期化処理を開始して、このリスナーの実装と設定を行うには、UnityPurchasing.Initialize メソッドを呼び出します。

    ネットワークが利用できない場合でも初期化は失敗することがなく、Unity IAP はバックグラウンドで初期化を試行し続けます。初期化に失敗するのは、設定ミスがあったりデバイスの設定で IAP が無効になっていたりするなど、Unity IAP に回復不可能な問題が発生した場合のみです。

    その結果、Unity IAP の初期化にかかる時間は一定ではなく、ユーザーがデバイスを機内モードにしている場合は初期化が終わらないこともあります。そのため、初期化が正常に完了しなかった場合は、ユーザーが購入できなくなるように適切に設計する必要があります。

    using UnityEngine;
    using UnityEngine.Purchasing;
    
    public class MyIAPManager : IStoreListener {
    
        private IStoreController controller;
        private IExtensionProvider extensions;
    
        public MyIAPManager () {
            var builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());
            builder.AddProduct("100_gold_coins", ProductType.Consumable, new IDs
            {
                {"100_gold_coins_google", GooglePlay.Name},
                {"100_gold_coins_mac", MacAppStore.Name}
            });
    
            UnityPurchasing.Initialize (this, builder);
        }
    
        /// <summary>
        /// Unity IAP で購入の準備が整うと呼び出されます。
        /// </summary>
        public void OnInitialized (IStoreController controller, IExtensionProvider extensions)
        {
            this.controller = controller;
            this.extensions = extensions;
        }
    
        /// <summary>
        /// Unity IAP で回復不可能な初期化エラーが発生すると呼び出されます。
        ///
        /// インターネットが利用できない場合、呼び出すことができないことに注意してください。Unity IAP は
        /// インターネットが利用可能になるまで初期化を試みます。
        /// </summary>
        public void OnInitializeFailed (InitializationFailureReason error)
        {
        }
    
        /// <summary>
        /// 購入が完了すると呼び出されます。
        ///
        /// OnInitialized() の後はいつでも呼び出すことができます。
        /// </summary>
        public PurchaseProcessingResult ProcessPurchase (PurchaseEventArgs e)
        {
            return PurchaseProcessingResult.Complete;
        }
    
        /// <summary>
        /// 購入が失敗すると呼び出されます。
        /// </summary>
        public void OnPurchaseFailed (Product i, PurchaseFailureReason p)
        {
        }
    }
    

    UnityPurchasing の自動初期化

    アプリ内課金が機能するためには、IAP SDK を初期化する必要があります。これは、Codeless IAP Button または IAP Listener の最初のインスタンスがランタイムにロードされたときに自動的に行われます。ただし、IAP Button または IAP Listener がゲームに表示される前に SDK の初期化が必要になる場合があります。このような場合は、IAP Catalog ウィンドウの下部にある Automatically initialize UnityPurchasing (recommended) をオンにします。これにより、アプリケーションが起動するとすぐに UnityPurchasing が確実に初期化され、Codeless のインスタンスのライフサイクルに依存することがなくなります。

    **IAP Catalog** GUI での SDK 自動初期化の有効化

    これが機能するには、カタログに 1 つ以上のプロダクトが含まれている必要があります。

    ノート: 自動初期化は IAP Button または IAP Listener と併用することができます。この場合、SDK は IAP Button または IAP Listener の最初のインスタンスがシーンにロードされたときではなく、ゲームが開始されたときに初期化されます。ただし、スクリプトで手動で初期化する場合は、自動初期化を有効にしないでください。有効にすると、エラーが発生することがあります。

    トップに戻る
    Copyright © 2023 Unity Technologies — 商標と利用規約
    • 法律関連
    • プライバシーポリシー
    • クッキー
    • 私の個人情報を販売または共有しない
    • Your Privacy Choices (Cookie Settings)