2017-02-09 1 views
0

J'ai fait une notification toast qui contient un bouton qui peut être activé en arrière-plan. C'est le XML du toast que j'ai fait et le screenshot.UWP: Utilisation de ToastNotificationActionTriggerDetail dans 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> 
tâche

Je fond également enregistré pour exécuter du code lorsque le bouton « Exécuter » cliqué comme ceci:

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

Mon but est d'obtenir la chaîne d'action déclenchée dans le pain grillé (dans ce cas , "runtest" est celui à obtenir). Il semble que j'ai besoin d'utiliser Windows.UI.Notifications.ToastNotificationActionTriggerDetail, mais quand j'ai appelé backgroundTask.js, il a jeté une erreur: le type n'est pas constructible. En outre, j'ai essayé d'utiliser Windows.UI.WebUI.WebUIToastNotificationActivatedEventArgs, mais cela a également généré une erreur [objet objet].

J'ai cherché sur google et il y avait un exemple comment faire ceci en C#, pas 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 
     } 
    } 
} 

Je sais que je peux remplacer backgroundTask.js avec backgroundTask.cs et utiliser C# pour écrire tâche de fond, mais je veux utiliser javascript si possible.

Comment puis-je obtenir l'argument de la notification toast lorsqu'il est activé en arrière-plan?

Répondre

0

J'ai trouvé comment accéder à l'argument du toast. Il peut être consulté au Windows.UI.WebUI.WebUIBackgroundTaskInstance.current.triggerDetails.argument.

+0

C'est génial. Cette réponse sera utile aux autres membres de la communauté. –