2017-02-09 79 views
0

我做了一个敬酒通知,其中包含一个可在后台激活的按钮。这是我做的烤面包和screenshot的XML。UWP:在javascript中使用ToastNotificationActionTriggerDetail

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

而且我也注册后台任务运行的代码时,“运行”按钮,点击是这样的:

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

我的目标是让触发的操作在敬酒字符串(在这种情况下, ,“runtest”是获得的)。好像我需要使用Windows.UI.Notifications.ToastNotificationActionTriggerDetail,但是当我在backgroundTask.js中调用它时,它会抛出一个错误:类型不可构造。另外,我已经尝试过使用Windows.UI.WebUI.WebUIToastNotificationActivatedEventArgs,但是也抛出了一个错误[object Object]

我已经使用Google搜索,并且有一个示例如何在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。

如何在后台激活时获得吐司通知的参数?

回答

0

我发现如何访问敬酒的论点。它可以在Windows.UI.WebUI.WebUIBackgroundTaskInstance.current.triggerDetails.argument访问。

+0

太好了。这个答案对其他社区成员会有帮助。 –