2017-02-09 8 views
0

Я сделал уведомление тоста, которое содержит кнопку, которая может быть активирована в фоновом режиме. Это XML тоста, что я сделал, и screenshot.UWP: Использование ToastNotificationActionTriggerDetail в javascript

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

У меня googled, и был пример, как это сделать на 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.js с backgroundTask.cs и использовать C#, чтобы написать фоновую задачу, но я хочу использовать JavaScript, если это возможно.

Как я могу получить аргумент уведомления тоста при активации в фоновом режиме?

ответ

0

Я нашел, как получить доступ к аргументу тоста. Доступ к нему можно получить по адресу: Windows.UI.WebUI.WebUIBackgroundTaskInstance.current.triggerDetails.argument.

+0

Это замечательно. Этот ответ будет полезен другим членам сообщества. –

Смежные вопросы