2016-12-26 69 views
1

Toast通知在右上角有一個「關閉按鈕」。我想要獲取當前用戶單擊該「關閉按鈕」並將時間添加到UWP應用程序中的文本文件。後臺任務記錄時間,並將其寫入uwp應用程序中的文件

我試圖與ToastNotificationHistoryChangedTrigger在註冊後臺任務,但在Visual Studio LifeCycleEvents它不顯示任何事件和代碼沒有任何錯誤執行。

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試圖在註冊後臺任務,但在Visual Studio 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

即使我關閉吐司通知,我也不會觸發,我想在Run方法中獲得吐司通知的標題。 – Visnu