Вы должны предоставить реализацию интерфейса IStoreListener
, который Unity IAP Аббревиатура Unity In App Purchase
See in Словарь используется для информирования вашего приложения о событиях, связанных с покупкой. р>
Вызовите метод 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);
}
///
/// Called when Unity IAP is ready to make purchases.
///
public void OnInitialized (IStoreController controller, IExtensionProvider extensions)
{
this.controller = controller;
this.extensions = extensions;
}
///
/// 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.
///
public void OnInitializeFailed (InitializationFailureReason error)
{
}
///
/// Called when a purchase completes.
///
/// May be called at any time after OnInitialized().
///
public PurchaseProcessingResult ProcessPurchase (PurchaseEventArgs e)
{
return PurchaseProcessingResult.Complete;
}
///
/// Called when a purchase fails.
///
public void OnPurchaseFailed (Product i, PurchaseFailureReason p)
{
}
}