Отсутствует метод UnityEngine.VR.VRSettings.get_enabled |Unity IAP покупка не обрабатывается |Android - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть приложение в магазине Google Play с покупками в приложении.

Я следую руководству IAP на веб-сайте Unity ... но у меня возникают проблемы с методом ProcessPurchase, который не запускается после вызова BuyProductID().

Я выпустил альфаверсия моего приложения для тестирования и отладочная метка в моем приложении для обратной связи.

Соответствующие части моего кода показаны ниже:

public class PurchasingManager : MonoBehaviour, IStoreListener
{

private static IStoreController m_StoreController;
private static IExtensionProvider m_StoreExtensionProvider;

public Text debugLabel;

public static string product_noAds =        "noads";
public static string product_pts1000 =      "pts1000";

void Start() {...}
void IsInitialized() {...}

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

    debugLabel.text = "Initializing...";

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

    builder.AddProduct(product_noAds, ProductType.NonConsumable);
    builder.AddProduct(product_pts1000, ProductType.Consumable);

    UnityPurchasing.Initialize(this, builder);
}


public void OnInitialized(IStoreController controller, IExtensionProvider extensions) {
    debugLabel.text = "OnInitialized: PASS";
    m_StoreController = controller;
    m_StoreExtensionProvider = extensions;
}

public void OnInitializeFailed(InitializationFailureReason error) {
    dt.text = "OnInitializeFailed InitializationFailureReason:" + error;
}


public void Buy_noads() {
    debugLabel.text = "BUYING noads";
    BuyProductID(product_noAds);
}

public void Buy_pts1000() {
    debugLabel.text = "BUYING 1000";
    BuyProductID(product_pts1000);
}

private void BuyProductID(string productId) {
    if (IsInitialized()) {
        Product product = m_StoreController.products.WithID(productId);
        if (product != null && product.availableToPurchase)
        {
            debugLabel.text = "intializing the purchase";
            m_StoreController.InitiatePurchase(product);
        }
    }
}

public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs args) 
{

    debugLabel.text = "Processing Purchase now...";

    if (String.Equals(args.purchasedProduct.definition.id, product_noAds, StringComparison.Ordinal)) {
        debugLabel.text = "PURCAHSE noads";
        shop.Purchase(500);
        PlayerPrefs.SetInt("noads", 1);
    }
    else if (String.Equals(args.purchasedProduct.definition.id, product_pts1000, StringComparison.Ordinal)) {
        shop.Purchase(1000);
        debugLabel.text = "PURCAHSE 1000";
    }
    else {
        debugLabel.text = string.Format("ProcessPurchase: FAIL. Unrecognized product: '{0}'", args.purchasedProduct.definition.id);
    }

    return PurchaseProcessingResult.Complete;

}

public void OnPurchaseFailed(Product product, PurchaseFailureReason failureReason) {
    debugLabel.text = string.Format("OnPurchaseFailed: FAIL. Product: '{0}', PurchaseFailureReason: {1}", product.definition.storeSpecificId, failureReason);
}

}

Итак, сразу после запуска моего приложенияметка отладки говорит: «Initializing ...», затем «OnInitialized: PASS».

Если я нажимаю кнопку, чтобы купить любой из двух продуктов, метка говорит: «инициализация покупки», но на этом она останавливаетсяи НИЧЕГО не происходит.

ProcessPurchase никогда не вызывается, поскольку метка не меняется ... Почему она не вызывается?Я не знаю ни одной ошибки, просто ничего не происходит.

Любая помощь будет признательна, спасибо.

Я должен добавить, что я следовал этому уроку YouTube: https://www.youtube.com/watch?v=3IQ-CvBQz0o&t=73s

РЕДАКТИРОВАТЬ:

Использование adb logcat Я вижу, что Unity печатает эту ошибку ... MissingMethodException

Что это значит?

Ответы [ 2 ]

0 голосов
/ 10 июня 2019

Измените местоположение вашей установочной папки Unity.Новый путь к местоположению не должен содержать пробелов и должен выглядеть примерно так: C: \ Unity \ 2019.1.5f1 \ Editor ...

вместо: C: \ Program Files \ Unity \ Hub \ Editor \2019.1.5f1 \ Editor ...

"Program Files" содержит пространство, и по этой причине AssemblyUpdater автоматически завершается сбоем.

Более подробную информацию по этой конкретной проблеме можно найти в https://issuetracker.unity3d.com/issues/assemblyupdater-silently-fails-if-its-path-contains-spaces

0 голосов
/ 16 декабря 2018

Кажется, вам нужно обновить Unity или IAP API.Здесь вы можете найти, как удалить и переустановить Unity IAP .Это решение помогло схожему с таким же зондом, как и ваш.

...