Поделиться через


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

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

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

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

Запрос и получение маркера доступа

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

Запрос маркера доступа

HTTP-запрос отправляется в WNS для проверки подлинности облачной службы и получения маркера доступа. Запрос выдается следующему полному доменному имени с использованием протокола SSL.

https://login.live.com/accesstoken.srf

Параметры запроса маркера доступа

Облачная служба отправляет эти обязательные параметры в теле HTTP-запроса, используя формат "application/x-www-form-urlencoded". Необходимо обеспечить URL-кодировку всех параметров.

Параметр Обязательный/По выбору Описание
grant_type Обязательный Необходимо установить значение "client_credentials".
client_id Обязательный Идентификатор безопасности (SID) пакета для облачной службы в соответствии с назначением при регистрации вашего приложения в Магазине Windows.
client_secret Обязательный Секретный ключ для облачной службы в соответствии с назначением при регистрации вашего приложения в Магазине Windows.
scope Обязательный Необходимо установить следующие значения:
  • Windows: "notify.windows.com"
  • Windows Phone: "notify.windows.com" или "s.notify.live.net"

 

Ответ на запрос маркера доступа

WNS проверяет подлинность облачной службы и в случае положительного результата подает ответ "200 ОК", который включает маркер доступа. В противном случае WNS возвращает соответствующий код ошибки HTTP согласно описанию в проекте протокола OAuth 2.0.

Параметры ответа на запрос маркера доступа

Если облачная служба успешно прошла проверку подлинности, маркер доступа возвращается в HTTP-ответе. Этот маркер доступа можно использовать в запросах уведомлений вплоть до истечения срока его действия. В HTTP-ответе используется тип носителя "application/json".

Параметр Обязательный/По выбору Описание
access_token Обязательный Маркер доступа, который использует облачная служба при отправке уведомления.
token_type По выбору Обязательно возвращается как "bearer".

 

Код ответа

Код ответа HTTP Описание
200 OK Запрос успешный.
400 Bad Request Проверка подлинности не пройдена. Параметры ответов см. в проекте документа RFC OAuth.

 

Пример

Ниже приведен пример успешного ответа при проверке подлинности:

 HTTP/1.1 200 OK   
 Cache-Control: no-store
 Content-Length: 422
 Content-Type: application/json
 
 {
     "access_token":"EgAcAQMAAAAALYAAY/c+Huwi3Fv4Ck10UrKNmtxRO6Njk2MgA=", 
     "token_type":"bearer"
 }

Отправка запроса уведомления и получение ответа

В этом разделе описаны заголовки, используемые в HTTP-запросе к WNS для доставки уведомления, и заголовки, используемые в ответах.

  • Отправка запроса уведомления
  • Отправка ответа на запрос уведомления
  • Неподдерживаемые возможности HTTP

Отправка запроса уведомления

При отправке запроса на уведомления вызывающее приложение делает HTTP-запрос по протоколу SSL, который адресован универсальному коду ресурса (URI) канала. "Content-Length" — это стандартный заголовок HTTP, который необходимо указывать в запросе. Все прочие стандартные заголовки либо используются по выбору, либо не поддерживаются.

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

Параметры запроса

Имя заголовка Обязательный/По выбору Описание
Authorization Обязательный Стандартный заголовок HTTP-авторизации, используемый для проверки подлинности вашего запроса уведомления. В этом заголовке ваша облачная служба предоставляет маркер доступа.
Content-Type Обязательный Стандартный заголовок HTTP-авторизации. Для всплывающих уведомлений, уведомлений на плитках и уведомлений на индикаторах событий необходимо установить заголовок "text/xml". Для необработанных уведомлений необходимо установить заголовок "application/octet-stream".
Content-Length Обязательный Стандартный заголовок HTTP-авторизации для обозначения размера полезных данных в запросе.
X-WNS-Type Обязательный Определяет тип уведомления в полезных данных: плитка, всплывающее, индикатор события или необработанное.
X-WNS-Cache-Policy По выбору Включает и отключает кэширование уведомлений. Этот заголовок применяется только к уведомлениям на плитках, уведомлениям на индикаторах событий и необработанным уведомлениям.
X-WNS-RequestForStatus По выбору Запрашивает состояние устройства и состояние подключения WNS в ответе на запрос уведомления.
X-WNS-Tag По выбору Строка используется для предоставления уведомления с идентифицирующей меткой, применяемой для плиток, которые поддерживают очередь уведомлений. Этот заголовок применяется только к уведомлениям на плитках.
X-WNS-TTL По выбору Целое число, выраженное в секундах, которое указывает срок жизни пакетов (TTL).
X-WNS-SuppressPopup По выбору Только для Windows Phone: отправляет всплывающее уведомление непосредственно в центр поддержки, не отображая само уведомление на экране.
X-WNS-Group По выбору Только для Windows Phone: используется с заголовком X-WNS-Tag для группировки уведомлений в центре поддержки.
X-WNS-Match Требуется в зависимости от ситуации Только для Windows Phone: требуется для определения целей при удалении всплывающего уведомления из центра поддержки с помощью метода HTTP DELETE.

 

