【问题标题】:Background Task to record time and write it into file in uwp application后台任务记录时间并将其写入 uwp 应用程序中的文件
【发布时间】:2017-08-16 00:03:56
【问题描述】:

Toast 通知在右上角有一个“关闭按钮”。我想在用户单击该“关闭按钮”时获取当前时间并将时间附加到 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>

还有其他方法可以实现吗?

【问题讨论】:

    标签: windows-store-apps win-universal-app


    【解决方案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;
    }
    

    注意此触发器适用于从操作中心关闭的通知,不支持推送通知时直接关闭。您可以在通知内容中自定义一个按钮来尝试与用户交互。如果您想通过 toast 通知处理激活,请参考 Handling activation from a toast

    【讨论】:

    • 即使我关闭了 toast 通知并且我想在 Run 方法中获取 toast 通知的标题,它也没有触发。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-17
    • 2019-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多