Показать уведомление о завершении фоновой загрузки
Я использую BackgroundUploader для загрузки видео, и мне нужно показать уведомление, когда загрузка завершена, даже если приложение находится в фоновом режиме. для этого я использовал всплывающее уведомление при успешной загрузке, оно работает, но только когда приложение находится на переднем плане (активном), в противном случае оно отображается, когда я активирую приложение, нажав. Я думаю, это из-за приостановленного состояния приложения. мой код
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
}
Теперь я пытаюсь зарегистрировать фоновую задачу, которая показывает уведомление и некоторые другие мелочи после завершения загрузки видео.
Где зарегистрировать фоновую задачу и какой триггер мне использовать?
или есть ли другое возможное решение для этого?
Обновить-
Я использую следующий код для регистрации таймера триггера с фоновой задачей
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 ответ
В Windows 8 лучшее, что вы можете сделать, когда дело касается фоновых задач, - это запуск по таймеру, но это дает вам разрешение всего 15 минут. Это известный недостаток для этого сценария.
К счастью, это решено в Windows 8.1, где API BackgroundTransfer позволяет настроить всплывающее уведомление, которое будет отображаться после завершения передачи. См. Свойства BackgroundUploader.SuccessToastNotification и FailureToastNotification.
Об этом я подробнее расскажу в главе 4 предварительного просмотра второго издания моей бесплатной электронной книги.