MSDN Library
Информация
Запрошенная вами тема показана ниже. Однако эта тема не включена в библиотеку.

Обзор необработанных уведомлений (приложения среды выполнения Windows)

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

Необработанные уведомления представляют собой короткие push-уведомления общего характера. Они являются строго поясняющими и не включают компонент пользовательского интерфейса. Как и в случае других push-уведомлений, необработанные уведомления из облачной службы доставляются в ваше приложение с помощью служб push-уведомлений Windows (WNS).

Необработанные уведомления можно использовать для различных целей, включая активацию запуска фоновых задач в приложении, если это разрешено пользователем. Используя WNS для связи с приложением, вы можете избежать затрат на обработку при создании постоянных соединений сокетов, отправке запросов на получение данных по протоколу HTTP и установке других соединений между службой и приложением.

Важно   Чтобы понять, что представляют собой необработанные уведомления, необходимо знать понятия, описанные в разделе с обзором служб push-уведомлений Windows (WNS).
 

Как и всплывающие уведомления, а также уведомления на плитках или push-уведомления через индикатор событий, необработанное уведомление отправляется из облачной службы приложения по универсальному коду ресурса (URI) назначенного канала в WNS. Службы WNS, в свою очередь, передают его устройству и учетной записи пользователя, связанным с этим каналом. Но в отличие от других push-уведомлений, необработанные уведомления не имеют установленного формата. Содержимое полезной нагрузки полностью определяется приложением.

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

Как работают необработанные уведомления?

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

  • Необходимо иметь действительный канал WNS для отправки необработанных уведомлений. Подробнее о получении канала push-уведомлений см. в разделе Запрос, создание и сохранение канала уведомлений.
  • Вы должны включить возможность Internet в манифесте приложения. Этот параметр находится на вкладке Возможности под именем Интернет (клиент) в редакторе манифестов Microsoft Visual Studio. Дополнительные сведения см. в Capabilities.

Текст уведомления является форматом, определяемым приложением. Клиент получает данные в виде строки, оканчивающейся нулевым символом (HSTRING), которая понятна только приложению.

Когда клиент работает автономно, необработанные уведомления будут кэшироваться WNS, только если в уведомление включен заголовок X-WNS-Cache-Policy. Но как только устройство снова подключится к сети, кэшироваться и доставляться будет только одно необработанное уведомление.

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

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

Отправка необработанного уведомления похожа на отправку уведомления на плитку, всплывающего уведомления или push-уведомления через индикатор событий, но имеет следующие особенности:

  • Заголовок HTTP типа содержимого (Content-Type) должен иметь вид "application/octet-stream".
  • Заголовок HTTP X-WNS-Type должен иметь вид "wns/raw".
  • Текст уведомления может содержать любые полезные данные в строке, если их объем не превышает 5 КБ.

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

Подробнее об отправке push-уведомлений см. в разделе Краткое руководство: отправка push-уведомления.

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

Существует два способа получения необработанных уведомлений вашим приложением:

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

  • Если приложение запущено, событие доставки уведомлений получает приоритет перед фоновой задачей, и приложение обработает уведомление при первой же возможности.
  • Указав для свойства события PushNotificationReceivedEventArgs.Cancel значение true, обработчик событий доставки уведомлений может запретить передачу необработанного уведомления фоновой задаче после завершения работы обработчика. Если для свойства Cancel указано значение false или значение не задано (значением по умолчанию является false), необработанное уведомление активирует фоновую задачу после того, как обработчик событий доставки уведомлений выполнит свою работу.

События доставки уведомлений

Ваше приложение может использовать событие доставки уведомления (PushNotificationReceived), чтобы получать необработанные уведомления во время использования приложения. Когда облачная служба отправляет необработанное уведомление, запущенное приложение может получить его, обработав событие доставки уведомления в URI канала.

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

  • Приложение информирует облачную службу: приложение может связаться со своей службой, чтобы уведомить ее о работе на переднем плане. Недостатком данного способа является то, что приложение может начать связываться со службой очень часто. Тем не менее его преимущество заключается в том, что служба всегда будет знать, когда приложение готово получать входящие необработанные уведомления. Другим преимуществом является то, что при подключении приложения к своей службе она может отправлять необработанные уведомления непосредственно этому экземпляру приложения, а не рассылать их широко.
  • Ответы облачной службы на ответные сообщения WNS: служба вашего приложения может использовать информацию X-WNS-NotificationStatus и X-WNS-DeviceConnectionStatus, возвращаемую WNS, чтобы определить, когда следует прекратить отправку необработанных сообщений приложению. Когда ваша служба отправляет уведомление по такому каналу, как HTTP POST, она может получить в качестве ответа одно из следующих сообщений:
    • X-WNS-NotificationStatus: dropped (пропущено): это означает, что уведомление не было получено клиентом. Разумно предположить, что ответ dropped означает, что приложение на устройстве пользователя больше не выполняется на переднем плане.
    • X-WNS-DeviceConnectionStatus: disconnected (отключено) или X-WNS-DeviceConnectionStatus: tempconnected (временно подключено): это означает, что клиент Windows не имеет соединения с WNS. Обратите внимание, что для получения этого сообщения от WNS вам необходимо запросить его, установив заголовок X-WNS-RequestForStatus в HTTP POST уведомления.

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

    Отметим, что вы не должны полагаться на X-WNS-NotificationStatus для определения успешной доставки уведомления клиенту.

    Подробнее см. в разделе Запросы на обслуживание и заголовки ответа push-уведомлений.

Фоновые задачи, инициируемые необработанными уведомлениями

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

Фоновая задача должна быть зарегистрирована с PushNotificationTrigger. Если эта регистрация отсутствует, при получении необработанного уведомления задача не будет выполняться.

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

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

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

  1. Запросить и получить разрешение пользователя на выполнение задач в фоновом режиме. Подробнее: Обзор экрана блокировки.
  2. Реализовать фоновую задачу. Подробнее: Поддержка приложения с помощью фоновых задач.

Ваша фоновая задача затем вызывается в ответ на PushNotificationTrigger при каждом получении необработанного уведомления для вашего приложения. Фоновая задача интерпретирует полезные данные для этого приложения в необработанном уведомлении и выполняет действия согласно этим данным.

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

Другие ресурсы

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

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

Пример необработанного уведомления
Руководство и контрольный список для необработанных уведомлений
Краткое руководство: создание и регистрация фоновой задачи необработанного уведомления
Краткое руководство: перехват push-уведомлений для работающих приложений
RawNotification

 

 

Показ:
© 2016 Microsoft