Metro アプリでアプリ内購入を有効にしようとしていますが、まったく機能していないようです。エラーは発生せず、戻り値は空の文字列です。私のコードは次のようになります。
await CurrentAppSimulator.RequestProductPurchaseAsync("bonus", false);
if (!licenseInformation.ProductLicenses["bonus"].IsActive) {
error="purchase didn't work?";
}
そして、エラーが発生します。WindowsStoreProxy.xml ファイルがあることを確認しました。こんな感じです。
<Product ProductId="bonus" LicenseDuration="10">
<MarketData xml:lang="en-us">
<Name>Bonus pretend feature</Name>
<Price>1.00</Price>
<CurrencySymbol>$</CurrencySymbol>
<CurrencyCode>USD</CurrencyCode>
</MarketData>
</Product>
...
<LicenseInformation>
<App>
<IsActive>true</IsActive>
<IsTrial>true</IsTrial>
</App>
<Product ProductId="bonus">
<IsActive>false</IsActive>
</Product>
</LicenseInformation>
の下に「true」を入れると、アプリはこの特定の製品を購入済みと見なすため、このファイルが読み取られたと思います。ドキュメントを確認したところ、そこですべてを行っているようです。
コードが RequestProductPurchaseAsync を呼び出すと、戻り値を選択するように求めるダイアログが表示されます。S_OK を選択し、[続行] をクリックします。戻り値として空の文字列を取得します。問題は、最初の引数として入力した文字列に関係なく、同じ結果が得られることです。
私は何かが欠けているに違いない。私は何を間違っていますか?このことをどのように診断しますか?
編集:明らかに、これを機能させるための秘訣は、アプリが試用モードになっていないことを確認することです-これはデフォルトです。
しかし、このことをどのように診断するのでしょうか? 問題が発生したときにエラー メッセージを取得するにはどうすればよいですか? この API を取得して、「アプリが試用モードであるため購入に失敗しました」などの役立つエラーを通知するにはどうすればよいですか?