Я пытаюсь реализовать BackgroundTask для уведомлений о необработанных сообщениях в моих приложениях Windows и Windows Phone 8.1, но он, похоже, не работает. Мне удалось получить тосты на основе push-уведомлений, но, насколько я знаю, необработанное уведомление тихо перемещает данные в приложение, и приложение может отображать уведомление о тосте или обновлять плитку приложения.Использование уведомлений Raw Push в WNS
Я просмотрел образец BackgroundTask и следил за ним точно, но ничего не работает (https://code.msdn.microsoft.com/windowsapps/Background-Task-Sample-9209ade9).
Вот шаги, которые я взял
- создал проект Windows, время выполнения компонента в том же растворе, как и мои другие проекты (Called NotificationServer)
- Переименованный класс RawTask.cs и реализован
IBackgroundTask
и егоRun
метод создал метод для создания уведомления тост
частная пустота SendNotification (строка текста) { 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); }
Добавлен код метода Run
BackgroundTaskDeferral _deferral = taskInstance.GetDeferral();
RawNotification notification = (RawNotification)taskInstance.TriggerDetails; string content = notification.Content; // ... SendNotification("test"); // ... _deferral.Complete();
Обновленный манифест мое приложение к
Toast Capable = YES
иLock Screen Notifications = Badge
Добавлен декларацию для Задачи фона с
Supported Task Type = Push Notification
иEntry Point = NotificationServer.RawTask
Добавлена код для регистрации фоновой задачи
общественности статической BackgroundTaskRegistration RegisterBackgroundTask (строка taskEntryPoint, string taskName, IBackgroundTrigger trigger, IBackgroundCondition condition) { // // // Проверьте существующие регистрации этой фоновой задачи. //
foreach (var cur in BackgroundTaskRegistration.AllTasks) { if (cur.Value.Name == taskName) { // // The task is already registered. // return (BackgroundTaskRegistration)(cur.Value); } } // // Register the background task. // var builder = new BackgroundTaskBuilder(); builder.Name = taskName; builder.TaskEntryPoint = taskEntryPoint; builder.SetTrigger(trigger); if (condition != null) { builder.AddCondition(condition); } BackgroundTaskRegistration task = builder.Register(); return task; }
И выполняя его с
var reg = RegisterBackgroundTask("NotificationServer.RawTask", "RawNotifications", new PushNotificationTrigger(), null);
Есть ли что-то я здесь не хватает, кажется, не мое приложение будет реагировать на событие Push Notification. Я убедился, что мое приложение связано с приложением в магазине, и толкатели отправляются с правильной секретностью клиента и идентификатором приложения.
Hello @Sandeep. Я также придерживался той же проблемы. Вы нашли решение на этом. Пожалуйста, помогите мне. Благодаря! –