我正在使用BackgroundUploader上传视频,即使app在后台,我也需要在上传完成时显示通知。 为此,我上传成功时使用吐司通知,它的工作,但只有当应用程序在前台(活动)时,否则它显示我通过点击激活应用程序。我认为这是因为应用程序状态暂停。 我的代码是 -
if (response.StatusCode == 200)
{
ToastTemplateType toastTemplate = ToastTemplateType.ToastText01;
XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(toastTemplate);
XmlNodeList toastTextElements = toastXml.GetElementsByTagName("text");
toastTextElements[0].AppendChild(toastXml.CreateTextNode("Video uploaded"));
ToastNotification toast = new ToastNotification(toastXml);
ToastNotificationManager.CreateToastNotifier().Show(toast);
//some more work here
}
现在我正在尝试注册后台任务,在视频上传完成后显示通知和其他一些小事。
在哪里注册后台任务以及我应该使用什么触发器?
或者是否有其他可能的解决办法?
更新 -
我正在使用fallowing代码向后台任务注册定时器触发器
string name = "UploadSuccess";
bool registered = false;
foreach (var task in BackgroundTaskRegistration.AllTasks)
{
//task.Value.Unregister(true);
if (task.Value.Name.Equals(name))
registered = true;
}
if (registered == false)
{
var builder = new BackgroundTaskBuilder();
builder.Name = name;
builder.TaskEntryPoint = "VideoUploadSuccessTask.UploadSuccess";
TimeTrigger t = new TimeTrigger(15, false);
builder.SetTrigger(t);
//builder.SetTrigger(new SystemTrigger(SystemTriggerType.ServicingComplete, false));
var ret = builder.Register();
}
它在调试时工作但从不自动触发:(
答案 0 :(得分:0)
在Windows 8中,在后台任务涉及的最佳位置是计时器触发器,但这只能提供15分钟的分辨率。对于这种情况,这是一个已知的缺陷。
幸运的是,它在Windows 8.1中得到了解决,其中BackgroundTransfer API允许您配置在传输完成时显示的Toast通知。请参阅BackgroundUploader.SuccessToastNotification和FailureToastNotification属性。
我在免费电子书second edition preview的第4章中详细讨论了这个问题。