UWP:在 javascript 中使用 ToastNotificationActionTriggerDetail

UWP: Using ToastNotificationActionTriggerDetail in javascript

我制作了一个 toast 通知,其中包含一个可以在后台激活的按钮。这是我做的吐司的XML和screenshot.

<toast launch="reopen">
  <visual>
    <binding template="ToastGeneric">
      <text>Test</text>
      <text>An toast command test</text>
    </binding>
  </visual>
  <actions>
    <action content="Run" activationType="background" arguments="runtest"/>
  </actions>
</toast>

而且当 'Run' 按钮被点击时,我也将后台任务注册到 运行 代码:

var backgroundBox = Windows.ApplicationModel.Background;
backgroundBox.BackgroundExecutionManager.requestAccessAsync().then(function () {
    var taskBuilder = backgroundBox.BackgroundTaskBuilder();
    taskBuilder.taskEntryPoint = "js\backgroundTask.js";
    taskBuilder.name = "toastReportError";
    taskBuilder.setTrigger(new Windows.ApplicationModel.Background.ToastNotificationActionTrigger());
    return taskBuilder.register();
});

我的目标是获取 toast 中的触发操作字符串(在本例中,"runtest" 是要获取的字符串)。似乎我需要使用 Windows.UI.Notifications.ToastNotificationActionTriggerDetail,但是当我调用 backgroundTask.js 时,它抛出了一个错误:type is not constructible。另外,我试过使用 Windows.UI.WebUI.WebUIToastNotificationActivatedEventArgs,但这也引发了错误 [object Object]

我已经用谷歌搜索了,有一个如何在 C# 中执行此操作的示例,而不是 javascript。

public sealed class NotificationActionBackgroundTask : IBackgroundTask
{
    public void Run(IBackgroundTaskInstance taskInstance)
    {
        var details = taskInstance.TriggerDetails as ToastNotificationActionTriggerDetail;

        if (details != null)
        {
            string arguments = details.Argument;
            var userInput = details.UserInput;

            // Perform tasks
        }
    }
}

我知道我可以用backgroundTask.cs代替backgroundTask.js,用C#写后台任务,但我想尽可能用javascript

如何在后台激活时获取 toast 通知的参数?

我找到了如何访问 toast 的参数。可以在 Windows.UI.WebUI.WebUIBackgroundTaskInstance.current.triggerDetails.argument.

访问