Краткое руководство. Перехват push-уведомлений для запущенных приложений (HTML)

[ Эта статья адресована разработчикам приложений среды выполнения Windows для Windows 8.x и Windows Phone 8.x. При разработке приложений для Windows 10 см. раздел последняя документация]

Примечание  Не используете JavaScript? Перейдите к разделу Краткое руководство. Перехват push-уведомлений для запущенных приложений (XAML).

 

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

Когда облачная служба вашего приложения отправляет уведомление в Windows, у вашего приложения имеется возможность перехватить и обработать это уведомление до того, как оно отобразит всплывающее уведомление, обновит плитку или индикатор событий или доставит необработанное уведомление фоновой задаче. Оно также может подавить отображение или обновление этих элементов. Реализация обработчика события доставки уведомления является необязательной. Это полезнее всего в сценариях, в которых приложению требуется обработать и подавить входящие всплывающие уведомления, вместо того чтобы показывать их пользователю.

Примечание  Что касается Windows Phone 8.1, телефон может предотвратить отображение всплывающего уведомления с помощью свойства ToastNotification.suppressPopup или ScheduledToastNotification.suppressPopup в XML-содержимом уведомления.

Примечание  Эта процедура применяется только к выполняющимся приложениям. Уведомления, отправленные системой, когда приложение не выполняется и обработчик не реализован, доставляются обычным образом — плитки обновляются, всплывающее уведомление отображается, а необработанные уведомления доставляются в фоновые задачи (если реализованы).

 

Необходимые условия

Чтобы понять эту тему или применить код, который в ней приводится, необходимы:

Инструкции

1. Дополнительно: объявление переменной пространства имен

На этом этапе создается краткое имя, которое будет использоваться вместо полного имени пространства имен. Это эквивалент оператора "using" в C# или оператора "Imports" в Visual Basic. Оно позволяет упростить код.

Примечание  В следующем коде предполагается, что эта переменная объявлена.

 


var pushNotifications = Windows.Networking.PushNotifications;

2. Создайте канал push-уведомлений.

Для получения уведомлений из облачной службы требуется действующий канал уведомлений. Прослушиватель событий следит за данным каналом и отмечает прибытие уведомления. Подробнее о создании канала см. в разделе Запрос, создание и сохранение канала уведомлений.

В случае успешного выполнения в данном примере создается канал, к которому можно получить доступ через newChannel.uri.


var channel;
var channelOperation = pushNotifications.PushNotificationChannelManager.createPushNotificationChannelForApplicationAsync();

return channelOperation.then(function (newChannel) {
    channel = newChannel;
    },
    function (error) {
        // ...
    }
);

3. Создайте функцию для обработки события push-уведомления.

Пример ниже показывает, как обрабатывать все типы уведомлений.

Последняя строка кода в этом примере устанавливает для свойства cancel события значение true. Это запрещает уведомлению выполнять любые изменения пользовательского интерфейса, такие как обновление плитки или индикатора событий либо отображение всплывающего уведомления. В случае необработанного уведомления это предотвращает доставку уведомления в фоновую задачу, если она реализована. Таким образом, любой ответ на уведомление зависит от обработчика.


var content;
function onPushNotification(e) {
    var notificationPayload; 

    switch (e.notificationType) { 
        case pushNotifications.PushNotificationType.toast: 
            notificationPayload = e.toastNotification.content.getXml(); 
            break; 

        case pushNotifications.PushNotificationType.tile: 
            notificationPayload = e.tileNotification.content.getXml(); 
            break; 

        case pushNotifications.PushNotificationType.badge: 
            notificationPayload = e.badgeNotification.content.getXml(); 
            break; 

        case pushNotifications.PushNotificationType.raw: 
            notificationPayload = e.rawNotification.content; 
            break; 
    } 

    e.cancel = true;
}

4. Добавьте прослушиватель событий для полученных push-уведомлений.

Используйте канал, созданный на первом шаге, для назначения его обработчику событий, созданному на втором шаге, чтобы обработать событие PushNotificationReceived.


channel.addEventListener("pushnotificationreceived", onPushNotification, false);

Сводка

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

Связанные разделы

Примеры

Пример необработанного уведомления

Пример push-уведомлений и периодических уведомлений

Основополагающие сведения

Обзор служб push-уведомлений Windows (WNS)

Обзор необработанных уведомлений

Рекомендации

Руководство и контрольный список для push-уведомлений

Руководство и контрольный список для необработанных уведомлений

Практическое руководство

Краткое руководство: создание и регистрация фоновой задачи необработанного уведомления