语言: HTML | XAML

快速入门:在代码中使用 NotificationsExtensions 库 (HTML)

Applies to Windows and Windows Phone

注意  不使用 JavaScript?请参阅快速入门:在代码中使用 NotificationsExtensions 库 (XAML)

使用 NotificationsExtensions 对象模型库,可以提供磁贴、锁屏提醒和 Toast 通知 XML 模板内容,而无需使用 XML 文档对象模型 (DOM)。它将向你提供一种更简单明了且更直接的方法来提供通知内容。 当你在 Microsoft Visual Studio 中使用此库时,你可以获得下列好处:

  • IntelliSense 以对象属性的形式列出可用的标记和特性,因此对于元素和结构,不必查询架构文档
  • 工厂函数,通过该函数,你可以创建框架通知,然后你可以用你的内容填充该通知。
  • 一种在你的通知负载中包括多个磁贴大小的简化方式(这是最佳做法!)。
  • 一种对于查找和填充文本和图像特性有帮助的方法,之所以说有帮助,是因为它可以为你提供有关其目标用途、大小或模板中的位置的详细信息。

注意  NotificationsExtensions 库是根据 Microsoft Limited Public License (MS-LPL) 发布的。你可以在 Windows 应用商店应用或 Web 服务中重用该库,并且可以根据应用的需要对其进行自定义。

先决条件

说明

1. 获取 NotificationsExtensions 库

NotificationsExtensions 库包含在多个可下载的磁贴、Toast 和通知示例中,并且可以复制它们供自己使用。我们将在此过程中使用主要磁贴和锁屏提醒示例。

注意  NotificationsExtensions 是 C# 库,但是可以包含在 JavaScript、C#、C++ 和 Microsoft Visual Basic 项目中并与其结合使用。

  1. 从 Windows 开发人员中心下载应用磁贴和锁屏提醒示例
  2. 将“App tiles and badges sample.zip”文件解压到你选择的文件夹。
  3. 转至将示例解压缩到的文件夹。将 NotificationsExtensions 文件夹从示例复制到你自己的项目目录中,作为 project's .sln 文件的同级。

2. 将该库包含在你的项目中

  1. 启动 Visual Studio 并打开你的项目。
  2. 在项目资源管理器中,右键单击树顶部的解决方案。
  3. 依次选择“添加”、“现有项目”
  4. 在你的项目中导航到 NotificationsExtensions 文件夹,然后选择 NotificationsExtensions.csproj 文件。
  5. 在解决方案的每个项目中,右键单击“引用”,然后选择“添加引用”
  6. 在“引用管理器”的“解决方案”下,选择 NotificationsExtensions,然后单击“确定”。此时,NotificationsExtensions 就可以使用了。

注意  如果你不希望在你的解决方案中包含完整的 NotificationsExtensions 项目,则可以将 NotificationsExtensions 构建为独立项目,并在你的项目中仅包含 NotificationsExtensions.winmd 作为引用。

3. 将该库包含在你的应用服务器上

如果你使用 ASP.NET 将通知推送到 Windows 推送通知服务 (WNS),或者如果你实施 ASP.NET 服务来处理关于定期磁贴或锁屏提醒更新的请求,也可以在应用服务器代码中使用 NotificationsExtensions。唯一需要注意的是你必须在 NotificationsExtensions 项目属性中添加 WINRT_NOT_PRESENT 编译构建符号。

  1. 转至示例的解压缩目录。打开示例文件夹并将其 NotificationsExtensions 文件夹复制到你选择的新位置。
  2. 选择 NotificationsExtensions.csproj 文件可在 Visual Studio 中打开项目。
  3. 从“项目”菜单中,选择“NotificationsExtensions 属性”
  4. 将“输出类型”选择更改为“类库”可构建 DLL 文件。
  5. 同样在 NotificationsExtensions 属性中,选择“构建”选项卡。
  6. 在“常规”类别下,在“条件编译符号”框中添加“WINRT_NOT_PRESENT”。如果该框中已经包含其他符号,请在“WINRT_NOT_PRESENT”前面添加一个分号作为分隔符。

  7. 按 F7 或使用“生成 > 生成解决方案”以生成该项目。
  8. 将构建的 NotificationsExtensions.dll 文件从你的文件夹(在 \NotificationsExtensions\bin\Debug\ 下)复制到你的应用服务器代码中。

4. 在你的代码中使用该库

NotificationsExtensions 现在可以用作你的代码中的一个对象。它包含三个有名的命名空间:

  • BadgeContent
  • TileContent
  • ToastContent

这些内容类型中的每一个又包含表示每个类型的元素和属性的成员。

以下示例使用 NotificationsExtensions 将一个值分配给数字锁屏提醒,然后将其发送到磁贴。



var badgeContent = NotificationsExtensions.BadgeContent.BadgeNumericNotificationContent(85);
var badgeNotification = badgeContent.createNotification();

Windows.UI.Notifications.BadgeUpdateManager.createBadgeUpdaterForApplication().update(badgeNotification);

