2017-02-09 1 views
0

Ich machte eine Toast-Benachrichtigung, die eine Schaltfläche enthält, die im Hintergrund aktiviert werden kann. Das ist das XML des Toasts was ich gemacht habe und das screenshot.UWP: ToastNotificationActionTriggerDetail in Javascript verwenden

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

Und ich auch Hintergrundaufgabe registriert Code ausgeführt werden, wenn das ‚Ausführen‘ Taste wie diese angeklickt:

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

Mein Ziel ist es, die Kette von ausgelösten Aktion in dem Toast (in diesem Fall zu erhalten "RunTest" ist derjenige, der zu bekommen). Es scheint, als ob ich Windows.UI.Notifications.ToastNotificationActionTriggerDetail verwenden muss, aber als ich backgroundTask.js aufgerufen habe, wurde ein Fehler ausgegeben: Typ ist nicht erstellbar. Außerdem habe ich versucht, Windows.UI.WebUI.WebUIToastNotificationActivatedEventArgs zu verwenden, aber das warf auch einen Fehler [Object Object].

Ich habe gegooglet und es gab ein Beispiel, wie man das in C#, nicht 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 
     } 
    } 
} 

Ich weiß, dass ich backgroundTask.js mit backgroundTask.cs und verwenden C# ersetzen kann Hintergrundaufgabe zu schreiben, aber ich will Javascript verwenden, wenn möglich.

Wie kann ich das Argument der Toast-Benachrichtigung erhalten, wenn es im Hintergrund aktiviert wird?

Antwort

0

Ich habe gefunden, wie man auf das Argument des Toasts zugreift. Es kann unter Windows.UI.WebUI.WebUIBackgroundTaskInstance.current.triggerDetails.argument zugegriffen werden.

+0

Das ist großartig. Diese Antwort wird anderen Community-Mitgliedern hilfreich sein. –

Verwandte Themen