windows商店应用程序中的应用内购买问题

本文关键字:问题 应用 应用程序 windows | 更新日期: 2023-09-27 18:25:40

我用应用内购买创建了一个应用程序,并用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;
}

我在App.xaml.cs 中调用此方法OnLaunched

windows商店应用程序中的应用内购买问题

根据我们的讨论,以下是我要做的:

  • 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...
        }
    }