UWP推进前景和背景

时间:2017-10-12 17:49:50

标签: push-notification uwp windows-10-universal wns

我在使用UWP推送通知时遇到以下问题。

情景:

  1. Foreground为推送通知注册后台任务,但也希望收到有关传入推送的通知,以便获取通道,使用该通道更新服务器,然后挂钩到该通道上的事件。

  2. 推送通知载于

  3. 后台任务启动并完成它的工作。它还检查通道URI是否已更改,如果有,则使用新的uri更新服务器。
  4. 结果:

    前台应用不再接收频道上的传入推送,因为后台任务使用与前台应用正在侦听的频道不同的频道uri更新服务器。

    前景应用在uri可能发生变化后继续侦听推送通知的正确方法是什么?

    更新了问题以便澄清:

    第1步 前景应用代码:

    var channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();
    channel.PushNotificationReceived += OnPushNotificationReceived;
    //<update server with channel.Uri
    

    第2步 后台任务启动并检查新频道uri:

    var channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();
    //update server with channel uri
    

    问题

    如果频道uri在第2步中发生变化,则第1步中的偶数处理程序永远不会再次被调用。

1 个答案:

答案 0 :(得分:0)

  

因为后台任务使用与前台应用正在侦听的不同的通道uri更新服务器。

没有。你的理解是不正确的。我们首先检查一下如何发送推送通知的步骤:

  1. 您的应用从通用Windows平台请求推送通知渠道。
  2. Windows要求WNS创建通知渠道。该通道以统一资源标识符(URI)的形式返回给调用设备。
  3. Windows将通知渠道URI返回给您的应用。
  4. 您的应用将URI发送到您自己的云服务。然后,将URI存储在您自己的云服务上,以便在发送通知时可以访问URI。
  5. 当您的云服务有要发送的更新时,它会使用通道URI通知WNS。这是通过在安全套接字层(SSL)上发出HTTP POST请求(包括通知有效负载)来完成的。此步骤需要身份验证。
  6. WNS收到请求并将通知路由到相应的设备。
  7. enter image description here

    然后,如果您了解这些步骤,您会发现向相应设备发送通知的关键点是您需要申请通知渠道。无论通道URI是否更新,此通道URI对于每个设备都是唯一的。因此,即使您的UWP应用程序的后台任务已更新云服务上的频道URI,也不会影响设备接收通知。只要您在使用此通道URI发送通知时确保通道URI是最新的,那么您的设备将始终收到通知(除了某些特殊情况,例如设备已关闭或设备已关闭)电池保护等)。

    请阅读Windows Push Notification Services (WNS) overview以获取更多详细信息。

      

    前景应用在uri可能发生变化后继续侦听推送通知的正确方法是什么?

    你说的不正确。 &#34;听取推送通知&#34;之间没有任何关系。并且&#34; uri可能会改变&#34;。

    如果您想在设备收到通知时执行某些操作,您可以使用Notification listener在收到通知时执行特定操作。