为了进行比较,以下示例使用 XML DOM 的直接操作显示相同过程(不包含 NotificationsExtensions)。



var notifications = Windows.UI.Notifications;                        
var badgeXml = notifications.BadgeUpdateManager.getTemplateContent(notifications.BadgeTemplateType.badgeNumber);
var badgeAttributes = badgeXml.getElementsByTagName("badge");
badgeAttributes[0].setAttribute("value", "85");
var badgeNotification = new notifications.BadgeNotification(badgeXml);

BadgeUpdateManager.createBadgeUpdaterForApplication().update(badgeNotification);

下一个示例使用 NotificationsExtensions 提供磁贴通知中的文本。第一步是使用 NotificationsExtensions TileContentFactory 函数,以根据特定模板创建一个对象。每个模板都有一个单独的创建函数;只需将单词“create”附加到模板名称中即可,如“createTileWide310x150ImageAndText01”。

然后,基于模板的对象将提供 IntelliSense 以显示适用于该模板的元素,这些元素将作为根据其函数(如 textHeading、textBodyWrap、textBody1 或 textColumn1Row4)命名的属性。这可以准确告知你正在分配的元素。

在将值分配给属性之后,请按照通常的方式发送磁贴通知。



var tileContent = NotificationsExtensions.TileContent.TileContentFactory.createTileSquare150x150Text01();

tileContent.textHeading.text = "Hello!";
tileContent.textBody1.text = "One";
tileContent.textBody2.text = "Two";
tileContent.textBody3.text = "Three";

var tileNotification = tileContent.createNotification();

Windows.UI.Notifications.TileUpdateManager.createTileUpdaterForApplication().update(tileNotification);

此示例使用 NotificationsExtentions 将文本和图像分配给通知。同文本一样,图像元素将显示为根据它们在模板中的函数(如 imageMain 和 imageSmallColumn2Row2)命名的属性。



var tileContent = NotificationsExtensions.TileContent.TileContentFactory.createTileWide310x150ImageAndText01();

tileContent.textCaptionWrap.text = "This tile notification uses ms-appx images";

tileContent.image.src = "ms-appx:///images/redWide.png";
tileContent.image.alt = "A red rectangle";

此示例使用 NotificationsExtensions 定义整个磁贴通知。这说明了此库的一个特质—向负载添加模板大小时采用的顺序非常重要。

  • 小模板(square71x71—仅限 Windows Phone 8.1)仅可以添加到中型模板。
  • 中型模板 (square150x150) 仅可以添加到长方形模板。
  • 长方形模板仅可以添加到大型(square310x310—仅限 Windows)模板。

如果你尝试采用不同的顺序执行此操作,你将发现所需的属性不可用。



var tileLargeContent = NotificationsExtensions.TileContent.TileContentFactory.createTileSquare310x310Text09();
tileLargeContent.textHeadingWrap.text = "Lorem ipsum dolor sit amet, consectetur";
tileLargeContent.textHeading1.text = "Lorem ipsumo";
tileLargeContent.textHeading2.text = "Lorem ipsumo";
tileLargeContent.textBody1.text = "VivAmus tincidunt convallis urn";
tileLargeContent.textBody2.text = "VivAmus tincidunt convallis urn";

var tileWideContent = NotificationsExtensions.TileContent.TileContentFactory.createTileWide310x150Text04();
tileWideContent.textBodyWrap.text = "Lorem ipsum dolor sit amet, consectetur";

var tileMediumContent = NotificationsExtensions.TileContent.TileContentFactory.createTileSquare150x150Block();
tileMediumContent.textBlock.text = "24";
tileMediumContent.textSubBlock.text = "Aliquam";
        
tileWideContent.square150x150Content = tileMediumContent;
tileLargeContent.wide310x150Content = tileWideContent;

var tileNotification = tileLargeContent.createNotification();

Windows.UI.Notifications.TileUpdateManager.createTileUpdaterForApplication().update(tileNotification);

此示例使用 NotificationsExtensions 为 Toast 通知提供内容,包括文本、图像、音频、持续时间和启动参数。



var toastContent = NotificationsExtensions.ToastContent.ToastContentFactory.createToastImageAndText01();

toastContent.textBodyWrap.text = "Lorem ipsum dolor sit amet";

toastContent.image.src = "ms-appx:///images/redWide.png";
toastContent.image.alt = "A red rectangle";

toastContent.audio.content = NotificationsExtensions.ToastContent.ToastAudioContent.loopingAlarm;
toastContent.audio.loop = true;

toastContent.duration = NotificationsExtensions.ToastContent.ToastDuration.long;

toastContent.launch = '{"type":"toast","param1":"12345","param2":"67890"}';

var toast = toastContent.createNotification();
Windows.UI.Notifications.ToastNotificationManager.createToastNotifier().show(toast);

摘要

本主题介绍了如何使用 NotificationsExtensions 简化锁屏提醒、磁贴和 Toast 通知的创建过程。与直接处理 XML DOM 相比,此模板填充方式更加简单。

 

 

显示:
© 2014 Microsoft