快速入门:设置定期通知 (HTML)
[ 本文适用于编写 Windows 运行时应用的 Windows 8.x 和 Windows Phone 8.x 开发人员。如果你要针对 Windows 10 进行开发,请参阅 最新文档 ]
注意 不使用 JavaScript?请参阅快速入门:设置定期通知 (XAML)。
我们建议所有已轮询通知都利用 X-WNS-Expires HTTP 响应头来设置一个显式过期时间。有关设置 X-WNS-Expires 的详细信息,请参阅 TileUpdater.StartPeriodicUpdate 或 TileUpdater.StartPeriodicUpdateBatch。
注意 在此快速入门中,你将直接通过 XML 文档对象模型 (DOM) 操作通知内容。通过 NotificationsExtensions 库可获得一种可选方法,该库将 XML 内容作为对象属性(包括 Intellisense)提供。有关详细信息,请参阅快速入门:在代码中使用 NotificationsExtensions 库。要查看此快速入门中使用 NotificationsExtenstions 表示的代码,请参阅推送和定期通知示例。
先决条件
- 了解磁贴和通知术语及概念。有关详细信息,请参阅磁贴、锁屏提醒以及通知。
- 了解定期(轮询)通知概念。有关详细信息,请参阅定期通知概述。
- 能够使用 Windows 运行时 API 创建使用 JavaScript 的基本 Windows 应用商店应用。有关详细信息,请参阅创建第一个采用 JavaScript 的 Windows 应用商店应用。
- 用于托管磁贴通知内容的 Web 服务。
说明
1. 创建或标识用于托管磁贴的 XML 内容的 Web 服务
Windows 会以指定的时间间隔为应用的更新磁贴内容轮询指定的 Web 服务。Web 服务必须支持 HTTP。对于测试,还可以设置 Web 服务,如本地计算机上用于测试 XML 的 Microsoft Internet Information Service (IIS)。
2. 将磁贴内容的 XML 文件放入可以访问 Web 的位置
Web 服务将托管磁贴 XML 内容。若要开始,请托管网站上此处显示的磁贴 XML。将此内容另存为名为 Tile.xml 的文件并将该文件放在服务器上可以访问 Web 的位置(例如,http://www.fabrikam.com/tile.xml)。XML 文档的内容必须使用 UTF-8 编码并符合磁贴架构。应至少按照指定轮询定期时间间隔的频率更新此 XML。
<tile>
<visual version="2">
<binding template="TileSquare150x150Text04" fallback="TileSquareText04">
<text id="1">Hello world!</text>
</binding>
</visual>
</tile>
3. 开始定期更新(单一 URL)
此示例显示了如何每小时开始轮询单一 URL 一次来为磁贴提供新内容。此代码使用之前定义的名为 polledUrl
的变量,该变量是指定要轮询的 URL 的一个字符串。
var notifications = Windows.UI.Notifications;
var recurrence = notifications.PeriodicUpdateRecurrence.hour;
var url = new Windows.Foundation.Uri(polledUrl);
notifications.TileUpdateManager.createTileUpdaterForApplication().startPeriodicUpdate(url, recurrence);
4. 开始定期更新(多个 URL)
作为前一个步骤的一种替代方法,Windows 可以轮询最多五个不同的 URL 来提供一组在磁贴的通知队列中循环的内容。
此示例显示了如何每小时轮询一次新内容的多个 URL。首先,你必须启用通知队列(如果先前未启用它)。请注意,对 enableNotificationQueue 的调用仅应该在用户安装应用或创建辅助磁贴之后进行一次。此示例代码使用某个称为 urisToPoll
的先前定义的变量,该变量是 Windows.Foundation.Uri 对象的一个数组。
注意 定期磁贴更新支持作为通知队列替换逻辑的一部分的磁贴通知标记。你的服务可以通过提供 X-WNS-Tag HTTP 响应头在每个通知上设置该标记。有关使用标记和通知队列的详细信息,请参阅如何借助本地通知使用通知队列。有关将 X-WNS-Tag HTTP 响应头与定期通知结合使用的详细信息,请参阅 TileUpdater.startPeriodicUpdateBatch。
var notifications = Windows.UI.Notifications;
var recurrence = notifications.PeriodicUpdateRecurrence.hour;
notifications.TileUpdateManager.createTileUpdaterForApplication().enableNotificationQueue(true);
notifications.TileUpdateManager.createTileUpdaterForApplication().startPeriodicUpdateBatch(urisToPoll, recurrence);
摘要和后续步骤
本快速入门指导你完成定期磁贴通知的设置。可以针对锁屏提醒使用同样的技术。