通知中心概述

Azure 通知中心提供易用的基础结构,使你能够从任何后端(云中或本地)向任何移动平台发送移动推送通知。

借助通知中心,你可以轻松发送跨平台的个性化推送通知,提取不同平台通知系统 (PNS) 的详细信息。 只需 API 调用一次,就可以将通知发送到单个用户或包含数百万用户的整个受众群的所有设备上。

可以将通知中心用于企业和使用者方案。 例如:

  • 向数百万用户发送突发新闻通知且只会出现短暂的延迟(通知中心为所有 Windows 和 Windows Phone 设备上预安装的“必应”应用程序提供支持)。

  • 向用户群发送基于位置的优惠券。

  • 向体育/财经/游戏应用程序的用户或组发送事件通知。

  • 向用户通知企业事件,如新消息/电子邮件和销售商机。

  • 发送 Multi-Factor Authentication 所需的一次性密码。

什么是推送通知?

当发生事件时,智能手机和平板电脑能够“通知”用户。 在 Windows 应用商店和 Windows Phone 应用程序中,通知将导致 toast(屏幕的顶部出现一个无模式窗口),或者“开始”屏幕上的磁贴得到更新。 同样,在 Android 和 Apple iOS 设备上,通知在通知面板中分组显示,可轻松从屏幕顶部进行访问。

推送通知可帮助应用后端在移动设备上显示新信息,即使设备上的应用处于非活动状态也是如此。

推送通知是通过称为平台通知系统 (PNS) 的特定于平台的基础结构传递的。 PNS 提供骨架功能(也就是说,不支持广播或个性化),并且特定于平台的 PNS 没有通用接口。 例如,要向 Windows 应用商店应用发送通知,开发人员必须联系 WNS(Windows 通知服务)。 若要向 iOS 设备发送通知,同一开发人员需联系 APNS(Apple 推送通知服务),并再次发送消息。 此进程与 Windows Phone 8 和 Android 应用类似。

在较高层面上,所有平台通知系统都遵循相同的模式:

  1. 客户端应用程序联系 PNS 以检索其句柄。 句柄类型取决于系统。 对于 WNS,它是 URI 或“通知通道”。对于 APNS,它是一个令牌。

  2. 客户端应用程序将此句柄存储在应用后端中以供将来使用。 对于 WNS,该后端通常是一个云服务。 对于 Apple,该系统称为提供程序

  3. 要发送推送通知,应用后端需使用句柄联系 PNS,以定向到特定客户端应用程序的实例。

  4. PNS 将通知转发到句柄所指定的设备。

Notification Hubs

实现此流程所需的基础结构相当复杂,并且通常与应用的主要业务逻辑无关。 生成按需推送基础结构面临以下一些问题:

  • 平台相关性。 若要向不同平台上的设备发送通知,必须为后端中的多个接口编码。 不仅低层面的细节会有所不同,而且通知(磁贴、toast 或徽章)的呈现也与平台相关。 这些差异会导致后端代码变得复杂且难以维护。

  • 调整。 扩展此基础结构涉及两方面:

    • 根据 PNS 规定,每次启动应用程序时都必须刷新设备令牌。 这样,仅仅为了保持设备令牌处于最新状态,就需要消耗大量的流量(并因而导致大量的数据库访问)。 当设备数量增加(可能达到数百万台)时,创建和维护此基础架构的成本就非同小可了。

    • 大多数 PNS 不支持对多台设备进行广播。 正因如此,向数百万台设备进行一次广播会导致对 PNS 进行数百万次调用。 调整这些请求的能力非常重要,因为应用开发人员通常需要将总延迟保持在较低水平(例如,最后一台消息接收设备不应在通知已发送 30 分钟后才接收到通知,因为在许多情况下,这违背了发送推送通知的目的)。

  • 路由。 PNS 提供了一种将消息发送到设备的方法。 但是,在大多数应用中,通知将定向到用户和/或相关组(例如,分配到特定客户帐户的所有员工)。 正因如此,应用后端必须维护一个注册表,该注册表将相关组与设备令牌相关联,以便将通知路由到正确的设备。 这种开销增加了应用程序的总面市时间和维护成本。

  • 监控和遥测。 跟踪和聚合数百万条通知的结果非同小可,并且它通常是使用推送通知的任何解决方案的一个重要组成部分。

使用通知中心

通知中心消除了一个主要的复杂性:无需管理推送通知的挑战。 只需使用通知中心即可。 通知中心使用完整的多平台、向外扩展的推送通知基础结构,并显著减少了在应用程序后端运行的特定于推送的代码。 通知中心可实现推送基础结构的所有功能。 设备只负责注册 PNS 句柄,而后端负责将独立于平台的消息发送给用户或兴趣组,如下图中所示:

Notification Hubs

通知中心为推送基础架构提供了以下优势:

  • 多平台

    • 支持所有主要移动平台(Windows/Windows Phone、iOS、Android)。

    • 没有特定于平台的协议。 应用程序只与通知中心通信。

    • 设备句柄管理。 通知中心维护 PNS 的句柄注册表和反馈。

  • 适用于任何后端。 云或本地、.NET、PHP、Java、节点等。

  • 调整。 通知中心可以针对数百万台设备进行调整,而无需重新架构或分区。 在所有区域中可用。

  • 丰富的传送模式集。 将设备与表示逻辑用户或相关组的标记相关联。

    • 广播:只需单次 API 调用,即可向数百万台设备几乎同时地进行广播。

    • 单播/多播:推送到代表单个用户的标记,包括其所有设备;或更广泛的组;例如,平板电脑与手机) (单独的外形规格。

    • 分段:推送到由标记表达式定义的复杂段,例如,在洋基) 之后,纽约的设备 (。

  • 个性化。 每个设备都可以有一个或多个模板,以实现按设备本地化和个性化设置,而不会影响后端代码。

  • 安全性。 共享访问机密 (SAS) 或联合身份验证。

  • 丰富的遥测功能。 在门户中可用,并采用编程方式。

总结

  • 推送通知已成为所有现代应用程序必不可少的组成部分,因为它们能够提高用户应用程序的用户参与度,以及企业应用程序的效用。

  • 通知中心提供一个易用的多平台扩展型推送基础架构,大大减少了应用程序后端代码的编写和维护。

  • 可以通过任何后端(云或本地)使用通知中心,以将推送通知发送到所有主要移动平台(Windows/Windows Phone、iOS 和 Android)。

其他资源

客户如何使用通知中心

通知中心教程和指南

通知中心入门教程:

通知中心的相关 .NET 托管 API 参考位于此处:

Microsoft.WindowsAzure.Messaging.NotificationHub

Microsoft.ServiceBus.Notifications