快速入门:设置定期通知 (HTML)

[ 本文适用于编写 Windows 运行时应用的 Windows 8.x 和 Windows Phone 8.x 开发人员。如果你要针对 Windows 10 进行开发,请参阅 最新文档 ]

注意  不使用 JavaScript?请参阅快速入门:设置定期通知 (XAML)

 

我们建议所有已轮询通知都利用 X-WNS-Expires HTTP 响应头来设置一个显式过期时间。有关设置 X-WNS-Expires 的详细信息,请参阅 TileUpdater.StartPeriodicUpdateTileUpdater.StartPeriodicUpdateBatch

注意  在此快速入门中,你将直接通过 XML 文档对象模型 (DOM) 操作通知内容。通过 NotificationsExtensions 库可获得一种可选方法,该库将 XML 内容作为对象属性(包括 Intellisense)提供。有关详细信息,请参阅快速入门:在代码中使用 NotificationsExtensions 库。要查看此快速入门中使用 NotificationsExtenstions 表示的代码,请参阅推送和定期通知示例

 

先决条件

说明

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);

摘要和后续步骤

本快速入门指导你完成定期磁贴通知的设置。可以针对锁屏提醒使用同样的技术。

相关主题

推送和定期通知示例

定期通知指南

如何将通知队列与本地通知结合使用