我一直在尝试在模拟器中的应用程序购买中实施测试,但都是徒劳的。商店示例确实有效,但是当我尝试在我的应用中实现类似行为时,它会以某种方式无法模拟我想要的。我有一个设置页面和所有备注页面,我需要将其作为高级功能。该应用程序默认是免费的。
这是我的xml文件。我已创建为示例应用程序中的那个。我需要,因为我的应用程序默认是免费的吗?
<?xml version="1.0" encoding="utf-8" ?>
<CurrentApp>
<LicenseInformation>
<App>
<IsActive>true</IsActive>
<IsTrial>false</IsTrial>
</App>
<Product ProductId="Settings">
<IsActive>true</IsActive>
</Product>
<Product ProductId="AllNotes">
<IsActive>false</IsActive>
</Product>
</LicenseInformation>
</CurrentApp>
其余代码写在“设置”页面的OnNavigatedTo函数上。
protected override async void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
StorageFolder proxyDataFolder = await Package.Current.InstalledLocation.GetFolderAsync("Data");
StorageFile proxyFile = await proxyDataFolder.GetFileAsync("in-app-purchase.xml");
LicenseInformation licenseInformation = CurrentAppSimulator.LicenseInformation;
var productLicense = licenseInformation.ProductLicenses["Settings"];
if (!productLicense.IsActive)
{
var messageDialog = new MessageDialog("You need to buy the Settings option", "Buy");
messageDialog.Commands.Add(new UICommand("Buy", null, 0));
var commandChosen = await messageDialog.ShowAsync();
if ((int)commandChosen.Id == 0)
{
await CurrentAppSimulator.RequestProductPurchaseAsync("Settings", true);
if (licenseInformation.ProductLicenses["Settings"].IsActive)
{
InitializeUI();
}
}
}
}
所以即使我试图购买产品等待
CurrentAppSimulator.RequestProductPurchaseAsync("Settings", true);
该值仍为false。 我遗失的任何东西?
答案 0 :(得分:0)
我不确定这是否重要,但我将IsTrial == True
放入我的xml中。但是我发现,更重要的是,为了能够成功购买任何东西,你应该首先购买应用程序本身呼叫
Windows.ApplicationModel.Store.CurrentAppSimulator.RequestAppPurchaseAsync()
您只需在会话期间执行此操作一次,购买应用程序后,即可购买任何产品。希望这会有所帮助。
答案 1 :(得分:0)
您忘记将proxyFile加载到CurrentAppSimulator中。
await CurrentAppSimulator.ReloadSimulatorAsync(proxyFile);