快速入门:向辅助磁贴发送通知 (HTML)

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

注意  不使用 JavaScript?请参阅快速入门:向辅助磁贴发送通知 (XAML)

 

本快速入门介绍如何通过发送本地通知来更新应用的辅助磁贴。 你将看到向辅助磁贴发送通知与向应用的主磁贴发送通知基本相同,只是最后一步有所不同。这两个步骤之间的唯一差别就是,对于辅助磁贴,你使用特定于辅助磁贴的磁贴更新程序 (CreateTileUpdaterForSecondaryTile)。

要查看本主题中所提供代码的完整示例,请参阅辅助磁贴示例。此示例分别以 JavaScript、C#、C++ 和 Visual Basic 版本提供。

当应用启动时,它应当始终枚举它的辅助磁贴,以防它未感知所添加或删除的任何内容。当用户删除辅助磁贴时,Windows 只是删除该磁贴。应用本身负责释放由辅助磁贴使用的任何资源。当 Windows 通过云复制辅助磁贴时,当前磁盘或辅助磁贴上的锁屏提醒通知、计划通知、推送通知通道、与定期通知一起使用的统一资源标识符 (URI) 都不会随辅助磁贴一起复制,而且必须重新设置。

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

 

先决条件

要理解本主题,你将需要:

说明

1. 可选:声明命名空间变量

此步骤为你提供一个短名称,用于替换完全命名空间名称。它等同于 C# 中的“using”语句或 Visual Basic 中的“Imports”语句,使用它可以简化你的代码。

注意  此快速入门中的剩余代码假定已声明此变量。

 

var notifications = Windows.UI.Notifications;

2. 检索空的磁贴模板

可以对辅助磁贴使用任何磁贴模板。此处我们使用简单的仅文本的模板 TileWide310x150Text04


var wideTemplate = notifications.TileTemplateType.tileWide310x150Text04;                       
var tileXml = notifications.TileUpdateManager.getTemplateContent(wideTemplate);

3. 为通知指定文本

TileWide310x150Text04 模板包含一个文本元素,我们要为其分配字符串。


var tileTextAttributes = tileXml.getElementsByTagName("text");
tileTextAttributes[0].appendChild(tileXml.createTextNode("This text was delivered through a notification"));

4. 提供中等版本的通知

最佳做法是始终针对每个磁贴大小提供绑定,你的应用在已发送到磁贴的任何通知负载中支持这些大小。作为固定操作的一部分,用户可以选择从你提供的选项中选择辅助磁贴大小。在每个通知中针对各个大小选项提供绑定可确保无论磁贴大小如何都会显示你的通知。如果你还支持大型辅助磁贴,请重复此步骤,然后针对其中一个大型模板执行操作。

注意  所有磁贴(包括辅助磁贴)均作为中型磁贴固定在 Windows Phone 8.1 上,之后用户可以调整其大小。


var squareTemplate = notifications.TileTemplateType.tileSquare150x150Text04;                       
var squareTileXml = notifications.TileUpdateManager.getTemplateContent(squareTemplate);

var squareTileTextAttributes = squareTileXml.getElementsByTagName("text");
squareTileTextAttributes[0].appendChild(squareTileXml.createTextNode("This text was delivered through a notification"));

5. 将中等通知附加到加宽通知负载

var node = tileXml.importNode(squareTileXml.getElementsByTagName("binding").item(0), true);
tileXml.getElementsByTagName("visual").item(0).appendChild(node);

6. 将最终 XML 作为磁贴通知打包

var tileNotification = new notifications.TileNotification(tileXml);

7. 创建复制磁贴更新程序

到此步骤为止,该过程与标准的磁贴通知相同。但在此步骤中,我们使用特定于辅助磁贴的 createTileUpdaterForSecondaryTile 方法。该方法需要目标辅助磁贴的唯一 ID。在此示例中,我们假定 ID 存储在变量 appbarTileId 中的辅助磁贴当前已固定到“开始”屏幕。

var updater = notifications.TileUpdateManager.createTileUpdaterForSecondaryTile(appbarTileId);

8. 向辅助磁贴中发送通知

updater.update(tileNotification);

9. 可选:更新辅助磁贴的徽标

创建辅助磁贴时,你必须提供徽标图像。之所以称为徽标图像,是因为它通常显示应用的徽标,而且是收到任何通知之前显示在磁贴上的完整磁贴图像。如果通知被删除或者已过期,则磁贴会还原到徽标图像。在某些方案中,你可能希望更改默认的徽标图像,可能用于指示当你不希望发送完整的通知更新时固定内容的更改。此步骤介绍如何使用应用的本地存储中的图像更改 ID 存储在变量 appbarTileId 中的辅助磁贴的徽标。请注意,该示例引用 Windows.Foundation.Uri 类。


var tileToUpdate = new Windows.UI.StartScreen.SecondaryTile("SecondaryTile.01");
var uriUpdatedLogo = new Windows.Foundation.Uri("ms-appdata:///local/NewSecondaryTileDefault.png");
tileToUpdate.logo = uriUpdatedLogo;
tileToUpdate.updateAsync();

摘要和后续步骤

在本快速入门中,你向与你的应用关联的辅助磁贴中发送了一个通知。你已经看到,向应用的主要磁贴发送通知和向其辅助磁贴之一发送通知只有一个较小的差别。你还更新了辅助磁贴的默认徽标图像。

本快速入门将辅助磁贴更新作为本地通知发送。你还可以探索其他通知传递方法:已计划、定期和推送。有关详细信息,请参阅传送通知

相关主题

快速入门:固定辅助磁贴

快速入门:发送磁贴更新

辅助磁贴示例

辅助磁贴概述

辅助磁贴指南和清单

磁贴架构