如何处理来自 Toast 通知的激活 (HTML)

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

注意  不使用 JavaScript?请参阅如何处理来自 Toast 通知的激活 (XAML)

 

本主题演示为了响应用户单击从你的应用发送的 Toast 通知,你应该采取的操作。你的应用应当通过显示特定于 Toast 的 UI 来进行响应。你的应用通常应当在与 Toast 的内容相关的上下文或视图中启动。 这可以通过此 Toast 负载中包含的激活字符串来实现,该字符串随后会作为激活事件中的参数传递给你的应用。基本数据流如下所示:

  1. 该应用或 Web 服务创建并发送了 Toast 负载,包括启动字符串
  2. 该 Toast 将引发并/或发送到操作中心
  3. 用户选择该 Toast(单击或触摸)
  4. 将引发激活的事件
  5. 该应用的激活事件处理程序将读取启动字符串
  6. 将使用启动字符串提供的参数启动该应用

注意  通过 Microsoft Visual Studio 测试 Toast 通知代码功能时,你必须在 Windows x86、x64 或 Windows 运行时计算机上使用本地计算机或远程计算机调试设置。你无法使用 Visual Studio 模拟器调试功能选项—你的代码将在该模拟器中进行编译和运行,但不会显示 Toast。

 

你需要了解的内容

技术

  • Windows Runtime

先决条件

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

说明

步骤 1: 在你的 Toast 负载中包含激活数据

当通过 Toast 通知激活应用时,需要提供与此 Toast 内容有关的信息。然后,应用可以通过启动到关联的视图而不是默认视图来反映该内容。当应用或 Web 服务创建此 Toast 时,它使用 launch 特性来指定此激活信息。你可以将该字符串视为与命令行参数相似。该字符串能够包含可以由应用理解的任何信息,但前提是该信息不导致 XML 负载变为无效。请注意,Toast 的 XML 负载的总大小(包括启动字符串)不得超过 5 KB。

如果你未包含启动属性字符串,你的应用将正常启动,如同用户从“开始”屏幕启动它。

在此步骤中,我们假设以前创建了一个名为 toastXml 的 XmlDocument 对象。该示例创建 launch 属性,为它分配字符串值,然后将其添加到 Toast 通知的 XML 负载中。有关创建完整 Toast 通知的说明,请参阅快速入门:发送 Toast 通知


var launchAttribute = toastXml.createAttribute("launch");
launchAttribute.value = "{\"myContext\":\"12345\"}";
var toastNode = toastXml.selectSingleNode("/toast");
toastNode.attributes.setNamedItem(launchAttribute);

上面的代码根据快速入门:发送 Toast 通知中定义的 visual 元素的内容,导致以下 XML。


<toast launch="{&quot;myContext&quot;:&quot;12345&quot;}">
    <visual>
        <binding template="ToastImageAndText01">
            <image id="1" src="ms-appx:///images/redWide.png" alt="red graphic"/>
            <text id="1">Hello World!</text>
        </binding>
    </visual>
</toast>

步骤 2: 注册“已激活”事件

当用户单击你的 Toast 或通过触摸选择你的 Toast 时,会引发 activated 事件。必须通过 addEventListener 函数将此事件通知给应用。

注意  如果你在 Toast 中未包含启动特性字符串并且当选择此 Toast 时你的应用已在运行,则不会引发 activated 事件。

 

WinJS.Application.addEventListener("activated", onActivatedHandler, false);

步骤 3: 为你的 Toast 的“已激活”事件实现处理程序

已注册的事件处理程序会接收所有激活事件,无论激活类型如何。事件通知中包含的 kind 属性指示激活事件的类型。当用户单击在其 XML 负载中指定 launch 特性的 Toast 时,会引发类型为 launch 的激活事件。该事件与用户点击应用的主要磁贴或辅助磁贴时引发的事件相同。

通过步骤 1 中的 launch 特性提供的激活字符串包含在事件通知的 arguments 属性中。

该示例显示在步骤 2 中注册的激活事件处理程序。


function onActivatedHandler(args) {
    if (args.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.launch) {
        var launchString = args.detail.arguments;

        // Handle activation as required for your app, using the launch string.
    }
}

相关主题

Toast 通知示例

Windows.UI.Notifications API namespace

Toast 通知概述

Toast 通知指南和清单

快速入门:发送 Toast 通知

Toast 模板目录

Toast XML 架构