Jessca Stone Ответов: 0

Unity2d: IAP не работает на мобильном телефоне


У меня проблемы с сервисом Unity IAP; Я следил за этим (https://www.youtube.com/watch?v=3IQ-CvBQz0o&t=229s) онлайн-руководством к чаю, и он работает в редакторе Unity, но не работает на моем мобильном телефоне. Я все проверил и даже протестировал на другом мобильном телефоне, но результаты все равно остались прежними. Я недавно обновил unity 5.4 до 5.5, и даже до того, как я обновился до 5.5, у меня все еще была та же проблема, что и раньше; Я даже опробовал новую систему IAP, которую предоставляет Unity 5.5, и все еще имел ту же проблему. Черт возьми, я думаю, что проблема в том, что мой сценарий IAP (тот, который также был предоставлен для моего единства) не работает на мобильных устройствах, поскольку ранее упоминалось, что он действительно работает в движке единства. Еще одна вещь, которую следует упомянуть, это то, что мой IAP скрипт работал раньше (на мобильных телефонах), до того, как он перестал работать на мобильных телефонах, однако я не уверен, как и что заставило мой скрипт не работать сейчас на мобильных телефонах.

мой сценарий:

public static IAPManager Instance{set; get;}

	private static IStoreController m_StoreController; 
	private static IExtensionProvider m_StoreExtensionProvider;

	public static string PRODUCT_50_GOLD =    "gold50";   
	public static string PRODUCT_100_GOLD = "gold100";
	public static string PRODUCT_NO_ADS =  "noads"; 

	private void Awake()
	{
		Instance = this; 
	}
	private void Start()
	{
		if (m_StoreController == null)
		{
			InitializePurchasing();
		}
	}
	public void InitializePurchasing() 
	{
		if (IsInitialized())
		{
			return;
		}

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

		builder.AddProduct(PRODUCT_50_GOLD, ProductType.Consumable);
		builder.AddProduct(PRODUCT_100_GOLD, ProductType.Consumable);
		builder.AddProduct(PRODUCT_NO_ADS, ProductType.NonConsumable);

			
		UnityPurchasing.Initialize(this, builder);
	}
	private bool IsInitialized()
	{
		return m_StoreController != null && m_StoreExtensionProvider != null;
	}

	public void Buy50Gold()
	{
		BuyProductID(PRODUCT_50_GOLD);
	}
	public void Buy100Gold()
	{
		BuyProductID(PRODUCT_100_GOLD);
	}
	public void BuyNoAds()
	{
		BuyProductID(PRODUCT_NO_ADS);
	}


	private void BuyProductID(string productId)
	{
		// If Purchasing has been initialized ...
		if (IsInitialized())
		{
			// ... look up the Product reference with the general product identifier and the Purchasing 
			// system's products collection.
			Product product = m_StoreController.products.WithID(productId);

			// If the look up found a product for this device's store and that product is ready to be sold ... 
			if (product != null && product.availableToPurchase)
			{
				Debug.Log(string.Format("Purchasing product asychronously: '{0}'", product.definition.id));
				// ... buy the product. Expect a response either through ProcessPurchase or OnPurchaseFailed 
				// asynchronously.
				m_StoreController.InitiatePurchase(product);
			}
			// Otherwise ...
			else
			{
				// ... report the product look-up failure situation  
				Debug.Log("BuyProductID: FAIL. Not purchasing product, either is not found or is not available for purchase");
			}
		}
		// Otherwise ...
		else
		{
			// ... report the fact Purchasing has not succeeded initializing yet. Consider waiting longer or 
			// retrying initiailization.
			Debug.Log("BuyProductID FAIL. Not initialized.");
		}
	}
	public void OnInitialized(IStoreController controller, IExtensionProvider extensions)
	{
		// Purchasing has succeeded initializing. Collect our Purchasing references.
		Debug.Log("OnInitialized: PASS");

		// Overall Purchasing system, configured with products for this application.
		m_StoreController = controller;
		// Store specific subsystem, for accessing device-specific store features.
		m_StoreExtensionProvider = extensions;
	}
	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 PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs args) 
	{
		if (String.Equals(args.purchasedProduct.definition.id, PRODUCT_50_GOLD, StringComparison.Ordinal))
		{
			Debug.Log ("Purchase Successfull!");
			ScoreManager.Coin += 50;
		}
		else if (String.Equals(args.purchasedProduct.definition.id, PRODUCT_100_GOLD, StringComparison.Ordinal))
		{
			Debug.Log ("Purchase Successfull!");
			ScoreManager.Coin += 100;
		}
		else if (String.Equals(args.purchasedProduct.definition.id, PRODUCT_NO_ADS, StringComparison.Ordinal))
		{
			Debug.Log ("Purchase Successfull!");
		}
		else 
		{
			Debug.Log(string.Format("ProcessPurchase: FAIL. Unrecognized product: '{0}'", args.purchasedProduct.definition.id));
		}
		return PurchaseProcessingResult.Complete;
	}


	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));
	}
    }


Приведенный ниже код упоминается выше:

private void Start() {

	}

	public void Buy50Gold() {
		IAPManager.Instance.Buy50Gold ();
	}

	public void Buy100Gold() {
		IAPManager.Instance.Buy100Gold ();
	}
	public void BuyNoAds() {
		IAPManager.Instance.BuyNoAds ();
	}


Что я уже пробовал:

Обновление до Unity 5.5 и использование новой системы IAP. Не работает

0 Ответов