2

Windows ストア アプリ (Metro アプリ) のアプリ内購入を実装しようとしています。コードサンプルhereを参照していましたが、RequestProductPurchaseAsyncメソッドをトリガーしても何も起こりません。

私が何も起こらないと言うとき、それは文字通り何の意味もありません。結果は返されません ( に渡したので、結果は領収書になるはずtrueでしたincludeReceipt)。また、ProductLicences[string].IsActiveフラグを再確認すると、常に false が返されます。

これを適切にテストするにはどうすればよいですか?どうもありがとう!

4

3 に答える 3

10

アプリの LicenseInformation.IsTrial が false であることを確認してください。そうでない場合、機能しません。アプリ内製品を購入するには、アプリが試用されていない必要があります。公開されたアプリでは、試用版ライセンスではアプリ内製品を購入できないというエラーがユーザーに表示されます。シミュレーターは、テスト中にアプリ内購入シミュレーション ダイアログにこの警告を表示しません。

シミュレーションの初期状態を変更するか (方法についてはサンプルを参照)、シミュレーションの実行中に RequestAppPurchaseAsync(false) を呼び出してアプリのフル ライセンスを取得してから、製品の購入を試すことができます。

于 2012-09-25T02:58:08.797 に答える
4

同様の問題を経験して解決しました。CurrentAppSimulatorの使用は正常に機能しましたが、 CurrentAppで実際の購入UIを表示することはできませんでした。

本番環境の設定では、CurrentApp.RequestProductPurchaseAsync(string、bool)が戻らないように見えました(より具体的には、ユーザーがログインした後に1回だけ返されます-後続の呼び出しは返されませんでした)。

さらに、アプリで購入UIを表示しようとした後、購入UIを使用する他のアプリケーションでも同じ問題が発生しました。UIが表示されません。

問題のコードは次のとおりです。

    private async void CommandInvokedHandler(IUICommand command)
    {
        switch (command.Label)
        {
            case "Continue":

                licenseInformation = CurrentApp.LicenseInformation;

                if (!licenseInformation.ProductLicenses[Notes.ProductName].IsActive)
                {
                    try
                    {
                        await CurrentApp.RequestProductPurchaseAsync(Notes.ProductName, false);
                        // The code never steps over
                    }

上記のコードのやや明らかな問題は、アプリ内購入UIを表示するリクエストが、モーダルダイアログボックスのコマンドハンドラー内から行われることです。リクエストがハングします-返されません。それほど明白ではない部分は、アプリケーションおよび他のすべてのアプリケーションからの後続のすべての要求もブロックすることです(ユーザーのセッションが再開されるまで)。

「try」ブロックをコマンドハンドラーから移動し、購入要求に異議を唱えるモーダルUI呼び出しがないことを確認すると、購入は問題なく機能しました。

編集:これをテストするには、再起動(または再ログイン)する必要があります。購入UIが壊れると、再起動するか再ログインするまで表示されません。

于 2013-01-16T14:49:37.567 に答える