4

CurrentApp.GetAppReceiptAsync()の結果からAppReceiptIdを使用し、それをバックエンドサービスのユーザー名に関連付けて、ユーザーが実際にアプリを購入したことを確認できるようにしたいと思います。

CurrentAppの代わりにCurrentAppSimulatorを使用することになっていることはわかっていますが、CurrentAppSimulator.GetAppReceiptAsync()は常にAppReceiptIdに対して異なるランダムな値を返します。これにより、私のサービスでテストすることが困難になります。

ハードコードされた値を使用する以外に、常に同じ値を返すようにする方法はありますか?CurrentAppSimulatorをCurrentAppに置き換えてストアに送信すると、期待どおりに動作しないのではないかと心配しています。現実の世界では、AppReceiptIdは変更されませんよね?

AppReceiptIdを取得するために使用するコード:

var receiptString = await CurrentAppSimulator.GetAppReceiptAsync();
XmlDocument doc = new XmlDocument();
doc.LoadXml(receiptString);

var ReceiptNode = (from s in doc.ChildNodes 
                   where s.NodeName == "Receipt"
                   select s).Single();

var AppReceiptNode = (from s in ReceiptNode.ChildNodes
                      where s.NodeName == "AppReceipt"
                      select s).Single();

var idNode = (from s in AppReceiptNode.Attributes
              where s.NodeName == "Id"
              select s).Single();

string id = idNode.NodeValue.ToString();

idは常にランダムなGUIDになります。

4

1 に答える 1

0

CurrentApp.GetAppReceiptAsync()。Idは、実際の購入の一意のIDです。技術的には単一のWindowsIDによる一意の購入を表していますが、ユーザー自身を表すものではなく、そのIDの耐久性についての保証はないと思います。

Windows Live SDKを使用して、デバイス間で実際のユーザーIDを追跡する方が適していますか?

とにかく、あなたの元の質問に答えるために、いいえ、常に同じIDを返すようにする方法はないと思います。その機能の唯一の論理的な場所はWindowsStoreProxy.xmlファイルであり、この情報を指定できるスキーマには何も表示されません。

于 2013-02-28T18:59:54.837 に答える