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. Не работает