Важные примечания

  • Заголовки Content-Length и Content-Type — единственные стандартные HTTP-заголовки, которые включаются в доставляемое клиенту уведомление независимо от включения в запрос других стандартных заголовков.
  • Все прочие стандартные HTTP-заголовки игнорируются или возвращают ошибку, если функциональность не поддерживается.

Authorization

Заголовок авторизации используется для указания учетных данных вызывающей стороны согласно методу авторизации OAuth 2.0 для маркеров bearer.

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

Этот заголовок обязателен.

Authorization: Bearer <access-token>

X-WNS-Type

Эти типы уведомлений поддерживаются WNS. Данный заголовок обозначает тип уведомления и способ его обработки WNS. После того как уведомление попадет к клиенту, фактический объем полезных данных сравнивается с указанным типом. Этот заголовок обязателен.

X-WNS-Type: wns/toast | wns/badge | wns/tile | wns/raw
Значение Описание
wns/badge Уведомление о создании на плитке наложения индикатора событий. Для заголовка Content-Type, включенного в запрос уведомления, необходимо установить значение "text/xml".
wns/tile Уведомление об обновлении содержимого плитки. Для заголовка Content-Type, включенного в запрос уведомления, необходимо установить значение "text/xml".
wns/toast Уведомление о выводе всплывающего уведомления на клиенте. Для заголовка Content-Type, включенного в запрос уведомления, необходимо установить значение "text/xml".
wns/raw Уведомление, которое содержит другие полезные данные и отправляется непосредственно приложению. Для заголовка Content-Type, включенного в запрос уведомления, необходимо установить значение "application/octet-stream".

 

X-WNS-Cache-Policy

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

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

X-WNS-Cache-Policy: cache | no-cache
Значение Описание
cache По умолчанию. Уведомления кэшируются, если пользователь не подключен к сети. Это состояние по умолчанию для уведомлений на плитках и уведомлений на индикаторах событий.
no-cache Уведомления не кэшируются, если пользователь не подключен к сети. Это состояние по умолчанию для необработанных уведомлений.

 

X-WNS-RequestForStatus

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

X-WNS-RequestForStatus: true | false
Значение Описание
true Возврат в ответе состояния устройства и состояния уведомления.
false По умолчанию. Не возвращают состояние устройства и состояние уведомления.

 

X-WNS-Tag

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

Примечание  Этот заголовок необязателен и используется только при отправке уведомлений на плитках.

 

Примечание  Для универсальных приложений Windows Phone заголовок X-WNS-Tag можно использовать с заголовком X-WNS-Group, чтобы отображать в центре уведомлений несколько уведомлений с одним и тем же тегом.

X-WNS-Tag: <string value>
Значение Описание
Строковый параметр Буквенно-цифровая строка длиной не более 16 символов.

 

X-WNS-TTL

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

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

X-WNS-TTL: <integer value>
Значение Описание
целое число Срок жизни уведомления в секундах после получения запроса WNS.

 

X-WNS-SuppressPopup

Примечание  Для универсальных приложений Windows Phone можно отключить пользовательский интерфейс всплывающего уведомления вместо отправки уведомления прямо в центр уведомлений. Благодаря этому уведомление предоставляется ненавязчиво, что отлично подходит для менее срочных уведомлений. Этот заголовок необязателен и используется только в каналах Windows Phone. Если этот заголовок включен в канал Windows, уведомление пропускается, а от WNS придет отклик, сообщающий об ошибке.

X-WNS-SuppressPopup: true | false
Значение Описание
true Отправляет всплывающее уведомление непосредственно в центр поддержки без вызова пользовательского интерфейса уведомления.
false По умолчанию. Вызывает пользовательский интерфейс всплывающего уведомления и добавляет уведомление в центр поддержки.

 

