Как использовать PushNotificationTrigger в фоновой задаче в универсальном приложении Windows

Я много искал, но не нашел никакой документации или примера, которые могли бы помочь мне использовать PushNotificationTrigger в фоновой задаче, как мы используем SystemTrigger и TimeTrigger.

Я хочу получать всплывающие уведомления, когда мое приложение закрыто. Уведомления приходят в окна, но не знаю, как с этим справиться в фоновом режиме. Любой, кто работал над Push-уведомлениями в универсальном приложении Windows, предоставьте образец или документ для обработки уведомлений.

Это я получаю в событиях жизненного цикла Это код, который я использую для регистрации задачи

if(!Windows.ApplicationModel.Background.BackgroundTaskRegistration.AllTasks.Any(i => i.Value.Name == "PushBackgroundTask"))
{
   var result = await BackgroundExecutionManager.RequestAccessAsync();
   var builder = new BackgroundTaskBuilder();
   builder.Name = "PushBackgroundTask";
   builder.TaskEntryPoint = typeof(NotificationActionBackgroundTask.NotificationActionBackgroundTask).FullName;
   builder.SetTrigger(new Windows.ApplicationModel.Background.PushNotificationTrigger());
   BackgroundTaskRegistration task = builder.Register();
}

Спасибо


person Ankit Saini    schedule 04.07.2016    source источник


Ответы (1)


Я думаю, вы можете быть немного смущены здесь. При использовании PushNotification сервер может отправлять на ваше устройство 4 типа уведомлений: Всплывающее уведомление, плитка, значок и необработанное уведомление.

Первые три уведомления будут получены Центром уведомлений и обработаны системой. Raw Notification — это push-уведомление, не связанное с пользовательским интерфейсом, его содержимое можно использовать в фоновой задаче приложения.

Я хочу получать всплывающие уведомления, когда мое приложение закрыто.

Так что нет, если вы хотите в фоновой задаче обрабатывать Push-уведомления с помощью PushNotificationTrigger, вы можете обрабатывать только уведомления строки. Вы можете обратиться к классу PushNotificationTrigger, этот класс представляет объект, который вызывает фоновый рабочий элемент в приложении в ответ на получение необработанного уведомления.

В отличие от других push-уведомлений, необработанные уведомления не имеют определенного формата. Содержимое полезной нагрузки полностью определяется приложением.

Поэтому, если вы отправляете всплывающее уведомление, вам не нужно обрабатывать его в фоновой задаче, оно будет обработано центром уведомлений. Но вы можете обработать необработанное уведомление в своей фоновой задаче и добавить его вручную.

Для получения информации о том, как использовать PushNotificaitonTrigger с Raw notification, вы можете обратиться к Обзор необработанных уведомлений, а всплывающие уведомления в фоновой задаче можно найти на официальном Образец уведомлений.

Обновить

Чтобы отладить проект с помощью событий жизненного цикла, вы можете взглянуть на следующий снимок экрана: введите здесь описание изображения

При отладке жизненный цикл вашего приложения зависит от инструмента vs, но вы можете щелкнуть этот красный кружок, чтобы отладить жизненный цикл вашего приложения.

person Grace Feng    schedule 05.07.2016
comment
Спасибо, Грейс, это действительно помогло мне разобраться с уведомлениями, концепция теперь мне ясна. - person Ankit Saini; 05.07.2016
comment
Но теперь возникает еще одна проблема: когда я регистрирую фоновую задачу с помощью PushNotificationTrigger, она не показывает мне какую-либо фоновую задачу для событий жизненного цикла в Visual Studio во время отладки. Это потому, что фоновая задача зарегистрирована неправильно? И почему всегда загружаются символы, а VS не может загрузить многие из них и просит меня загрузить (например, frameworkapplication.g.cpp не найден)? Не могли бы вы помочь мне здесь? - person Ankit Saini; 05.07.2016
comment
@AnkitSaini, вы имеете в виду, что хотите отладить фоновую задачу? Я обновлю снимок экрана, чтобы показать вам, как отлаживать события жизненного цикла. И почему всегда загружаются символы, а VS не может загрузить многие из них и просит загрузить, я этого не понимаю. - person Grace Feng; 05.07.2016
comment
Грейс Фэн, я обновил вопрос со снимком экрана и кодом, который я использую для регистрации фоновой задачи, пожалуйста, посмотрите, где я делаю неправильно? - person Ankit Saini; 05.07.2016
comment
@AnkitSaini, я не обнаружил никаких проблем в вашем коде, правильно ли вы добавили объявления в манифест своего приложения? Вы можете обратиться к Создайте и зарегистрируйте фоновую задачу. И если у вас есть другие вопросы о фоновой задаче, откройте новый вопрос на SO, мы можем продолжать помогать. - person Grace Feng; 05.07.2016
comment
Да, это другой вопрос. Хорошо, Грейс Фэн, я задал еще один вопрос на SO. пожалуйста, помогите мне там. stackoverflow.com/questions/38199110/ - person Ankit Saini; 05.07.2016