选择正确的推送通知通道类型

本文介绍三种类型的Windows推送通知通道(主要通道、辅助通道和备用通道),可帮助你将内容传送到应用。

(有关如何创建推送通知的详细信息,请参阅 Windows 推送通知服务 (WNS) 概述

推送通道的类型

有三种类型的推送通道可用于将通知发送到Windows应用。 它们分别是:

主通道 - “传统”推送通道。 应用商店中的任何应用都可以用来发送通知、磁贴、原始通知或徽章通知。 在此处了解详细信息

次要磁贴通道 - 用于将磁贴更新推送到次要磁贴。 只能用于将磁贴或徽章通知发送到用户开始屏幕上固定的次要磁贴。

备用频道 - 不再支持 - 创意者更新中添加的新型频道。 它允许将原始通知发送到任何Windows应用,包括未在应用商店中注册的通知。 同样,请注意,不再支持备用通道。

Note

无论使用哪种推送通道,一旦您的应用程序在设备上运行,它始终能够发送本地toast、磁贴或徽章通知。 它可以从前台应用进程或后台任务发送本地通知。

主要通道

这些是目前Windows上最常用的通道,适用于几乎任何应用将通过Microsoft Store分发的方案。 它们允许向应用发送所有类型的通知。

主要通道具有哪些功能?

  • 向主磁贴发送磁贴或徽章更新。 如果用户选择将您的磁贴固定到“开始”屏幕,这是您展示自己独特之处的机会。 在您的应用中发送包含有用信息或体验提醒的更新。
  • 发送 Toast 通知。 Toast 通知是立即在用户面前获取一些信息的机会。 它们由 shell 在大多数应用顶部绘制,并位于操作中心,以便用户可以稍后返回并与其交互。
  • 发送原始通知以触发后台任务。 有时,你希望根据通知代表用户执行一些工作。 原始通知允许你的应用程序的后台进程运行
  • 使用 TLS Windows提供的传输中的消息加密。 消息在传入 WNS 和发送到用户设备的过程中都进行了加密。

主要通道的限制

  • 需要使用 WNS REST API 推送通知,这并非跨设备供应商的标准。
  • 每个应用只能创建一个通道
  • 要求在Microsoft Store中注册应用

创建主通道

PushNotificationChannel channel = 
	await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();

辅助磁贴通道

这些渠道可用于将磁贴和徽章更新推送到辅助磁贴。 这些功能用于帮助应用通知用户可以在应用中进行交互的有趣事件或信息,例如群聊中的新消息或更新后的体育赛事得分。

辅助磁贴通道可以实现什么功能?

  • 向辅助磁贴发送磁贴或徽章通知。 辅助磁贴是一种极佳的方法,可以吸引用户重新回到您的应用。 它们是他们关心的信息的深层链接,并将相关信息放在磁贴上有助于再次返回它们。
  • 不同磁贴之间的通道(和到期时间)分离。 这样,你可以在用户可能将其固定到开始屏幕的各种辅助磁贴之间区分后端中的逻辑。
  • Windows 提供的传输中消息加密通过 TLS 实现。 消息在传入 WNS 和发送到用户设备的过程中都进行了加密。

次级磁贴通道的限制

  • 不允许使用 Toast 弹出或原始通知。 系统会忽略发送到辅助磁贴的 Toast 通知或原始通知。
  • 要求在Microsoft Store中注册应用

创建次要磁贴通道

PushNotificationChannel channel = 
	await PushNotificationChannelManager.CreatePushNotificationChannelForSecondaryTileAsync(tileId);

备用通道

备用通道使应用无需注册到Microsoft Store或创建用于应用的主要通道之外的推送通道即可发送推送通知。

Note

从 2021 年 7 月 1 日开始,想要使用 Web 推送通道或备用通道通过 WNS 发送基于浏览器的通知的应用程序需要载入到Microsoft Store。

备用通道启用哪些功能?

  • 将原始推送通知发送到运行Windows的任何设备上。 备用通道仅允许原始通知(但你仍然可以唤醒后台任务以本地显示 Toast 或磁贴通知)。
  • 允许应用为应用中的不同功能创建多个原始推送通道。 应用最多可以创建 1000 个备用通道,每个通道有效期为 30 天。 每个通道都可以由应用单独管理或撤销。
  • 可以在不向Microsoft Store注册应用的情况下创建备用推送通道。 如果你的应用将在设备上安装而不在Microsoft Store中注册它,它仍将能够接收推送通知。
  • 服务器可以使用 W3C 标准 REST API 和 VAPID 协议推送通知。 备用通道使用 W3C 标准协议,这样就可以简化需要维护的服务器逻辑。
  • 完整、端到端的消息加密。 虽然主通道在传输过程中提供加密,但如果你想要额外的安全,备用通道使你的应用能够传递加密标头来保护消息。

备用通道的限制

  • 应用的服务器无法发送推送通知提示、磁贴或徽章类型的通知。 只能发送推送原始通知。 应用仍可从后台任务发送本地通知。
  • 需要不同于主要或辅助磁贴通道的 REST API。 使用标准 W3C REST API 意味着您的应用需要采用不同的逻辑来发送推送通知或磁贴更新。

创建备用通道

PushNotificationChannel webChannel = 
	await PushNotificationChannelManager.GetDefault().CreateRawPushNotificationChannelWithAlternateKeyForApplicationAsync(applicationServerKey, appChannelId);

通道类型比较

下面是不同类型的通道之间的快速比较:

Type 推送通知弹窗? 推送磁贴/锁屏提醒? 推送原始通知? Authentication API 是否需要商城注册? Channels Encryption
Primary Yes 是,仅限于主磁贴 Yes OAuth WNS REST API Yes 每个应用一个 运输中
辅助磁贴 No 是 - 仅限次级磁贴 No OAuth WNS REST API Yes 每个辅助磁贴一个 运输中
Alternate No No Yes VAPID WebPush W3C 标准 No 每个应用 1,000 个 在传输和端到端加密中,标头传递是可能的(需要应用代码)

选择正确的通道

一般情况下,我们建议在应用中使用主通道,但有一些例外情况:

  1. 如果要将磁贴更新推送到辅助磁贴,请使用辅助磁贴推送通道。
  2. 如果要将通道传递给其他服务(例如在浏览器的情况下),请使用备用通道。
  3. 如果要创建未在Windows应用商店(如 LOB 应用)中列出的应用,请使用备用通道。
  4. 如果服务器上存在要重复使用或需要后端服务中的多个通道的现有 Web 推送代码,请使用备用通道。