X-WNS-Group

Примечание  В центре уведомлений универсальных приложений Windows Phone несколько всплывающих уведомлений с одним и тем же тегом могут отображаться, только если они имеют метку принадлежности к разным группам. Возьмем, к примеру, приложение "Книга рецептов". Каждый рецепт необходимо определить с помощью тега. Всплывающее уведомление с комментарием к рецепту должно иметь тег рецепта и метку группы комментариев. Всплывающее уведомление с оценкой рецепта также должно иметь тег рецепта и еще метку группы оценок. Метки разных групп позволят одновременно показать оба всплывающих уведомления в центре уведомлений. Этот заголовок необязателен.

X-WNS-Group: <string value>
Значение Описание
Строковый параметр Буквенно-цифровая строка длиной не более 16 символов.

 

X-WNS-Match

Примечание  Используется вместе с методом HTTP DELETE для удаления конкретного всплывающего уведомления, набора уведомлений (по тегу или по группе) или всех уведомлений из центра уведомлений универсальных приложений Windows Phone. Этот заголовок может определять группу, тег либо и то и другое. Этот заголовок обязателен в запросах уведомления HTTP DELETE. Любые полезные данные в этом запросе уведомления игнорируются.

X-WNS-Match: type:wns/toast;group=<string value>;tag=<string value> | type:wns/toast;group=<string value> | type:wns/toast;tag=<string value> | type:wns/toast;all
Значение Описание
type:wns/toast;group=<string value>;tag=<string value> Удаляет единичное уведомление с меткой определенного тега и группы.
type:wns/toast;group=<string value> Удаляет все уведомления с меткой определенной группы.
type:wns/toast;tag=<string value> Удаляет все уведомления с меткой определенного тега.
type:wns/toast;all Очищает все уведомления вашего приложения в центре поддержки.

 

Отправка ответа на запрос уведомления

После того как WNS обработает запрос уведомления, она возвращает ответное HTTP-сообщение. В этом разделе описаны параметры и заголовки, которые могут присутствовать в таком ответе.

Параметры ответа

Имя заголовка Обязательный/По выбору Описание
X-WNS-Debug-Trace По выбору Сведения об отладке, которые необходимо регистрировать для помощи в диагностике проблем при передаче сообщения о проблеме.
X-WNS-DeviceConnectionStatus По выбору Состояние устройства, возвращаемое только при наличии соответствующей команды в запросе на уведомления в заголовке X-WNS-RequestForStatus.
X-WNS-Error-Description По выбору Строка ошибки в читаемой форме, которую следует регистрировать для проведения отладки.
X-WNS-Msg-ID По выбору Уникальный идентификатор уведомления, используется для целей отладки. При отправке отчета о проблеме эти сведения необходимо регистрировать, чтобы использовать при диагностике.
X-WNS-Status По выбору Обозначает успешное получение и обработку уведомления WNS. При отправке отчета о проблеме эти сведения необходимо регистрировать, чтобы использовать при диагностике.

 

X-WNS-Debug-Trace

Этот заголовок возвращает в виде строки сведения, полезные при отладке. Рекомендуется регистрировать этот заголовок, чтобы помочь разработчикам в отладке проблем. Этот заголовок вместе с заголовком X-WNS-Msg-ID требуется при передаче отчета о проблеме в WNS.

X-WNS-Debug-Trace: <string value>
Значение Описание
Строковый параметр Буквенно-цифровая строка.

 

X-WNS-DeviceConnectionStatus

Этот заголовок возвращает вызывающему приложению состояние устройства, если это запрашивается в заголовке X-WNS-RequestForStatus запроса на уведомления.

X-WNS-DeviceConnectionStatus: connected | disconnected | tempdisconnected
Значение Описание
connected Устройство в сети и подключено к WNS.
disconnected Устройство вне сети и не подключено к WNS.
tempconnected Устройство временно потеряло связь с WNS, например, при сбросе соединения в 3G-сети или выключении кнопки беспроводного модема на ноутбуке. Платформа клиента уведомлений рассматривает это как временный сбой, а не преднамеренное выключение.

 

X-WNS-Error-Description

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

X-WNS-Error-Description: <string value>
Значение Описание
Строковый параметр Буквенно-цифровая строка.

 

