我有一个已发布到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的值始终为false。有人能告诉我,它有什么问题吗?
答案 0 :(得分:1)
我认为既然您已经确定了代码行,那么您是在模拟器上进行测试,还是从Visual Studio部署到您的设备进行测试(而不是App Store中的版本)?
我不清楚为什么.IsActive
在您的情况下False
,但在我的应用中,我使用了Mock In-App Purchase Library,您可以从{{3}下载}}。使用它基本上可以让你在调试时模仿应用内购买,但也可以从商店无缝地工作。
图书馆旨在模仿应用内购买的方式。什么时候 在“模拟模式”中,图书馆也会保留一份收据清单 作为每个许可证的状态信息。这可以让你锻炼身体 整个浏览,搜索,购买和履行流程。什么时候进去 “模拟模式”库不会激活应用内模拟购买 屏幕,但提供了一个简单的消息框来完成应用内 在模拟器中测试时购买流程。
我唯一可以考虑你的情况是你在调试时试图访问商店,这是我认为不可能的,因此.IsActive
是False
。
所以如果你还没有看过(或者还没有使用过)模拟库,我会试一试。这绝对让我的生活更轻松!