gpt4 book ai didi

javascript - 具有用于推送通知的 C# 后台任务的 WinJS 应用程序

转载 作者:行者123 更新时间:2023-11-29 19:26:23 26 4
gpt4 key购买 nike

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

这是我的初稿:

public sealed class myPushNotificationBgTask : IBackgroundTask {

public void Run(IBackgroundTaskInstance taskInstance)
{
RawNotification notification = (RawNotification)taskInstance.TriggerDetails;
string content = notification.Content;

Debug.WriteLine("received push notification from c# bg task!");

var settings = ApplicationData.Current.LocalSettings;
settings.Values["push"] = content;

raiseToastNotification(content);
}

private void raiseToastNotification(string text)
{
XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastText01);

XmlNodeList elements = toastXml.GetElementsByTagName("text");
foreach (IXmlNode node in elements){
node.InnerText = text;
}

ToastNotification notification = new ToastNotification(toastXml);
ToastNotificationManager.CreateToastNotifier().Show(notification);
}
}

但还有一些问题:

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

    var task = new LibraryName.myPushNotificationBgTask();

  • 当在 appxmanifest 中定义时,我可以使用此后台任务访问相同的本地设置吗?单击引发的通知会导致打开(正确的)应用程序吗?

提前致谢!

最佳答案

通常,您会通过将 C# 后台任务项目作为同一 VS 解决方案的一部分来执行此操作,然后将 JS 应用程序项目的引用添加到后台任务项目。

我建议不要从您的 JS 应用程序中实例化 C# 组件/类,因为这对于后台任务来说不是必需的,并且它应该避免不得不引入 CLR 和与性能/内存/等相关的成本。

在 list 编辑器中,您需要为后台任务添加声明,并将“入口点”指定为“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(因此您可以查看您是否已经注册了它/它们)、清除它们等。有一些不同的技术可以避免多次注册它们,但我猜您可以弄清楚那部分:-)

关于javascript - 具有用于推送通知的 C# 后台任务的 WinJS 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30551763/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com