如何使用通知队列 (HTML)
[ 本文适用于编写 Windows 运行时应用的 Windows 8.x 和 Windows Phone 8.x 开发人员。如果你要针对 Windows 10 进行开发,请参阅 最新文档 ]
注意 不使用 JavaScript?请参阅如何使用通知队列 (XAML)。
此主题显示了如何在磁贴上启用通知队列(在这种情况下为使用本地通知)。该主题还显示了如何在发送通知前标记通知,如何避免队列中出现重复或过期内容。启用通知队列时,Windows 将最多循环 5 个通知。
要查看本快速入门中提供的 JavaScript 示例的 C#、C++ 或 Visual Basic 版本,请参阅如何使用通知队列(C#、C++ 或 Visual Basic)。
注意 在此快速入门中,你将直接通过 XML 文档对象模型 (DOM) 操作通知内容。通过 NotificationsExtensions 库可获得一种可选方法,该库将 XML 内容作为对象属性(包括 Intellisense)提供。有关详细信息,请参阅快速入门:在代码中使用 NotificationsExtensions 库。要查看此快速入门中使用 NotificationsExtenstions 表示的代码,请参阅应用磁贴和锁屏提醒示例。
你需要了解的内容
技术
- Windows Runtime
先决条件
要理解本主题,你将需要:
- 了解磁贴和通知术语及概念。有关详细信息,请参阅磁贴、锁屏提醒以及通知。
- 熟悉磁贴 XML 架构。有关详细信息,请参阅磁贴架构。
- 能够使用 Windows 运行时 API 创建使用 JavaScript 的基本 Windows 应用商店应用。有关详细信息,请参阅创建第一个采用 JavaScript 的 Windows 应用商店应用。
- 你的应用的一个现有默认磁贴(在你的应用清单中定义)。有关详细信息,请参阅快速入门:使用 Microsoft Visual Studio 清单编辑器创建默认磁贴。
- 熟悉 XML 及其通过文档对象模型 (DOM) API 的操作。
说明
步骤 1: 可选:声明命名空间变量
此步骤为你提供一个短名称,用于替换完全命名空间名称。它等同于 C# 中的“using”语句或 Visual Basic 中的“Imports”语句,使用它可以简化你的代码。
注意 此快速入门中的剩余代码假定已声明此变量。
var notifications = Windows.UI.Notifications;
步骤 2: 设置选项以启用通知循环
此代码为你的应用启用通知队列。运行应用时,仅需要发起此调用一次,但再次调用也无妨。建议你在你的应用的初始化代码中放置此次调用。这样可确保在你采用本地方式更新磁贴、请求推送通知通道,或开始对磁贴进行定期更新之前发起此次调用。
notifications.TileUpdateManager.createTileUpdaterForApplication().enableNotificationQueue(true);
步骤 3: 创建磁贴通知
这是所有磁贴通知中的第一步且这种情形与其他任何情形没有区别,此处包含该步骤仅用于完整性。有关详细信息,请参阅快速入门:发送磁贴更新。
注意 在 Windows 8 系统中调用 getTemplateContent 时,它会返回版本 1 模板。在 Windows 8.1 系统中调用此方法时,它会返回版本 2 模板或版本 3 模板(仅适用于电话模板的情况下)。但是,如果应用在其清单中指定了 Windows 8 兼容性,则无论 Windows 是什么版本,该方法都会返回版本 1 模板。本主题中使用版本 2 模板。
var template = notifications.TileTemplateType.tileWide310x150ImageAndText01;
var tileXml = notifications.TileUpdateManager.getTemplateContent(template);
// TO DO: Fill in the template with your tile content. Define a tile and add it to tileXML.
var tileNotification = new notifications.TileNotification(tileXml);
步骤 4: 可选:为通知赋予标记
标记为不超过 16 个字母数字字符的字符串加上终止 NULL 字符,用于唯一标识应用中的通知。
启用队列时,最多可在磁贴上自动循环显示五个磁贴通知。默认情况下,队列中通知的替换策略是先进先出 (FIFO);当队列排满且到达新通知时,最早的通知将被删除。请注意,通知显示顺序不遵守严格的线性模式。用户可看到通知的顺序与其到达时的顺序并不相同。
若要覆盖 FIFO 队列行为,则可以为通知赋予标记。如果到达的新通知与现有通知拥有相同的标记,则新通知将替换现有通知,而不管现有通知在队列中位于何处。例如,如果你的磁贴显示股票价格,而你希望显示最新的信息。使用标记替换队列中的通知是可选项。
有关对通知队列使用标记的详细信息,请参阅使用通知队列。下例展示如何为本地通知设置标记。有关为定期更新设置标记的信息,请参阅 Tileupdater.startPeriodicUpdateBatch。有关为推送通知设置标记的信息,请参阅推送通知服务请求和响应头。
tileNotification.tag = "stockMSFT";
步骤 5: 向磁贴发送通知
notifications.TileUpdateManager.createTileUpdaterForApplication().update(tileNotification);