【问题标题】:How to use PushNotificationTrigger in Background Task in universal windows app如何在通用 Windows 应用程序的后台任务中使用推送通知触发器
【发布时间】:2016-07-05 14:45:28
【问题描述】:

我搜索了很多,但没有任何文档或示例可以帮助我在后台任务中使用 PushNotificationTrigger,就像我们使用 SystemTrigger 和 TimeTrigger 一样。

我想在我的应用关闭时收到 Toast 通知。通知即将发送到 Windows,但不知道如何在后台处理。 任何曾在 Universal windows 应用程序中处理 PushNotifications 的人请提供一些示例或文档来处理通知。

This is I am getting in Lifecycle Events 这是我用来注册任务的代码

if(!Windows.ApplicationModel.Background.BackgroundTaskRegistration.AllTasks.Any(i => i.Value.Name == "PushBackgroundTask"))
{
   var result = await BackgroundExecutionManager.RequestAccessAsync();
   var builder = new BackgroundTaskBuilder();
   builder.Name = "PushBackgroundTask";
   builder.TaskEntryPoint = typeof(NotificationActionBackgroundTask.NotificationActionBackgroundTask).FullName;
   builder.SetTrigger(new Windows.ApplicationModel.Background.PushNotificationTrigger());
   BackgroundTaskRegistration task = builder.Register();
}

谢谢

【问题讨论】:

    标签: windows-10-universal


    【解决方案1】:

    我想你在这里可能有点困惑。使用PushNotification时,服务器可以向您的设备推送4种通知:Toast, Tile, Badge and Raw Notification

    前三个通知将被通知中心接收并由系统处理。 Raw Notification 是一种不涉及 UI 的推送通知,其内容可以在应用的后台任务中使用。

    我想在我的应用关闭时收到 Toast 通知。

    所以不,如果您想在后台任务中使用PushNotificationTrigger 处理推送通知,您只能处理行通知。您可以参考PushNotificationTrigger class,该类表示一个对象,该对象在收到原始通知时调用应用程序上的后台工作项。

    与其他推送通知不同,原始通知没有指定格式。有效载荷的内容完全由应用定义。

    所以如果你推送了一个 toast 通知,你不需要在后台任务中处理它,它将由操作中心处理。但是您可以在后台任务中处理原始通知并手动对其进行烘烤。

    PushNotificaitonTriggerRaw notification的使用方法可以参考Raw notification overview,后台任务toast可以参考官方Notifications sample

    更新

    要使用生命周期事件调试项目,您可以查看以下屏幕截图:

    在调试的时候,你的应用生命周期依赖于vs工具,但是你可以点击这个红圈部分来调试你的应用生命周期。

    【讨论】:

    • 感谢 Grace,它确实帮助我理清了通知,现在我的概念很清楚了。
    • 但是现在又出现了一个问题,当我使用 PushNotificationTrigger 注册后台任务时,它在调试时没有向我显示 Visual Studio 中生命周期事件的任何后台任务。是因为后台任务没有正确注册吗?为什么总是在加载符号,而 VS 无法加载其中的许多符号并要求我上传(例如找不到 frameworkapplication.g.cpp)?你能帮帮我吗?
    • @AnkitSaini,你的意思是要调试后台任务?我将更新一个屏幕截图,向您展示如何使用生命周期事件进行调试。 “为什么总是在加载符号而VS无法加载其中的许多并要求我上传”,我不明白这一点。
    • Grace Feng,我更新了问题截图和我用来注册后台任务的代码,请看一下,我哪里做错了?
    • @AnkitSaini,我没有从您的代码中发现任何问题,您是否在应用程序清单中正确添加了声明?可以参考Create and register a background task。如果您对后台任务还有其他问题,请在 SO 上提出新问题,我们可以继续提供帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-28
    • 1970-01-01
    • 1970-01-01
    • 2011-08-15
    • 2017-03-04
    • 2021-06-30
    • 1970-01-01
    相关资源
    最近更新 更多