后台上传完成时显示通知

时间:2013-09-13 10:13:54

标签: c# notifications windows-store-apps background-transfer

我正在使用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();
            }

它在调试时工作但从不自动触发:(

1 个答案:

答案 0 :(得分:0)

在Windows 8中,在后台任务涉及的最佳位置是计时器触发器,但这只能提供15分钟的分辨率。对于这种情况,这是一个已知的缺陷。

幸运的是,它在Windows 8.1中得到了解决,其中BackgroundTransfer API允许您配置在传输完成时显示的Toast通知。请参阅BackgroundUploader.SuccessToastNotificationFailureToastNotification属性。

我在免费电子书second edition preview的第4章中详细讨论了这个问题。