我尝试在wp8.1上实现原始通知的后台任务。
我阅读了有关MSDN和其他互联网资源的文档。
我的应用程序正在使用附加的调试器。如果应用程序位于前台,后台以及即使锁定屏幕已激活,也会处理原始消息。
但是,停止调试器会话并直接在设备上调用应用程序,如果应用程序仅在前台,则处理原始消息。 不在后台,不在锁定屏幕。
我做了什么:
为我的后台任务生成项目
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();
在启动时将断点放入后台类中,断点不活动。 如上所述设置推送通知触发器,断点被标记为活动。
!!通过接收原始消息来测试调试器中的应用程序未达到断点!我花了好几个小时,但没有找到任何解决方案。
因此,我只使用相关代码启动一个小型测试项目。将后台任务的触发器更改为系统触发器后,该任务在生命周期下拉列表中可用。任务类中的断点被击中。
切换回推送通知任务,未点击断点。原始后台任务在生命周期下拉列表中永远不可见!我认为这是主要问题。
希望任何人都有一个提示或想法。
谢谢, 奥利弗
答案 0 :(得分:1)
从MSDN站点,使用PushNotificationTrigger时无法调试BackgroundTask。
使用“调试位置”工具栏中提供的“挂起”下拉菜单触发后台任务。此下拉列表显示可由Visual Studio激活的后台任务的名称。 为此,后台任务必须已经注册,并且仍然必须等待触发器。例如,如果使用一次性TimeTrigger注册后台任务并且该触发器已经触发,则通过Visual Studio启动任务将不起作用。
Note
使用ControlChannelTrigger或PushNotificationTrigger
的后台任务以及使用带有SmsReceived触发器类型的SystemTrigger的后台任务无法以这种方式激活。
https://msdn.microsoft.com/en-us/library/windows/apps/jj542415.aspx