【问题标题】:WP8.1 application crashes on calling RequestProductPurchaseAsyncWP8.1 应用程序在调用 RequestProductPurchaseAsync 时崩溃
【发布时间】:2015-03-17 04:46:36
【问题描述】:

我正在为 Windows Phone 8.1(运行时)编写 Audio Player,我使用 IBackgroundTask 来表示 audio

我想使用应用内购买,但调用时应用程序崩溃

var result = await CurrentAppSimulator.RequestProductPurchaseAsync(ProProductId);

没有任何例外。

这个方法在 try-catch 块中被调用。

当应用程序已经通过调用BackgroundMediaPlayer.Current 启动IBackgroundTask 时会发生这种情况(在调用RequestProductPurchaseAsync 几秒钟后发生)。

如果我在启动应用程序后调用RequestProductPurchaseAsync而不调用BackgroundMediaPlayer.Current,它可以正常工作。

这种行为的原因是什么?有一些方法可以解决这个问题吗?

【问题讨论】:

  • 你得到的错误是什么?您是否在内部后台任务请求购买?
  • 我没有收到错误,应用程序崩溃而没有任何消息。使 UI 和后台任务崩溃。我请求从 UI 购买。在调试应用程序不会崩溃。
  • 如果没有更多上下文,就不可能说出发生了什么。随机猜测:你没有调用 UI 线程?
  • 我尝试了很多变体:从 UI 线程,从新线程,有等待,没有等待 - 我总是得到相同的结果。上下文:在启动应用程序调用BackgroundMediaPlayer.Current 以启动音频背景并添加事件处理程序BackgroundMediaPlayer.MessageReceivedFromBackground += OnMessageReceivedFromBackground 之后。用户单击“捐赠”按钮并调用var result = await CurrentAppSimulator.RequestProductPurchaseAsync(ProProductId); 后,应用程序崩溃。
  • 我也遇到了同样的问题,请问您找到解决方法了吗?

标签: c# crash windows-phone in-app-purchase windows-phone-8.1


【解决方案1】:

我遇到了同样的问题,应用程序只是崩溃了,没有抛出异常。发生在 CurrentAppSimulatorCurrentApp 上。

我想出的唯一解决方案是杀死后台任务

BackgroundMediaPlayer.Shutdown()

在进行 IAP 之前。确保你在调用关机后也放了一点延迟,有时应用程序在没有它的情况下仍然崩溃(但不那么频繁,所以我猜在关机过程中会有一些延迟)

【讨论】:

  • 我也没有找到其他解决方案。而且这个解决方案不是很好)我无法得到 100% 的肯定结果。
  • 这个问题有什么新的解决方案吗?
  • @Tomas,我使用 Task.Delay(3000).Wait(); 添加了延迟虽然它不工作很多次。这主要是 CurrentApp 失败的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多