语言: HTML | XAML

快速入门:为正在运行的应用截获推送通知 (XAML)

注意  不使用 C#/VB/C++?请参阅快速入门:为正在运行的应用截获推送通知 (HTML)

你可以将你的应用设计为截获推送通知并采用非默认方式响应该通知。这一过程可用于所有推送通知类型,但是它对 Toast 和原始通知尤为有用。

当你的应用的云服务向 Windows 发送通知时,你的应用便有机会在显示 Toast、更新磁贴或锁屏提醒或者向后台任务发送原始通知之前截获和处理该通知。它也可以阻止这些元素的显示或更新。实现通知发送事件处理程序是可选的。当应用想处理和阻止传入的 Toast 而不是向用户显示它们时,该选项最有用。

注意  从 Windows Phone 8.1 开始,手机还可以通过使用通知的 XML 内容中的 ToastNotification.suppressPopupScheduledToastNotification.suppressPopup 属性使 Toast 通知不显示。

注意  此过程仅适用于正在运行的应用。当应用未运行并且处理程序未实现时系统发送的通知会正常发送—更新磁贴、显示 Toast 以及向后台任务发送原始通知(如果已实现)。

先决条件

若要理解本主题或使用其提供的代码,则你需要:

说明

1. 添加命名空间声明

Windows.Networking.PushNotifications 包括推送通知和原始 API。从通知中检索磁贴、Toast 和锁屏提醒内容时需要 Windows.UI.Notifications



using Windows.UI.Notifications;                        
using Windows.Networking.PushNotifications;

2. 创建推送通知通道

一个有效的通知通道需要接收从云服务器推送的通知。事件侦听器观察此通道,看有无通知到达。有关如何创建通道的详细信息,请参阅如何请求、创建和保存通知通道



PushNotificationChannel channel = null;

try
{
    channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();
}

catch (Exception ex)
{ 
    // ... 
}

3. 创建函数以处理推送通知事件

以下示例显示了如何处理所有通知类型。

此示例中的最后一行代码将事件的 Cancel 属性设置为 true。这会阻止通知执行任何 UI 更改,如更新磁贴或锁屏提醒或者显示 Toast。如果是原始通知,那么它会阻止通知发送到后台任务(如果已实现)。这样,对通知的任何响应都取决于处理程序。



string content = null;
private async void OnPushNotification(PushNotificationChannel sender, PushNotificationReceivedEventArgs e) 
{ 
    String notificationContent = String.Empty; 
    
    switch (e.NotificationType) 
    { 
        case PushNotificationType.Badge:
            notificationContent = e.BadgeNotification.Content.GetXml(); 
            break; 
        
        case PushNotificationType.Tile: 
            notificationContent = e.TileNotification.Content.GetXml(); 
            break; 
        
        case PushNotificationType.Toast: 
            notificationContent = e.ToastNotification.Content.GetXml(); 
            break; 
        
        case PushNotificationType.Raw: 
            notificationContent = e.RawNotification.Content;
            break; 
    }
    
    e.Cancel = true;
}

4. 为接收的推送通知添加事件侦听器

使用在步骤 1 中创建的通道分配步骤 2 中创建的事件处理程序,以处理 PushNotificationReceived 事件。



Channel.PushNotificationReceived += OnPushNotification;

摘要

如果你的方案需要,在你的应用处于运行状态时截获并处理推送通知可以让你的应用对这些通知的效果具有更大的控制力。例如,你可能不希望在正在进行的游戏上面显示 Toast 通知,那么你的事件处理程序可能会采用入侵行为较少的方式将该通知的内容集成到游戏 UI 中。

相关主题

示例
原始通知示例
推送和定期通知示例
概念信息
Windows 推送通知服务 (WNS) 概述
原始通知概述
最佳做法
推送通知指南和清单
原始通知指南和清单
操作方法
快速入门:创建并注册原始通知后台任务

 

 

显示:
© 2015 Microsoft