使用CurrentAppSimulator进行应用内购买开发测试

时间:2012-11-14 09:24:20

标签: c# microsoft-metro windows-runtime

我已使用CurrentAppSimulator设置应用内购买,并设置了获取应用内购买的功能。我也(可能)配置了我的WindowsStoreProxy.xml文件来处理这个问题。

但是,当我购买插件并给它一个S_OK值返回时,它仍然说IAP处于非活动状态。我可以将其激活的唯一方法是手动编辑WindowsStoreProxy.xml文件并将Active属性设置为Active。这看起来很奇怪,因为来自Microsoft的Store示例工作正常。我看不出他们有什么不同 - 他们仍然使用CurrentAppSimulator.RequestProductPurchaseAsync()方法。我在哪里错了...?

1 个答案:

答案 0 :(得分:6)

首先,我使用自己的类CurrentAppProxy,它在调试模式下使用CurrentAppSimulator,在Release中使用CurrentApp。然后我使用此代码购买InApp购买,它的工作正常:

try
{
    await CurrentAppProxy.RequestProductPurchaseAsync(PremiumName, false);

    // after closing the inApp purchase dialog, test, if it was bought
    if (licenseInformation.ProductLicenses[PremiumName].IsActive)
    {
        // set the local flag
        IsPremium = true;

        dialog = new MessageDialog(resourceLoader.GetString("ThanksForPremium"));
        await dialog.ShowAsync();
    }
    // else do not show anything
}
catch (Exception)
{
    // failed buying the premium
    dialog = new MessageDialog(resourceLoader.GetString("ErrorBuyingPremium"));
    dialog.ShowAsync();
}

编辑:在访问这些属性之前,我使用以下命令在Debug模式下初始化CurrentAppSimulator:

StorageFolder proxyDataFolder = await Package.Current.InstalledLocation.GetFolderAsync("Assets");
StorageFile proxyFile = await proxyDataFolder.GetFileAsync("test-purchase.xml");
await CurrentAppSimulator.ReloadSimulatorAsync(proxyFile);

在test-purchase.xml的底部我得到了:

<LicenseInformation>
    <App>
        <IsActive>true</IsActive>
        <IsTrial>false</IsTrial>
    </App>
    <Product ProductId="premium">
        <IsActive>false</IsActive>
    </Product>
</LicenseInformation>