在Windows应用商店应用中购买问题

时间:2015-12-04 08:10:43

标签: c# windows windows-runtime windows-phone-8.1 windows-store-apps

我已经在应用内购买时创建了一个应用,并使用CurrentAppSimulator对其进行了测试并且工作正常,但是当我为应用创建包时,它失败了

这是我正在为其创建包

的代码
public async System.Threading.Tasks.Task InAppInit()
{

    var listing = await CurrentApp.LoadListingInformationAsync();

    // Delux Unlock - Durable
    var unlockFeatureDelux = listing.ProductListings.FirstOrDefault(p => p.Value.ProductId == "deluxe" && p.Value.ProductType == ProductType.Durable);
    isDeluxPurchased = CurrentApp.LicenseInformation.ProductLicenses[unlockFeatureDelux.Value.ProductId].IsActive;
    deluxProductID = unlockFeatureDelux.Value.ProductId;

    // Standard Unlock - Durable
    var unlockFeatureStandard = listing.ProductListings.FirstOrDefault(p => p.Value.ProductId == "standard" && p.Value.ProductType == ProductType.Durable);
    isStarndardPurchased = CurrentApp.LicenseInformation.ProductLicenses[unlockFeatureStandard.Value.ProductId].IsActive;
    standardProductID = unlockFeatureStandard.Value.ProductId;

}

我在OnLaunched

中调用此方法App.xaml.cs

1 个答案:

答案 0 :(得分:2)

根据我们的讨论,我会做的是:

  • LoadListingInformationAsync方法使用互联网,如果用户没有互联网连接,则会抛出异常。所以我建议将整个内容包装成一个try / ctach块
  • 我们看到ProductListings不包含任何项目。我不知道这个列表是如何填充的,但只要你的应用程序不在商店中,当列表为空时我不会感到惊讶(也许有人可以在这里帮忙...但我没有找到任何东西关于这个在文档中)。因此,我只需检查您需要的功能是否在列表中......有了这个,您的包将通过您提到的测试,您可以上传它。如果通过商店安装软件包时列表也为空,那么IAP设置的内容是错误的(但这与商店有关..)
  • 一般评论:显然这段代码不完整......你需要一些代码来购买IAP,这里我们只得到了ID ...(但我认为你只是粘贴了相关的部分。)

所有这一切都在代码中:

 public async System.Threading.Tasks.Task InAppInit()
    {
        try
        {
            var listing = await CurrentApp.LoadListingInformationAsync();
            if (listing.ProductListings.ContainsKey("deluxe"))
            {
                // Delux Unlock - Durable
                var unlockFeatureDelux = listing.ProductListings.FirstOrDefault(p => p.Value.ProductId == "deluxe" && p.Value.ProductType == ProductType.Durable);
                isDeluxPurchased = CurrentApp.LicenseInformation.ProductLicenses[unlockFeatureDelux.Value.ProductId].IsActive;
                deluxProductID = unlockFeatureDelux.Value.ProductId;
            }
            else
            {
                //There is no deluxe IAP defined... so something with your IAP stuff is wrong...
            }

            if (listing.ProductListings.ContainsKey("standard"))
            {
                // Standard Unlock - Durable
                var unlockFeatureStandard = listing.ProductListings.FirstOrDefault(p => p.Value.ProductId == "standard" && p.Value.ProductType == ProductType.Durable);
                isStarndardPurchased = CurrentApp.LicenseInformation.ProductLicenses[unlockFeatureStandard.Value.ProductId].IsActive;
                standardProductID = unlockFeatureStandard.Value.ProductId;
            }
            else
            {
                //same as for Delux
            }
        }
        catch
        {
            //Show  this on the UI...
        }
    }