[英]Send silent toast from background agent in Windows Phone 8.1 Silverlight
[英]Windows Phone Silverlight 8.1 background agent
我正在用C#开发Silverlight 8.1应用程序。 我想在后台定期任务中使用一些旧的电话API,因此无法使用新的IBackgroundTask RT接口。
我创建了一个具有OnInvoke覆盖的旧式背景代理,然后像以前一样在WMAppManifest.xml中进行了注册: <ExtendedTask Name="BackgroundTask"> <BackgroundServiceAgent Specifier="ScheduledTaskAgent" Name="BackgroundAgent" Source="BackgroundAgent" Type="BackgroundAgent.ScheduledAgent" /> </ExtendedTask>
其中BackgroundAgent是我的背景代理程序库,而ScheduledAgent是我的类。
我已在Package.appxmanifest中为该应用程序启用Toast通知。 我的通知系统是WNS(在WMAppManifest中)。
我正在尝试以旧派方式启动任务:
BackgroundExecutionManager.RequestAccessAsync();
var periodicTask = ScheduledActionService.Find("BackgroundTask");
if (periodicTask != null)
{
ScheduledActionService.Remove("BackgroundTask");
}
periodicTask = new PeriodicTask("BackgroundTask");
(periodicTask as ScheduledTask).Description = "Hello, world.";
ScheduledActionService.Add(periodicTask);
ScheduledActionService.LaunchForTest("BackgroundTask", TimeSpan.FromSeconds(60));
在MainPage.xaml.cs的OnNavigatedTo方法内。
我可以看到这段代码正在运行。
但是,我从来没有看到任何代码在我的后台代理中运行-它应该向我发送敬酒(我对基于XML的敬酒尝试了ShellToast和新的ToastNotificationManager)并进行了http调用-两者都不发生。
我观看了Build™视频,他们提到在Silverlight 8.1应用程序中应该完全支持后台代理。
我还可以确认我的应用在Battery Saver设置中显示为“允许”,这表明后台代理已在os中注册。
我究竟做错了什么?
我认为您需要在Package.appxmanifest中具有“系统事件”类型的后台任务,入口点为“ AgHost.BackgroundTask”。 这就是在WP8.1 SL应用程序中托管SL后台代理的原因。 如果清单文件中没有此任务,请自己添加它,然后查看它可以解决您的问题。
更新
根据我的经验,“系统事件”类型应该可以工作,但是zaitsman说他需要使用“计时器”,因此,如果第一个对您不起作用,请尝试另一个。
更新2
换句话说,您需要具备以下条件:
<Extensions>
<Extension Category="windows.backgroundTasks" EntryPoint="AgHost.BackgroundTask">
<BackgroundTasks>
<Task Type="systemEvent" />
<Task Type="timer" />
</BackgroundTasks>
</Extension>
</Extensions>
WP 8.1 SL应用程序的Package.appxmanifest文件的Application标签(不要与WMAppManifest.xml混淆)中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.