상품 정의(Defining products)
상품 메타데이터 브라우징(Browsing Product Metadata)

초기화(Initialization)

Unity IAP 가 애플리케이션에 구매 관련 이벤트에 대해 알리기 위해 사용하는 IStoreListener 인터페이스를 구현해야 합니다.

UnityPurchasing.Initialize 메서드를 호출하여 초기화 프로세스를 시작해 리스너 구현 및 설정을 제공합니다.

초기화는 네트워크를 사용할 수 없는 경우에도 실패하지 않습니다. Unity IAP 는 백그라운드에서 계속 초기화를 시도합니다. Unity IAP 에서 설정이 잘못되었거나 기기 설정에서 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>
    /// Called when Unity IAP is ready to make purchases.
    /// </summary>
    public void OnInitialized (IStoreController controller, IExtensionProvider extensions)
    {
        this.controller = controller;
        this.extensions = extensions;
    }

    /// <summary>
    /// Called when Unity IAP encounters an unrecoverable initialization error.
    ///
    /// Note that this will not be called if Internet is unavailable; Unity IAP
    /// will attempt initialization until it becomes available.
    /// </summary>
    public void OnInitializeFailed (InitializationFailureReason error)
    {
    }

    /// <summary>
    /// Called when a purchase completes.
    ///
    /// May be called at any time after OnInitialized().
    /// </summary>
    public PurchaseProcessingResult ProcessPurchase (PurchaseEventArgs e)
    {
        return PurchaseProcessingResult.Complete;
    }

    /// <summary>
    /// Called when a purchase fails.
    /// </summary>
    public void OnPurchaseFailed (Product i, PurchaseFailureReason p)
    {
    }
}
상품 정의(Defining products)
상품 메타데이터 브라우징(Browsing Product Metadata)