1

我有一个已经发布到 windows phone 商店的 WP8 应用程序。

它已配置应用内购买,当用户在我的应用中单击“购买”按钮时,我使用以下代码。

        ListingInformation products = await CurrentApp.LoadListingInformationByProductIdsAsync(new[] { "ProductOne"});

        ProductListing productListing = null;
        if (!products.ProductListings.TryGetValue("ProductOne", out productListing))
        {
            MessageBox.Show("Could not find product information");
            return;
        }

        try
        {
            string receipt = await CurrentApp.RequestProductPurchaseAsync(productListing.ProductId, true);
        }
        catch (Exception ex)
        {
            Debug.WriteLine(ex);
        }

        ProductLicense productLicense = null;
        if (CurrentApp.LicenseInformation.ProductLicenses.TryGetValue("ProductOne", out productLicense))
        {
            if (productLicense.IsActive)
            {
                  ...
            }
            else
            {
                  ...
            }
        }

问题是 productLicense.IsActive 的值总是假的。有人可以告诉我,它有什么问题吗?

4

1 回答 1

1

我假设既然你已经确定了代码行,你是在模拟器上测试还是从 Visual Studio 部署到你的设备进行测试(而不是来自 App Store 的版本)?

我不清楚为什么.IsActiveFalse出现在您的情况下,但在我的应用程序中,我使用了您可以从此处下载的模拟应用内购买库。使用它基本上可以让您在调试时模仿应用内购买,但也可以从商店无缝工作。

该库旨在模仿应用内购买的工作方式。当处于“模拟模式”时,图书馆会维护您的收据列表以及每个许可证的状态信息。这使您可以练习整个浏览、搜索、购买和履行流程。当处于“模拟模式”时,库不会激活应用内模拟购买屏幕,而是提供一个简单的消息框来完成应用内购买流程,同时在模拟器中进行测试。

对于您的情况,我唯一能想到的是您在调试时尝试访问 Store,我认为这是不可能的,.IsActive因此False.

因此,如果您还没有看到(或尚未使用)模拟库,我会说试一试。这绝对让我的生活更轻松!

于 2013-05-31T13:48:10.893 回答