Javascript WinJS应用程序,带有用于推送通知的C#后台任务

Javascript WinJS应用程序,带有用于推送通知的C#后台任务,javascript,c#,push-notification,windows-8.1,winjs,Javascript,C#,Push Notification,Windows 8.1,Winjs,我正在尝试为C#中的推送通知创建一个后台任务,该任务链接到一个winjs应用程序(在有人提出问题之前:在js中不这样做的原因是因为windows phone运行时存在错误,请参阅) 这是我的初稿: 但仍存在一些问题: 如何将其集成到我的winjs应用程序?添加为引用并将其添加到我的appxmanifest?或者我需要手动注册任务并像这样访问它吗 var task=new LibraryName.myPushNotificationBgTask() 当在appxmanifest中定义时,我可以

我正在尝试为C#中的推送通知创建一个后台任务,该任务链接到一个winjs应用程序(在有人提出问题之前:在js中不这样做的原因是因为windows phone运行时存在错误,请参阅)

这是我的初稿:

但仍存在一些问题:

  • 如何将其集成到我的winjs应用程序?添加为引用并将其添加到我的appxmanifest?或者我需要手动注册任务并像这样访问它吗

    var task=new LibraryName.myPushNotificationBgTask()

  • 当在appxmanifest中定义时,我可以访问与此backgroundtask相同的localsettings吗?单击引发的通知是否会导致打开(正确的)应用程序


提前谢谢

通常,您可以将C#后台任务项目作为同一VS解决方案的一部分,然后将JS应用程序项目中的引用添加到后台任务项目中

我建议永远不要从你的JS应用程序中实例化C#组件/类,因为这对于后台任务来说是不必要的,而且它应该避免拖累CLR的重量和相关的性能/内存成本等

在清单编辑器中,您需要为后台任务添加声明,并将“入口点”指定为“LibraryName.myPushNotificationBgTask”。不要为可执行文件或起始页字段指定任何内容

在JS代码中(可能在应用程序启动后不久),您将需要注册该任务。例如:

var bg = Windows.ApplicationModel.Background;
var taskBuilder = new bg.BackgroundTaskBuilder();
var trigger = new bg.PushNotificationTrigger();
taskBuilder.setTrigger(trigger);
// Must match class name and registration in the manifest
taskBuilder.taskEntryPoint = "LibraryName.myPushNotificationBgTask";
taskBuilder.name = "pushNotificationBgTask";
taskBuilder.register();
还有一些API用于枚举任务(以便您可以查看是否已经注册)、清除任务等。有一些不同的技术可以避免多次注册任务,但我猜您可以理解这一部分:-)

var bg = Windows.ApplicationModel.Background;
var taskBuilder = new bg.BackgroundTaskBuilder();
var trigger = new bg.PushNotificationTrigger();
taskBuilder.setTrigger(trigger);
// Must match class name and registration in the manifest
taskBuilder.taskEntryPoint = "LibraryName.myPushNotificationBgTask";
taskBuilder.name = "pushNotificationBgTask";
taskBuilder.register();