CurrentApp.ReportProductFulfillment方法如何工作?

时间:2013-08-23 11:30:03

标签: windows-phone-8 in-app-purchase windows-phone

我正在测试我的Windows Phone 8应用程序,用于我的应用程序在完成耗材购买之前进入后台的情况。因此,在每次应用启动时,我会检查是否有任何未实现的应用内购买,如果有,我会使用CurrentApp.ReportProductFulfillment方法来实现它们。 但是,在测试时我注意到即使设备未连接到Internet,此方法仍然有效。那么应用程序如何以及何时让市场知道购买成功了?更重要的是,我是否应该仅在我有互联网连接的情况下才这样做?

顺便说一句,这是我的代码:

var licenses = CurrentApp.LicenseInformation.ProductLicenses;
if (licenses["PRODUCT_ID"].IsConsumable && licenses["PRODUCT_ID"].IsActive) {
    // Fulfill consumable purchases

    // Let the Marketplace know
    CurrentApp.ReportProductFulfillment("PRODUCT_ID");
}

2 个答案:

答案 0 :(得分:0)

市场通信发生在操作系统定期生成的后台任务上。如果将Fiddler附加到运行Windows Phone模拟器的计算机

,则可以观察此流量

以下陈述仅仅是我的假设,所以请耐心等待。我认为后台市场沟通处理许多任务。其中最常见的是检查应用程序更新。但是,这也是操作系统传达订单履行的理想时间。在这种情况下,市场服务可能会对您的报告请求进行排队,如果无法立即进行通信,则将其推迟以便以后处理后台任务,即使手机没有数据访问权限也允许该方法运行。鉴于现代无现金交易的性质,我认为市场没有任何理由要求立即通知履行,因为一旦获得初始化授权,它就有时间完成交易。

答案 1 :(得分:0)

CurrentApp.LicenseInformation.ProductLicenses由Windows Phone操作系统缓存。