如何在正在进行的后台任务中确认收到原始WNS消息?

时间:2018-12-26 07:14:15

标签: uwp wns

我有一个Windows 10安装程序的UWP应用程序,可以通过WNS接收Raw和Toast通知。在前台和在后台挂起时,我可以正确接收消息。

在前台,我设置了一个处理程序PushNotificaitonChannel.PushNotificationReceived,并在处理程序中设置了args.Cancel == true,一旦我处理了该消息。

对于后台处理,我使用PushNotificationTrigger()注册了一个正在进行的后台任务。除一个令人困惑的问题外,这非常有效:我经常收到原始通知的重复副本。重复项的数量范围为1-20 +。

从版本14393到最新发布的版本17763,我已经在许多不同版本的Windows上看到了这种行为。

我可以在Visual Studio下复制重复项,并注意到调用堆栈在第一张收据和重复收据之间有所不同。我没有发现任何隐藏在本机/ COM数据结构中的状态来指示如何停止重复项。我可以发布堆栈跟踪信息(如果有帮助的话)。

我希望其他人知道如何停止此操作-以某种方式确认正在进行的后台任务中收到原始WNS消息。

非常感谢您阅读和考虑此问题。

编辑:在研究最小示例时,我发现了以下行为模式。

  1. 在前台测试应用程序,发送原始推送;正常收到
  2. 通过常规关闭按钮关闭应用;应用未运行
  3. 发送新的原始推送;应用程序在后台启动并收到原始推送罚款;应用进入暂停状态
  4. (应用仍处于暂停状态)发送新的原始推送;应用开始运行;相同的原始推送收到TWICE;应用程序恢复为暂停状态
  5. 这种情况可以发生很多次,并且只有两次收到原始推送
  6. 杀死应用程序(使用任务管理器中的最终任务);应用未运行
  7. 发送新的原始推送;应用开始运行;相同的原始推送获得了TWICE(与#4相同);应用程序恢复为暂停状态
  8. 最奇怪的是:发送新的原始推送,应用会收到3次原始推送;应用程序恢复为暂停状态
  9. 现在,每一次原始推送都会获得3次;如果我再次杀死该应用程序,并且统计信息发送原始推送,则重复数据的数量将增加一。

0 个答案:

没有答案