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

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

Устранение конкретных ошибок

В этом разделе рассматриваются некоторые распространенные ошибки, которые могут возникнуть при работе с push-уведомлениями.

  • Проверка журналов событий
  • Push-уведомление получает ответ "200 ОК", но не отображается
  • Push-уведомление возвращает код, отличный от "200 OK"
  • Ошибки при попытке создания канала push-уведомлений

Проверка журналов событий

Если плитка или всплывающие push-уведомления не отображаются должным образом, просмотрите журналы событий.

  • Если уведомление получено, но не отображается: запустите средство просмотра событий и проверьте журнал Microsoft-Windows-TWinUI/Operational в разделе "Приложения и службы\Microsoft\Windows\Apps".
  • Если уведомление не получено вообще: запустите средство просмотра событий и просмотрите операционный журнал в папке "Приложения и службы\Microsoft\Windows\PushNotifications-Platform".

Push-уведомление получает ответ "200 ОК", но не отображается

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

  • причина: ошибки XML в содержимом уведомления.

    исправить: проверьте правильность синтаксиса XML и убедитесь, что ваш XML-документ завершен и верный. Ниже приведены некоторые распространенные моменты сбоя в xml-содержимом:

    • Case sensitivity. Имена тегов, имена атрибутов и значения атрибутов чувствительны к регистру. Убедитесь, что XML имеет правильный регистр.
    • Элемент привязки должен быть предоставлен для каждого поддерживаемого формата плитки. Вы должны предоставить элемент привязки для каждого из поддерживаемых вами размеров плиток в каждом из отправленных уведомлений.
    • Текстовые строки не должны содержать зарезервированные XML-символы. Например, нельзя курсивировать плитку или всплываемые строки, включив <i> и </i> теги. Если вы собираетесь отобразить символы в их буквальном виде "<i>", они должны быть правильно экранированы. Дополнительные сведения о экранирующих символах в XML см. в разделе "Сущности символов XML" и разделе XAML.
    • Значения, указанные для атрибутов lang, должны соответствовать спецификации ITEF BCP 47.
    • XML-строки, отправленные через push-уведомления, должны использовать кодировку UTF-8.
    • Если вы включаете изображение элемент в полезные данные XML с непустым атрибутом src, необходимо обязательно включить ссылку на допустимое изображение, иначе уведомление будет отклонено.
  • причина: неправильное использование параметров API push-уведомлений

    Исправление. Дополнительные сведения см. в документации по API в Windows.Networking.PushNotifications пространства имен.

  • причина: тип заголовка не соответствует содержимому уведомления. Если заголовок X-WNS-Type не имеет значения — плитки, значка или тоста — соответствующих шаблону уведомлений, указанному в объекте данных, уведомление не будет отображаться. Это несоответствие приведет к ошибке клиента, и уведомление будет удалено.

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

  • причина: время жизни (TTL), заданное в заголовке X-WNS-TTL, имеет слишком малое значение.

    исправление: Укажите большее значение TTL, учитывая, что значение задано в секундах.

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

Push-уведомление возвращает код, отличный от "200 OK"

Если WNS не возвращает "200 OK", уведомление не будет доставлено клиенту. Если возвращаемый код находится в диапазоне 400, то вы, как разработчик, должны иметь возможность устранить проблему.

Note

Для получения сведений об ошибках, не перечисленных здесь, см. коды ошибок COM () для WPN, MBN, P2P, Bluetooth.

  • Запрос на уведомление возвращает "400 неверный запрос"
  • Запрос на уведомление возвращает "401 Несанкционированный"
  • Запрос на уведомление возвращает значение "401 Несанкционированный", срок действия маркера истекает
  • Запрос на уведомление возвращает значение "403 Запрещено"
  • Запрос на уведомление возвращает значение "404 Не найдено"
  • Запрос на уведомление возвращает значение "406 Not Acceptable"
  • Запрос на уведомление возвращает "410 Gone"

Запрос на уведомление возвращает "400 неверный запрос"

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

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

Запрос на уведомление возвращает "401 Несанкционированный"

  • причина. Сервер приложений должен использовать правильный идентификатор безопасности пакета (SID пакета) и секретный ключ, предоставленный при регистрации приложения. Если вы недавно изменили секретный ключ на панели мониторинга Магазина Windows, вам также потребуется обновить сервер приложений.

    исправление: Посетите панель инструментов магазинов Windows, чтобы проверить SID пакета и секрет.

