2016-12-26 1 views
1

Toast notification a un "bouton de fermeture" dans le coin supérieur droit.Je veux obtenir l'heure actuelle lorsque l'utilisateur cliquez sur ce "bouton de fermeture" et ajouter l'heure dans le fichier texte dans l'application UWP.Arrière-plan Tâche d'enregistrer l'heure et de l'écrire dans le fichier dans l'application UWP

J'ai essayé avec ToastNotificationHistoryChangedTrigger lors de l'enregistrement de la tâche de fond Mais dans LifeCycleEvents de Visual Studio, il ne montre aucun événement et le code est exécuté sans erreur.

builder.Name = "Sample"; 
    builder.TaskEntryPoint = "BackgroundTaskGps.SampleBackgroundTask"; 
    builder.SetTrigger(new T ToastNotificationHistoryChangedTrigger()); 

    BackgroundTaskRegistration taskRegistration = builder.Register(); 

et dans le manifeste

<Extensions> 
    <Extension Category="windows.backgroundTasks" EntryPoint="BackgroundTaskGps.SampleBackgroundTask"> 
     <BackgroundTasks> 
     <Task Type="System Event" /> 
     </BackgroundTasks> 
    </Extension> 
    </Extensions> 

est-il une autre façon de ce achive.

Répondre

1

J'ai essayé avec ToastNotificationHistoryChangedTrigger lors de l'enregistrement tâche de fond Mais LifeCycleEvents en studio visuel, il ne montre aucun événement

Selon this article:

Le débogueur peut déclencher uniquement les événements qui ne contiennent pas de données, telles que les événements qui indiquent un changement d'état dans l'appareil. Vous devez déclencher manuellement les tâches d'arrière-plan qui nécessitent des entrées de l'utilisateur ou d'autres données.

Le ToastNotificationHistoryChangedTrigger exige que l'utilisateur ferme la notification afin qu'elle ne puisse pas être déclenchée par le débogueur. Mais en réalité, cela fonctionne lorsque vous fermez la notification sur le centre d'action. Le notification official sample a une page de scénario sur HistoryChangedTrigger qui enregistre le ToastNotificationHistoryChangedTrigger et lorsque la notification dans le centre d'action est fermée par l'utilisateur, elle déclenchera une tâche de fond pour mettre à jour le badge de la tuile. Ajouter une logique d'écriture de fichier dans cette tâche en arrière-plan répondra à vos besoins. Code comme suit:

public async void Run(IBackgroundTaskInstance taskInstance) 
{ 
    var details = taskInstance.TriggerDetails as ToastNotificationHistoryChangedTriggerDetail; 
    if (details == null) 
     return; 
    StorageFolder localfolder = ApplicationData.Current.LocalFolder; 
    StorageFile tempfile = await localfolder.CreateFileAsync("temp.txt", CreationCollisionOption.ReplaceExisting); 
    await FileIO.WriteTextAsync(tempfile, "test time"); 
    ... 
    taskInstance.Progress = (uint)details.ChangeType; 
} 

Faites attention que ce déclencheur a travaillé pour la notification fermé du centre d'action, fermé directement en cas de notification poussée est pas pris en charge. Vous pouvez personnaliser un bouton dans le contenu de la notification pour essayer d'interagir avec l'utilisateur. Si vous souhaitez gérer l'activation à partir d'une notification de toast, veuillez vous reporter à Handling activation from a toast.

+0

Il ne se déclenche pas même si je ferme la notification toast et je veux obtenir le titre de la notification de toast dans la méthode Run. – Visnu