次のメソッドを呼び出すボタンを設定しました。
private async void buyTimeUP()
{
await CurrentApp.RequestProductPurchaseAsync("MyItem", false);
DoFullFillment();
}
このアイテムを購入/ダウンロードすると、すべてが正常に実行され、次のコードは正常に実行されます。
public void DoFullFillment()
{
var productLicenses = CurrentApp.LicenseInformation.ProductLicenses;
checkTransaction(productLicenses["MyItem"]);
}
private void checkTransaction(ProductLicense lic)
{
if (lic.IsConsumable && lic.IsActive)
{
Debug.WriteLine("License bought");
CurrentApp.ReportProductFulfillment(lic.ProductId);
}
}
ただし、ユーザーが戻るボタンを使用してアプリ内ダイアログから戻った場合、またはトランザクションをキャンセルした場合、コードは次の場所でクラッシュします。
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at MyApp.Shop.<buyTimeUP>d__0.MoveNext()
どうすればこのバグを取り除くことができますか?