Запрос на уведомление возвращает значение "401 Несанкционированный", срок действия маркера истекает

  • причина: маркер доступа имеет ограниченное время существования. Если вы отправляете уведомление с маркером доступа с истекшим сроком действия, учетные данные сервера приложений недопустимы и уведомление не может быть отправлено.

    Исправление: Запросите новый токен доступа у WNS, произведя аутентификацию с WNS, используя идентификатор безопасности пакета (SID пакета) и секретный ключ. Дополнительные сведения см. в обзоре служб push-уведомлений Windows (WNS)

Запрос на уведомление возвращает значение "403 Запрещено"

  • причина. Эта ошибка возникает, когда предоставленный маркер доступа не соответствует учетным данным, необходимым для отправки уведомлений на соответствующий URL-адрес канала. Каждое приложение должно быть зарегистрировано в Магазине Windows для получения учетных данных для своего сервера приложений. Для каждого приложения можно использовать только учетные данные, предоставленные Магазином Windows, для отправки уведомлений в это приложение и их можно использовать только для этого конкретного приложения.

    исправление: войдите на Панель управления Магазина Windows с помощью учетной записи разработчика. Выберите приложение и нажмите кнопку "Дополнительные функции" —> "Управление параметрами облачной службы". Выберите "Идентификация приложения", чтобы прочитать инструкции по обновлению манифеста приложения в соответствии с учетными данными облачной службы.

Запрос на уведомление возвращает значение "404 Не найдено"

  • причина: эта ошибка обычно означает, что URL-адрес канала не сформирован правильно. URL-адрес канала никогда не должен быть изменен при отправке уведомления в WNS. URL-адрес канала всегда должен рассматриваться как непрозрачная строка— вам никогда не нужно изучить или даже знать его содержимое.

    исправление: Убедитесь, что ваш код не изменяет URL-адрес канала, изменяя один или несколько его символов или его кодировку.

Запрос на уведомление возвращает значение "406 Not Acceptable"

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

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

Запрос на уведомление возвращает "410 Gone"

  • причина: срок действия URL-адреса канала истек. Дальнейшие уведомления не могут быть отправлены до тех пор, пока приложение не будет запущено и запрашивает новый URL-адрес канала.

    Фикс: Приложение Windows Store должно запрашивать URL-адрес канала при каждом запуске. URL-адрес, назначенный каналу, не гарантируется как неизменный. Если URL-адрес изменился, клиент должен обновить сведения на облачном сервере.

Ошибки при попытке создания канала push-уведомлений

  • Создание канала уведомлений приводит к ошибке ERROR_NO_NETWORK
  • Создание канала уведомлений приводит к ошибке WPN_E_CLOUD_INCAPABLE.
  • Создание канала уведомлений приводит к ошибке WPN_E_INVALID_APP

Note

Для получения сведений об ошибках, не перечисленных здесь, см. коды ошибок COM () для WPN, MBN, P2P, Bluetooth.

Создание канала уведомлений приводит к ошибке ERROR_NO_NETWORK

  • причина: WNS требует подключения к Интернету для создания канала уведомлений.

    исправление: Проверьте подключение к Интернету.

Создание канала уведомлений приводит к ошибке WPN_E_CLOUD_INCAPABLE.

  • причина: ваше приложение не объявило возможность Интернета в манифесте приложения (package.appxmanifest).

    Исправление: Убедитесь, что манифест вашего приложения включает интернет-возможности. В редакторе манифестов Visual Studio этот параметр можно найти на вкладке "Возможности" как Интернет (клиент). Дополнительные сведения см. в разделе о возможностях .

Создание канала уведомлений приводит к ошибке WPN_E_INVALID_APP

  • причина: Приложение должно использовать допустимое имя пакета. Если вы еще не получили его, его можно получить на портале Магазина Windows в разделе "Дополнительные функции".

    Исправление. Дополнительные сведения о получении идентификатора безопасности пакета (PKSID) для приложения Windows Store см. в обзоре Windows Push Notification Services (WNS) .

Сообщить о проблеме

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

Для push-уведомлений в дополнение к описанию проблемы может потребоваться указать URL-адрес канала и пример ответа, полученного от WNS, включая коды ошибок HTTP и заголовки HTTP. Существуют определенные заголовки, которые сервер приложений должен фиксировать в журнале при сообщении о проблеме. Для получения дополнительной информации см. раздел заголовки запросов и ответов службы push-уведомлений.