我在使用UWP推送通知时遇到以下问题。
情景:
Foreground为推送通知注册后台任务,但也希望收到有关传入推送的通知,以便获取通道,使用该通道更新服务器,然后挂钩到该通道上的事件。
推送通知载于
结果:
前台应用不再接收频道上的传入推送,因为后台任务使用与前台应用正在侦听的频道不同的频道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步中的偶数处理程序永远不会再次被调用。
答案 0 :(得分:0)
因为后台任务使用与前台应用正在侦听的不同的通道uri更新服务器。
没有。你的理解是不正确的。我们首先检查一下如何发送推送通知的步骤:
然后,如果您了解这些步骤,您会发现向相应设备发送通知的关键点是您需要申请通知渠道。无论通道URI是否更新,此通道URI对于每个设备都是唯一的。因此,即使您的UWP应用程序的后台任务已更新云服务上的频道URI,也不会影响设备接收通知。只要您在使用此通道URI发送通知时确保通道URI是最新的,那么您的设备将始终收到通知(除了某些特殊情况,例如设备已关闭或设备已关闭)电池保护等)。
请阅读Windows Push Notification Services (WNS) overview以获取更多详细信息。
前景应用在uri可能发生变化后继续侦听推送通知的正确方法是什么?
你说的不正确。 &#34;听取推送通知&#34;之间没有任何关系。并且&#34; uri可能会改变&#34;。
如果您想在设备收到通知时执行某些操作,您可以使用Notification listener在收到通知时执行特定操作。