当应用程序在后台运行时,UWP会阻止一些通知

时间:2019-02-13 09:08:21

标签: uwp push-notification

我想阻止一些通知。我可以在应用程序处于前台时使用以下代码进行操作:

var channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();
channel.PushNotificationReceived += Channel_PushNotificationReceived;

后来:

private void Channel_PushNotificationReceived(PushNotificationChannel sender, PushNotificationReceivedEventArgs args)
{
    if (args?.NotificationType == PushNotificationType.Toast)
    {
        if (string.IsNullOrWhiteSpace(args.ToastNotification?.Content?.InnerText))
        {
            args.Cancel = true;
        }
    }
}

但是我不知道关闭应用程序后该怎么做。我尝试了“通知侦听器”,但只有在通知已经显示时才可以访问。

我的问题是,当应用程序在后台运行时,如何阻止某些通知?

2 个答案:

答案 0 :(得分:0)

您可以使用原始推送通知(请参阅docs)。这些是没有关联的UI的特殊通知,但是您可以创建一个background task,每当此类通知到达时就会触发。然后,在此任务中,您可以决定是否要显示通知,在这种情况下,可以直接在代码中创建并显示通知。

答案 1 :(得分:0)

因为我使用的是Azure Notification Hub,所以不能使用Raw Push Notifications。最终,我添加了一个带有设备系列(uwp,android,ios)的标签,并使用语法tag && !uwp从集线器发送了通知,该语法将无处不在的特定通知发送给了uwp。