我试图为 wp8.1 上的原始通知实现后台任务。
我阅读了 MSDN 和其他 Internet 资源上的文档。
我的应用程序正在使用附加的调试器。如果应用程序处于前台、后台,即使锁定屏幕已激活,也会处理原始消息。
但是,停止调试器会话并直接在设备上调用应用程序,如果应用程序仅在前台,则处理原始消息。不在后台,也不在锁定屏幕上。
我做了什么:
为我的后台任务生成了一个项目
public void Run(IBackgroundTaskInstance taskInstance)
基于一些 Microsoft 示例
设置应用清单文件中的条目(声明、推送通知、设置实例)
使用以下代码创建后台任务并打开频道
BackgroundAccessStatus status = await BackgroundExecutionManager.RequestAccessAsync();
PushNotificationChannel newChannel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();
string uri = newChannel.Uri;
rawChannel = newChannel;
rawChannel.PushNotificationReceived += OnPushNotificationReceived;
BackgroundTaskBuilder taskBuilder = new BackgroundTaskBuilder();
PushNotificationTrigger trigger = new PushNotificationTrigger();
taskBuilder.SetTrigger(trigger);
taskBuilder.TaskEntryPoint = "BPRERAW.clsRaw";
taskBuilder.Name = "clsRaw";
BackgroundTaskRegistration task = taskBuilder.Register();
在启动时将断点放入后台类中,该断点未处于活动状态。如上所述设置推送通知触发器,断点被标记为活动。
!!通过接收未到达断点的原始消息在调试器中测试应用程序!!我花了几个小时在这上面,但没有找到任何解决方案。
所以我只用相关代码开始了一个小测试项目。将后台任务的触发器更改为系统触发器后,该任务在生命周期下拉列表中可用。任务类中的断点被命中。
切换回推送通知任务,断点未命中。原始后台任务在生命周期下拉列表中永远不可见!我认为这是主要问题。
希望有人有提示或想法。
谢谢,奥利弗