2016-12-26 6 views
1

В уведомлении тоста есть кнопка «закрыть» в верхнем правом углу. Я хочу получить текущее время, когда пользователь нажимает кнопку «закрыть» и добавляет время в текстовый файл в приложении UWP.Фоновая задача записать время и записать его в файл в приложении uwp

Я попытался с ToastNotificationHistoryChangedTrigger во время регистрации фоновой задачи. Но в LifeCycleEvents в visual studio он не показывает никаких событий, и код выполняется без каких-либо ошибок.

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

    BackgroundTaskRegistration taskRegistration = builder.Register(); 

и В манифесте

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

Есть ли другой способ для того чтобы достигнуть этого.

ответ

1

Я попытался с ToastNotificationHistoryChangedTrigger при регистрации фоновой задачи Но в LifeCycleEvents в визуальной студии он не показывает какие-либо события

По this article:

отладчик может вызвать только те события, которые не содержат данных, таких как события, которые указывают на изменение состояния устройства. Вам необходимо вручную инициировать фоновые задачи, требующие ввода пользователем или других данных.

ToastNotificationHistoryChangedTrigger требует, чтобы пользователь закрыл уведомление, чтобы он не мог быть запущен отладчиком. Но на самом деле это работает, когда вы закрываете уведомление в центре действий. notification official sample имеет страницу сценария около HistoryChangedTrigger, которая регистрирует ToastNotificationHistoryChangedTrigger, и когда уведомление в рабочем центре закрывается пользователем, оно вызывает фоновую задачу для обновления значка плитки. Добавление логики файла записи внутри этой фоновой задачи будет соответствовать вашим требованиям. Код нравится следующим образом:

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

Обратите внимание, что этот триггер работал уведомление закрыто от центра действий, закрыто непосредственно, когда уведомление толкая не поддерживается. Вы можете настроить кнопку в содержании уведомлений, чтобы попытаться взаимодействовать с пользователем. Если вы хотите обработать активацию из уведомления о тосте, обратитесь к Handling activation from a toast.

+0

Это не срабатывает, даже если я закрываю уведомление о тосте, и я хочу получить название тоста в методе «Выполнить». – Visnu

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

  • Нет связанных вопросов^_^