WP8.1 / Background Task for Raw Notify / Debugger OK -> NOT on Device
我试图为 wp8.1 上的原始通知实现后台任务。
我阅读了 MSDN 和其他 Internet 资源上的文档。
我的应用程序正在使用附加的调试器。如果应用程序处于前台、后台,即使锁定屏幕已激活,也会处理原始消息。
但是,停止调试器会话并直接在设备上调用应用程序,如果应用程序仅在前台,则处理原始消息。不在后台,也不在锁定屏幕上。
我做了什么:
为我的后台任务生成了一个项目
1
|
public void Run(IBackgroundTaskInstance taskInstance)
|
基于一些 Microsoft 示例
在应用清单文件中设置入口(声明、推送通知、设置实例)
使用以下代码创建后台任务并打开频道
1
2 3 4 5 6 7 8 9 10 11 12 13 |
BackgroundAccessStatus status = await BackgroundExecutionManager.RequestAccessAsync(); PushNotificationChannel newChannel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync(); string uri = newChannel.Uri; rawChannel = newChannel; rawChannel.PushNotificationReceived += OnPushNotificationReceived; BackgroundTaskBuilder taskBuilder = new BackgroundTaskBuilder(); taskBuilder.TaskEntryPoint ="BPRERAW.clsRaw"; |
在启动时将断点放入后台类中,该断点未激活。
如上所述设置推送通知触发器,断点被标记为活动。
!!通过接收未到达断点的原始消息在调试器中测试应用程序!!我花了几个小时在这上面,但没有找到任何解决方案。
所以我只使用相关代码开始了一个小型测试项目。将后台任务的触发器更改为系统触发器后,该任务在生命周期下拉列表中可用。任务类中的断点被命中。
切换回推送通知任务,断点未命中。原始后台任务在生命周期下拉列表中永远不可见!我认为这是主要问题。
希望任何人有一个提示或想法。
谢谢,
奥利弗
从 MSDN 站点,您无法在使用 PushNotificationTrigger 时调试 BackgroundTask。
Trigger the background task using the suspend drop down menu available in the Debug Location toolbar. This drop down shows the names of the background tasks that can be activated by Visual Studio.
For this to work, the background task must already be registered and it must still be waiting for the trigger. For example, if a background task was registered with a one-shot TimeTrigger and that trigger has already fired, launching the task through Visual Studio will have no effect.
Note Background tasks using the ControlChannelTrigger orPushNotificationTrigger , and background tasks using a SystemTrigger with the SmsReceived trigger type, cannot be activated in this manner.
https://msdn.microsoft.com/en-us/library/windows/apps/jj542415.aspx
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/269515.html