您必须实现 IStoreListener
接口以供 Unity IAP 用于向应用程序通报与购买相关的事件。
调用 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>
/// 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)
{
}
}
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.