Windows phone 8 CurrentApp.ReportProductFulfillment方法是如何工作的?

Windows phone 8 CurrentApp.ReportProductFulfillment方法是如何工作的?,windows-phone-8,in-app-purchase,windows-phone,Windows Phone 8,In App Purchase,Windows Phone,我正在测试我的Windows Phone 8应用程序,以了解我的应用程序在完成消费品购买之前会进入后台的情况。因此,在每次应用发布时,我都会检查是否有未完成的应用内购买,如果有,我会使用CurrentApp.ReportProductFulfillment方法完成。 然而,在测试过程中,我注意到即使设备未连接到互联网,这种方法也能工作。那么,该应用程序如何以及何时让市场知道购买成功?更重要的是,我应该只在我有互联网连接的情况下才这样做吗 顺便说一下,这是我的代码: var licenses =

我正在测试我的Windows Phone 8应用程序,以了解我的应用程序在完成消费品购买之前会进入后台的情况。因此,在每次应用发布时,我都会检查是否有未完成的应用内购买,如果有,我会使用
CurrentApp.ReportProductFulfillment
方法完成。 然而,在测试过程中,我注意到即使设备未连接到互联网,这种方法也能工作。那么,该应用程序如何以及何时让市场知道购买成功?更重要的是,我应该只在我有互联网连接的情况下才这样做吗

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

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");
}

市场通信在操作系统定期生成的后台任务上进行。如果将Fiddler连接到运行Windows Phone emulator的计算机,则可以观察到此流量


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

CurrentApp.LicenseInformation.ProductLicenses由windows phone操作系统缓存