0

アプリが消耗品の購入を完了する前にバックグラウンドに移行するシナリオについて、Windows Phone 8 アプリをテストしています。そのため、アプリを起動するたびに、満たされていないアプリ内購入があるかどうかを確認し、ある場合はCurrentApp.ReportProductFulfillmentメソッドを使用してそれらを満たします。ただし、テスト中に、デバイスがインターネットに接続されていなくてもこの方法が機能することに気付きました。では、アプリはいつどのようにして購入が成功したことを Marketplace に知らせるのでしょうか? さらに重要なことに、これはインターネットに接続している場合にのみ行うべきですか?

ちなみにこれは私のコードです:

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

2 に答える 2

0

マーケットプレイス通信は、OS によって定期的に生成されるバックグラウンド タスクで発生します。Windows Phone エミュレーターを実行しているマシンに Fiddler を接続すると、このトラフィックを確認できます。

以下の記述は私の推測にすぎないので、大まかに考えてください。バックグラウンドの Marketplace 通信が多くのタスクを処理していると思います。これらの中で最も一般的なのは、アプリケーションの更新をチェックすることです。ただし、これは OS が注文のフルフィルメントを通知するのに理想的な時期でもあります。このように、Marketplace サービスはおそらくレポート要求をキューに入れ、すぐに通信できない場合はバックグラウンド タスクが後で処理できるように保留し、電話がデータにアクセスできない場合でもメソッドを実行できるようにします。現代のキャッシュレス トランザクションの性質を考えると、初期化承認が取得されるとトランザクションを完了する時間があるため、Marketplace がフルフィルメントの即時通知を必要とする理由はわかりません。

于 2013-08-24T11:58:23.277 に答える