X-WNS-Msg-ID

Этот заголовок используется для передачи вызывающей стороне идентификатора уведомления. Рекомендуется регистрировать этот заголовок, чтобы помочь в отладке проблем. Этот заголовок вместе с заголовком X-WNS-Debug-Trace требуется при передаче отчета о проблеме в WNS.

X-WNS-Msg-ID: <string value>
Значение Описание
Строковый параметр Буквенно-цифровая строка длиной не более 16 символов.

 

X-WNS-Status

Этот заголовок описывает то, как WNS обрабатывает запрос на уведомления. Его можно использовать вместо интерпретирования кодов ответов как положительного или отрицательного результата.

X-WNS-Status: received | dropped | channelthrottled
Значение Описание
received Уведомление получено и обработано WNS. Примечание  Это не гарантирует, что устройство получило уведомление.
 
dropped Уведомление было явным образом сброшено из-за ошибки, или клиент явно отклонил эти уведомления. Всплывающие уведомления также будут сброшены, если устройство не в сети.
channelthrottled Уведомление было сброшено, так как сервер приложений превысил предел скорости для данного канала.

 

Коды ответа

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

Код ответа HTTP Описание Рекомендуемое действие
200 ОК Уведомление принято WNS. Не требуется.
400 Bad Request Один или несколько заголовков указаны неправильно или конфликтуют с другим заголовком. Зарегистрируйте сведения о запросе. Проверьте запрос и сравните с данным документом.
401 Unauthorized Облачная служба не представила действительный билет проверки подлинности. Билет OAuth может быть недействительным. Запросить действительный маркер доступа путем проверки подлинности облачной службы с использованием запроса маркера доступа.
403 Forbidden Облачная служба не авторизована для отправки уведомления в этот универсальный код ресурса (URI), даже если проверка выполнена. Маркер доступа, представленный в запросе, не соответствует учетным данным приложения, направившего запрос на универсальный код ресурса (URI) канала. Убедитесь, что имя пакета в манифесте приложения соответствует учетным данным, присвоенным вашему приложению в информационной панели.
404 Not Found Универсальный код ресурса (URI) канала недопустим или не распознан WNS. Зарегистрируйте сведения о запросе. Не отправляйте дополнительные уведомления в этот канал; направляемые на этот адрес уведомления будут отклонены.
405 Method Not Allowed Недопустимый метод (GET, CREATE); разрешен только метод POST (Windows или Windows Phone) либо DELETE (только Windows Phone). Зарегистрируйте сведения о запросе. Перейдите на использование HTTP POST.
406 Not Acceptable Облачная служба превысила свой пределе регулирования. Зарегистрируйте сведения о запросе. Уменьшите скорость отправки уведомлений.
410 Gone Срок действия канала истек. Зарегистрируйте сведения о запросе. Не отправляйте дальнейшие уведомления в этот канал. Приложение должно запросить универсальный код ресурса (URI) для нового канала.
413 Request Entity Too Large Полезная нагрузка уведомления превышает предельный размер 5 000 байт. Зарегистрируйте сведения о запросе. Проверьте полезную нагрузку, чтобы обеспечить ее соответствие ограничению по размерам.
500 Internal Server Error Внутренняя ошибка привела к сбою в доставке уведомления. Зарегистрируйте сведения о запросе. Отправьте отчет об этой проблеме через форумы разработчиков.
503 Service Unavailable Сервер в настоящее время недоступен. Зарегистрируйте сведения о запросе. Отправьте отчет об этой проблеме через форумы разработчиков.

 

Подробную информацию о диагностике, связанную с определенными кодами отклика, см. в разделе об устранении неполадок с уведомлением на плитке, всплывающим уведомлением и уведомлением индикатора событий. См. также: COM Error Codes (WPN, MBN, P2P, Bluetooth).

Неподдерживаемые возможности HTTP

Веб-интерфейс WNS поддерживает HTTP 1.1, но не поддерживает следующие функции:

  • Фрагментирование.
  • Конвейерный режим (POST не идемпотентный).
  • Хотя Expect-100 поддерживается, разработчики должны отключить его, поскольку это приводит к задержке при отправке уведомлений.

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

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

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

Проверка подлинности с помощью службы push-уведомлений Windows (WNS)

Запрос, создание и сохранение канала уведомлений

Push-уведомления и периодические уведомления

Обзор WNS