Currentappsimulator ссылками.RequestProductPurchaseAsync моделирование закупок


Я пытаюсь реализовать in-app purchase для моего приложения Магазина Windows (Metro App). Я имел в виду примеры кода здесь, но когда я запустил метод RequestProductPurchaseAsync, ничего не происходит.

Когда я говорю, что ничего не происходит, это означает буквально ничего. Никаких результатов возврата (результат должен был быть квитанцией, так как я передал true для includeReceipt). Кроме того, когда я повторно проверяю флаг ProductLicences[string].IsActive, он всегда возвращает мне false.

Как мне проверить это должным образом? Большое спасибо!

3 2

3 ответа:

Убедитесь, что приложение LicenseInformation.IsTrial является ложным, иначе оно не будет работать. Покупки продуктов в приложении требуют, чтобы приложение не было в пробной версии. В опубликованном приложении пользователь увидит сообщение об ошибке, указывающее, что вы не можете совершать покупки продуктов в приложении под пробной лицензией. Симулятор не показывает это предупреждение в диалоговом окне моделирования покупки в приложении во время тестирования.

Вы можете либо изменить начальное состояние моделирования (см. примеры того, как это сделать), либо вызвать RequestAppPurchaseAsync (false) во время выполнения моделирования, чтобы получить полную лицензию для приложения, а затем попробуйте приобрести продукт.

Мы испытали и решили аналогичную проблему. Использование CurrentAppSimulator работало нормально, но создание реального покупательного пользовательского интерфейса с CurrentApp не работало.

В рабочей установке ждите CurrentApp.RequestProductPurchaseAsync (string,bool), казалось, никогда не возвращался (точнее, он возвращается только один раз после входа пользователя в систему-последующие вызовы не возвращались).

Кроме того, после того, как мы попытались поднять покупательный интерфейс в нашем приложении, Другие приложения, использующие покупательный интерфейс, имели ту же проблему-пользовательский интерфейс никогда не отображается.

Вот код задачи:

    private async void CommandInvokedHandler(IUICommand command)
    {
        switch (command.Label)
        {
            case "Continue":

                licenseInformation = CurrentApp.LicenseInformation;

                if (!licenseInformation.ProductLicenses[Notes.ProductName].IsActive)
                {
                    try
                    {
                        await CurrentApp.RequestProductPurchaseAsync(Notes.ProductName, false);
                        // The code never steps over
                    }

Несколько очевидная проблема с приведенным выше кодом заключается в том, что запрос на вызов пользовательского интерфейса покупки в приложении выполняется из модального обработчика команд диалогового окна. Запрос зависает - никогда не возвращается. Не столь очевидная часть заключается в том, что он также блокирует все последующие запросы от нашего приложения и любого другого приложения (до тех пор, пока сеанс пользователя не будет завершен). возобновленный).

После перемещения блока " try " из обработчика команд и обеспечения отсутствия модальных вызовов пользовательского интерфейса, оспаривающих запрос на покупку, покупка работала без проблем.

Правка: вы должны перезапустить (или повторно войти), чтобы проверить это. После того, как пользовательский интерфейс покупки сломается, он не будет отображаться до тех пор, пока вы не перезагрузите или повторно не войдете в систему.

Есть небольшой нюанс: чтобы иметь возможность купить что-либо с помощью CurrentAppSimulator, нужно позвонить CurrentAppSimulator.RequestAppPurchaseAsync, Прежде чем делать какие-либо запросы на покупку. После выполнения операции, возвращаемой вызовом, можно успешно вызвать CurrentAppSimulator.RequestProductPurchaseAsync (если только значение IsTrial в элементе LicenseInformation не установлено в значение false в xml).