【问题标题】:why unity iap cannot works after import google play games services为什么统一 iap 在导入 google play 游戏服务后无法工作
【发布时间】:2018-12-19 14:06:18
【问题描述】:

unity IAP 在导入 google play 游戏服务后无法使用,在我安装 google play 游戏服务之前可以使用。初始化成功,失败时没有触发“OnPurchaseFailed”,为什么?

代码如下:

using System;
using UnityEngine;
using UnityEngine.Purchasing;

public class Purchaser : MonoBehaviour, IStoreListener
{
    private static IStoreController m_StoreController;          // The Unity Purchasing system.
    private static IExtensionProvider m_StoreExtensionProvider; // The store-specific Purchasing subsystems.

    public static string NO_ADS = "no_ads";
    public static string MORE_COIN = "more_coin";

    void Start()
    {
        if (m_StoreController == null)
            InitializePurchasing();

    }

    public void InitializePurchasing()
    {
        if (IsInitialized())
            return;

        var builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());

        builder.AddProduct(NO_ADS, ProductType.NonConsumable);
        builder.AddProduct(MORE_COIN, ProductType.NonConsumable);

        UnityPurchasing.Initialize(this, builder);
    }

    bool IsInitialized()
    {
        return m_StoreController != null && m_StoreExtensionProvider != null;
    }

    public void RemoveAds()
    {
        BuyProductID(NO_ADS);
    }

    public void MoreCoin()
    {
        BuyProductID(MORE_COIN);
    }

    void BuyProductID(string productId)
    {
        if (IsInitialized())
        {
            Product product = m_StoreController.products.WithID(productId);

            if (product != null && product.availableToPurchase)
                m_StoreController.InitiatePurchase(product);
        }
    }

    //IStoreListener

    public void OnInitialized(IStoreController controller, IExtensionProvider extensions)
    {
        m_StoreController = controller;
        m_StoreExtensionProvider = extensions;

        //m_StoreController.products.WithID(NO_ADS).metadata.localizedPriceString;
        //m_StoreController.products.WithID(NO_ADS).metadata.isoCurrencyCode;
    }

    public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs args)
    {
        // A consumable product has been purchased by this user.
        if (String.Equals(args.purchasedProduct.definition.id, NO_ADS, StringComparison.Ordinal))
            AdManager.instance.RemoveADS();
        else if (String.Equals(args.purchasedProduct.definition.id, MORE_COIN, StringComparison.Ordinal))
        {
            PlayerPrefs.SetInt("MoreCoin", 1);
            Menu.instance.UpdateStore();
        }

        return PurchaseProcessingResult.Complete;
    }

    public void OnInitializeFailed(InitializationFailureReason error)
    {
        // Purchasing set-up has not succeeded. Check error for reason. Consider sharing this reason with the user.
        Debug.Log("OnInitializeFailed InitializationFailureReason:" + error);
    }


    public void OnPurchaseFailed(Product product, PurchaseFailureReason failureReason)
    {
        // A product purchase attempt did not succeed. Check failureReason for more detail. Consider sharing
        // this reason with the user to guide their troubleshooting actions.
        Debug.Log(string.Format("OnPurchaseFailed: FAIL. Product: '{0}', PurchaseFailureReason: {1}", product.definition.storeSpecificId, failureReason));
    }
}

【问题讨论】:

  • 能否请您发布您的Minimal, Complete, and Verifiable example 代码以便我们重现您的问题?
  • 感谢您提供代码。如果您可以将代码最小化到问题仍然发生的位置,然后将其放在您的问题中,那会更容易。 Pastebin 链接可能会过期。
  • m_StoreController.InitiatePurchase(product);调用时这条线没有任何反应
  • Unity IAP 演示也无法运行

标签: unity3d google-play in-app-purchase


【解决方案1】:

来自90% consistent with your code的页面:

// ... buy the product. Expect a response either through ProcessPurchase or OnPurchaseFailed
// asynchronously.
m_StoreController.InitiatePurchase(product);

您需要在您的ProcessPurchaseOnPurchaseFailed 方法中使用Debug.Log("got here") 来确定购买是否有效。

【讨论】:

  • ProcessPurchase 和 OnPurchaseFailed 都没有被调用
  • 有什么问题?
猜你喜欢
  • 2017-10-05
  • 1970-01-01
  • 2019-05-19
  • 1970-01-01
  • 2013-05-18
  • 2013-12-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多