Устранение неполадок с уведомлениями на плитках, всплывающими уведомлениями и индикаторами событий (приложения среды выполнения Windows)
[ Эта статья адресована разработчикам приложений среды выполнения Windows для Windows 8.x и Windows Phone 8.x. При разработке приложений для Windows 10 см. раздел последняя документация]
В этом разделе описываются начальные действия по устранению неполадок, которые следует выполнять, когда обнаруживаются проблемы с уведомлениями на плитках, всплывающими уведомлениями и индикаторами событий, включая различные методы уведомления: локальные, периодические, запланированные и push-уведомления.
Устранение неполадок уведомлений на плитках
В этом разделе описаны частые ошибки, которые могут возникнуть при работе с плитками и шаблонами плиток. Если не указано иначе, каждое решение применимо ко всем типам доставки уведомлений: локальным, запланированным, периодическим и push-уведомлениям.
Не отображается локальное уведомление на плитке
Самая распространенная причина этого — то, что XML-код, используемый для определения уведомления, содержит ошибку. Но возможны и другие причины, выявить которые помогут следующие шаги:
- Проверка параметров пользователя
- Указание в манифесте приложения ресурсов для широкого или большого логотипа
- Проверка размеров изображений
- Проверка URL-адресов
- Проверка форматов изображений
- Проверка синтаксиса XML
- Проверка окончания срока действия уведомления
- Проверка включения очереди уведомлений
Проверка параметров пользователя
Возможная причина. Пользователь или администратор отключил уведомления. Убедитесь, что на панели приложения есть параметр Включить или отключить живую плитку и для него не выбрано значение "отключить". Администратор может отключить уведомления при помощи нескольких групповых политик. Узнайте у своего администратора, включены ли уведомления.
Решение. Включите уведомления на панели приложения или попросите администратора включить уведомления с помощью групповой политики.
Дополнительные сведения см. в разделе TileUpdater.setting.
Указание в манифесте приложения ресурсов для широкого или большого логотипа
Возможная причина. В манифесте приложения не указан ресурс (изображение плитки) по умолчанию для размера плитки, заданного в уведомлении. Например, если изображение широкой плитки по умолчанию отсутствует, то на плитке не будут отображаться шаблоны уведомлений широкого формата. В идеальном случае в полезных данных уведомлений на плитках должны содержаться шаблоны для всех возможных размеров плитки, поскольку если на плитке не используется исключительно изображение среднего размера, то отправитель не может определить, какой размер будет иметь отображаемая плитка в момент получения уведомления. Этот параметр зависит только от пользователя.
Решение. В полезных данных уведомления укажите версию обновления для каждого типа стандартного изображения логотипа, указанного в манифесте. Можно изменить размер плитки в соответствии с размером стандартного изображения логотипа.
Проверка размеров изображений
Возможная причина. Каждое изображение для уведомления должно иметь размер меньше 1024 x 1024 пикселя и меньше 200 КБ. Если хотя бы одно из изображений в уведомлении превышает хотя бы одно из этих ограничений, уведомление будет удалено.
Решение. Уменьшите размер изображений.
Дополнительные сведения см. в разделе Размеры изображений для плиток и всплывающих уведомлений.
Проверка URL-адресов
Возможная причина. Синтаксические ошибки в URL-адресе.
Изображения в уведомлениях указываются с помощью ссылок на ресурсы или литеральных путей. Если используется путь, он должен быть задан с помощью одного из трех протоколов:
Префикс | Использование | Примечания |
---|---|---|
http:// и https:// | Изображения, хранящиеся в Интернете | Эти изображения могут содержаться в локальном кэше, так что ваш сервер изображений может не получить запрос на изображение. К этим URL-адресам могут добавляться строки запроса. Убедитесь, что, если вы не добавляете строку запроса, то ваш веб-сервер возвращает исходное изображение, а не код 404. Пример строки запроса: ?scale=100&contrast=blk&lang=ru-RU Обратите внимание: чтобы получать из Интернета содержимое уведомления, в манифесте вашего приложения должна быть объявлена возможность "Internet (Client)" (Интернет [клиент]). |
ms-appx:/// | Изображения, включенные в пакет приложения | Эти изображения являются частью установки вашего приложения. Обратите внимание, что для этой ссылки требуется тройная косая черта после двоеточия. После этой тройной косой черты универсальный код ресурса (URI) принимает как разделитель между папками в составе пути косую черту (/) или обратную косую черту (\), но в большинстве языков программирования при указании обратной косой черты требуется использовать escape-символ (\\). |
ms-appdata:///local/ | Изображения, сохраненные приложением локально | Это расположение соответствует папке, которую возвращает Windows.Storage.ApplicationData.current.localFolder. Обратите внимание, что для этой ссылки требуется тройная косая черта после двоеточия. В разделителях папок в составе пути необходимо использовать escape-символы (\\). |
Примечание Символ "/" выступает как разделитель в каждом типе спецификации. Мы рекомендуем всегда использовать "/" вместо "\", чтобы избежать случайной путаницы с escape-символами.
Примеры правильного формата:
URL-адрес |
---|
https://www.contoso.com/icon.jpg |
ms-appx:///images/icon.png |
ms-appdata:///local/myDrawing.jpg |
Примеры неправильного формата:
URL-адрес | Примечания |
---|---|
https://www.contoso.com\fail.png | В пути HTTP необходимо использовать символ /. Не используйте символ \. |
http:www.contoso.com | В пути HTTP требуется двойная косая черта (//) после двоеточия. |
"ms-appdata:///local/c:\\images\\Drawing.jpg" | Приложение не может ссылаться на изображения за пределами своего локального хранилища. |
"ms-appx://images/triangle.png" | Используйте в сочетании с "ms-appx:" тройную косую черту, а не двойную косую черту. |
Проверка форматов изображений
Возможная причина. Формат изображений не поддерживается.
Уведомления могут использовать изображения только в форматах GIF, PNG или JPG/JPEG. Формат изображения должен также соответствовать его расширению. Если неподдерживаемый тип файла переименовать, всего лишь заменив расширение на поддерживаемое, то файл работать не будет.
Самая распространенная причина ошибок формата изображений — это сериализация точечных рисунков в хранилище Windows.Storage.ApplicationData.current.localFolder. Вызывайте предпочтительный формат. В противном случае изображение будет сохранено как точечный рисунок Windows, а его заголовок будет содержать расширение BMP — неподдерживаемый тип.
Проверка. Сначала проверьте, что вы можете успешно отправлять уведомления, содержащие только текст, чтобы ограничить возможные проблемы с изображением. Один из способов проверить формат — загрузить изображение в программу обработки изображений и сохранить его как JPG-файл. Если вы ссылаетесь на этот новый JPG-файл в уведомлении и ошибка не повторяется, вероятно, она была вызвана форматом изображения. Также вы можете открыть файл в двоичном редакторе Microsoft Visual Studio и проверить его заголовок.
Решение. Измените или исправьте форматы изображений.
Проверка синтаксиса и содержимого XML
Возможная причина. Синтаксические ошибки или ошибки при проверке XML.
Помимо основного синтаксиса, проверьте завершенность и правильность XML-кода. Это особенно важно, если полезные данные построены в виде строки без использования API или библиотеки NotificationsExtensions. Вот некоторые распространенные причины ошибок XML-содержимого.
- Учет регистра. Во всех именах тегов и атрибутов, а также значениях атрибутов учитывается регистр. Убедитесь, что в вашем XML-коде используется правильный регистр.
- Для каждого размера плитки должен быть предоставлен элемент binding. Вам следует предоставить элемент binding для каждого из поддерживаемых размеров плитки (то есть для каждого изображения логотипа, указанного в манифесте) в каждом уведомлении, которое вы отправляете.
- Текстовые строки не должны содержать зарезервированные символы XML. Например, для выделения курсивом строк плитки нельзя использовать теги <i> и </i>. Если вы хотите отобразить литеральные символы "<i>", то перед ними нужно указать escape-символы. Дополнительные сведения об escape-символах в XML см. в статье Сущности знаков XML и XAML.
- Значения, предоставляемые для атрибутов lang, должны соответствовать спецификации ITEF BCP 47.
- Локально создаваемые строки XML (для локальных или запланированных уведомлений) должны использовать кодировку UTF-16. При отправке через push-уведомления или опросе с URL-адреса строки должны использовать кодировку UTF-8.
- Если вы включаете в полезные данные XML элемент image с непустым атрибутом src, обязательно убедитесь, что ссылка указывает на допустимое изображение. В противном случае уведомление будет пропущено.
Если уведомление на плитке не отображается, можно просмотреть ошибки в журнале событий. События, касающиеся ваших уведомлений на плитке, можно найти в просмотре событий в разделе "Журналы приложений и служб > Microsoft > Windows > Приложения > Microsoft-Windows-TWinUI/Operational".
Проверка. Используйте проверку синтаксиса XML, например редактор Visual Studio, чтобы найти основные синтаксические ошибки. Найдите ссылку на соответствующий шаблон (TileTemplateType), чтобы убедиться, что вы используете правильное количество изображений и правильно соотносите их с индексами.
Решение. Измените XML-код или используйте другой шаблон, соответствующий вашему содержимому. Также рассмотрите возможность использования библиотеки NotificationsExtensions, чтобы избежать прямого изменения XML-кода.
Проверка окончания срока действия уведомления
Возможная причина. Задано слишком маленькое значение окончания срока действия.
Если вы задаете окончание срока действия в уведомлении с помощью метода expirationTime (для локального уведомления) или поля заголовка X-WNS-TTL (в push-уведомлении), не забывайте, что эти значения представлены в миллисекундах. Например, если вы хотите, чтобы уведомление на плитке отображалось ровно час, значение должно составлять 60 * 60 * 1000 = 3 600 000.
Решение. Используйте большее значение.
Проверка включения очереди уведомлений, если требуется циклическое отображение уведомлений
Возможная причина. Очередь уведомлений плитки не включена.
По умолчанию на плитках отображается только одно уведомление за один раз, а вновь поступившее уведомление замещает предыдущее. Если вы хотите циклически отображать последние пять уведомлений, следует вызвать в коде запуска приложения метод TileUpdater.enableNotificationQueue(true). Это действие выполняется только один раз за время существования приложения. Дополнительная информация: Как использовать очередь уведомлений в случае локальных уведомлений.
Решение. Вызовите enableNotificationQueue(true) в коде инициализации. Также удостоверьтесь, что теги уведомления уникальны.
Устранение неполадок запланированных уведомлений
Запланированное уведомление на плитке или всплывающее уведомление не появляется
Возможная причина. Чаще всего проблемы с обновлением плиток или с отображением всплывающих уведомлений связаны с ошибками формата XML-содержимого уведомления. Запланированные уведомления на плитках и всплывающие уведомления, так же как и незапланированные уведомления, должны соответствовать схемам XML плитки и всплывающих уведомлений.
Решение. Первый шаг при отладке проблем с доставкой запланированных уведомлений — проверка XML-файла с помощью локального уведомления. Дополнительные сведения см. в описании ошибок Не отображается локальное уведомление на плитке и Локальное всплывающее уведомление не отображается в этом разделе.
Приложению не удается вызвать метод AddToSchedule
Возможная причина. Вы превысили максимально разрешенное количество запланированных уведомлений.
Решение. Приложение не сможет вызывать методы TileUpdater.addToSchedule и ToastNotifier.addToSchedule, если вы попытаетесь запланировать более 4096 уведомлений. Уменьшите число запланированных уведомлений.
Возможная причина. Уведомление запланировано на прошедшее — относительно текущего системного — время.
Решение. Убедитесь, что запланированное уведомление назначено на будущее время. Проверьте системное время.
Устранение неполадок периодических (запрашиваемых) уведомлений
Периодические уведомления не обновляют плитку или индикатор событий
Возможно, вы столкнулись с одной или несколькими из следующих проблем.
- Веб-служба не возвращает действительный XML-документ, соответствующий схеме XML плитки. Если у вас возникли трудности с реализацией периодических уведомлений, сначала проверьте правильность формата XML-кода своей плитки. При отладке проблемы с периодическими уведомлениями сначала рекомендуется проверить XML-код при помощи локального уведомления. Дополнительные сведения см. в описании ошибки Не отображается локальное уведомление на плитке в этом разделе, а также в разделе Краткое руководство: отправка обновления плитки.
- Текст возвращен после запроса опроса не в формате UTF-8. Требуется кодировка UTF-8.
- Ваша служба неправильно отвечает на HTTP-запрос GET, используемый Windows при опросе предоставленного URL-адреса вашей службы. Поддерживаются протоколы HTTP и HTTPS.
- Приложение не объявляет возможность доступа к Интернету в своем файле манифеста (package.appxmanifest). Найдите этот параметр на вкладке Capabilities (Возможности) под именем Internet (Client) [Интернет (клиент)] в редакторе манифестов Visual Studio. Если эта возможность не объявлена для приложения, Windows не будет опрашивать вашу службу.
- Убедитесь, что значения, установленные для заголовков X-WNS-Tag и X-WNS-Expires, имеют правильный формат. Заголовки X-WNS-Expires должны использовать один из следующих форматов:
- Sun, 06 Nov 1994 08:49:37 GMT
- Sunday, 06-Nov-94 08:49:37 GMT
- Sun Nov 6 08:49:37 1994
Периодические обновления приходят с задержкой
- Если необходимо оптимизировать энергопотребление и производительность, Windows может задерживать опрос вашего URL-адреса на срок до 15 минут.
- Когда была установлена связь с URL-адресом, ваша служба была недоступна. Если служба недоступна, система вновь обращается к ней только по истечении следующего интервала опроса.
Устранение неполадок push-уведомлений
В этом разделе описаны частые ошибки, которые могут возникнуть при работе с push-уведомлениями.
- Проверка журналов событий
- Push-уведомление получает ответ "200 ОК", но не отображается
- Push-уведомление возвращает код, отличный от "200 ОК"
- Ошибки при создании канала push-уведомлений
Проверка журналов событий
Если push-уведомления на плитке или всплывающие push-уведомления не отображаются так, как ожидается, просмотрите журналы событий.
- Если уведомление получено, но не отображается: запустите просмотр событий и проверьте журнал Microsoft-Windows-TWinUI/Operational в разделе "Приложения и службы\Microsoft\Windows\Приложения".
- Если уведомление вообще не получено: запустите просмотр событий и проверьте журнал операций в разделе "Приложения и службы\Microsoft\Windows\PushNotifications-Platform".
Push-уведомление получает ответ "200 ОК", но не отображается
При возврате службой push-уведомлений Windows (WNS) ответа "200 ОК" уведомление будет доставлено клиенту, если он находится в сети. Если клиент находится в сети, но у него не отображается уведомление, выполните следующие действия.
Причина. Ошибки XML в содержимом уведомления.
Решение. Проверьте базовый синтаксис XML и убедитесь в его законченности и правильности. Вот некоторые распространенные причины ошибок XML-содержимого.
- Учет регистра. Во всех именах тегов и атрибутов, а также значениях атрибутов учитывается регистр. Убедитесь, что в вашем XML-коде используется правильный регистр.
- Для каждого поддерживаемого формата плитки должен быть предоставлен элемент binding. В каждом отправляемом уведомлении необходимо указывать элемент binding для каждого из поддерживаемых размеров плитки.
- Текстовые строки не должны содержать зарезервированные символы XML. Например, нельзя выделить курсивом строки на плитке или во всплывающем уведомлении с помощью тегов <i> и </i>. Если вы хотите отобразить литеральные символы "<i>", то перед ними нужно указать escape-символы. Дополнительные сведения об escape-символах в XML см. в статье Сущности знаков XML и XAML.
- Значения, предоставляемые для атрибутов lang, должны соответствовать спецификации ITEF BCP 47.
- Для строк XML, отправляемых во всплывающих уведомлениях, следует использовать кодировку UTF-8.
- Если вы включаете в полезные данные XML элемент image с непустым атрибутом src, обязательно убедитесь, что ссылка указывает на допустимое изображение. В противном случае уведомление будет пропущено.
Дополнительные сведения см. в документации Схемы плитки, всплывающих уведомлений и индикаторов событий.
Причина. Недопустимое использование параметров API push-уведомлений
Решение. Дополнительные сведения об API см. в документации Windows.Networking.PushNotifications для конкретного пространства имен.
Причина. Тип заголовка не соответствует содержимому уведомления. Если не задано значение заголовка типа X-WNS — плитка, индикатор события или всплывающее уведомление, — которое соответствует шаблону уведомлений в полезных данных, уведомление отображаться не будет. Это несоответствие приведет к ошибке клиента, и уведомление будет удалено.
Решение. Изучите раздел Заголовки запроса и ответа службы push-уведомлений и убедитесь, что сервер приложений использует допустимое значение заголовка типа X-WNS.
Причина. Значение срока жизни пакетов (TTL), заданное в заголовке X-WNS-TTL, слишком мало.
Решение. Задайте большее значение TTL с учетом того, что значение указывается в секундах.
Если после выполнения всех предыдущих действий уведомления не отображаются, см. шаги по устранению неполадок для локальных уведомлений в описании ошибки Не отображается локальное уведомление на плитке в этом разделе.
Push-уведомление возвращает код, отличный от "200 ОК"
Если служба WNS не возвращает код "200 ОК", уведомление не будет доставлено клиенту. Если код возврата начинается с 400, вы как разработчик сможете решить проблему. Дополнительную информацию о значениях отдельных кодов см. в описании кодов ответа служб push-уведомлений Windows (WNS). Пример кода, показывающий, как перехватывать и обрабатывать эти ошибки, см. в разделе Краткое руководство: отправка push-уведомления или скачайте пример Push and periodic notifications.
Примечание Ошибки, не перечисленные здесь, см. в COM Error Codes (WPN, MBN, P2P, Bluetooth).
- Запрос уведомления возвращает сообщение об ошибке "400 Ошибочный запрос"
- Запрос уведомления возвращает сообщение об ошибке "401 Доступ запрещен"
- Запрос уведомления возвращает сообщение об ошибке "401 Доступ запрещен", срок действия маркера истек
- Запрос уведомления возвращает сообщение об ошибке "403 Запрещено"
- Запрос уведомления возвращает сообщение об ошибке "404 Не найдено"
- Запрос уведомления возвращает сообщение об ошибке "406 Неприемлемо"
- Запрос уведомления возвращает сообщение об ошибке "410 Потеряно"
Запрос уведомления возвращает сообщение об ошибке "400 Ошибочный запрос"
Причина. Неправильное использование одного или нескольких заголовков WNS или недопустимый HTTP-запрос.
Решение. Изучите раздел Заголовки запроса и ответа службы push-уведомлений и убедитесь, что сервер приложений использует все настраиваемые заголовки согласно описанию.
Запрос уведомления возвращает сообщение об ошибке "401 Доступ запрещен"
Причина. Сервер приложений должен использовать правильный идентификатор безопасности пакета (SID пакета) и секретный ключ, которые вы получили при регистрации приложения. Если вы недавно изменили свой секретный ключ на информационной панели Магазина Windows, обновите сервер приложений. Дополнительную информацию см. в обзоре push-уведомлений.
Решение. Чтобы подтвердить ваш SID пакет и пароль, откройте информационную панель Магазина Windows.
Запрос уведомления возвращает сообщение об ошибке "401 Доступ запрещен", срок действия маркера истек
Причина. Срок действия маркера доступа ограничен. При отправке уведомления с просроченным маркером доступа учетные данные вашего сервера приложений оказываются недействительны, и уведомление не может быть отправлено.
Решение. Запросите в службе WNS новый маркер доступа. Авторизоваться в службе WNS вы можете, используя свой идентификатор безопасности пакета (SID пакета) и секретный ключ. Дополнительную информацию см. в обзоре служб push-уведомлений Windows (WNS).
Запрос уведомления возвращает сообщение об ошибке "403 Запрещено"
Причина. Эта ошибка возникает, если маркер доступа не совпадает с учетными данными, необходимыми для отправки уведомлений на соответствующий URL-адрес канала. Чтобы получить учетные данные для вашего сервера приложений, необходимо зарегистрировать приложение в Магазине Windows. Только учетные данные, полученные приложением в Магазине Windows, могут использоваться для отправки уведомлений этому приложению. Кроме того, их может использовать исключительно это приложение.
Решение. Войдите на информационную панель Магазина Windows под своей учетной записью разработчика. Выберите ваше приложение и щелкните "Дополнительные возможности" -> "Управление параметрами облачной службы". Выберите "Определить приложение" и следуйте инструкциям по обновлению манифеста приложения, чтобы он соответствовал учетным данным облачной службы.
Запрос уведомления возвращает сообщение об ошибке "404 Не найдено"
Причина. Эта ошибка обычно означает, что URL-адрес канала имеет неправильный формат. Никогда не изменяйте URL-адрес канала при отправке уведомлений службе WNS. URL-адрес канала всегда должен рассматриваться как непрозрачная строка — вам не нужно проверять или знать ее содержимое.
Решение. Проверьте, что ваш код не преобразует URL-адрес канала, изменяя его символы или кодировку.
Запрос уведомления возвращает сообщение об ошибке "406 Неприемлемо"
Причина. Политика защиты WNS для защиты других пользователей и разработчиков охраняет службы от негативного влияния вредоносных приложений. Чрезмерное количество уведомлений за короткий период может привести к явному сбросу уведомлений службами WNS.
Решение. Проверьте, можно ли уменьшить или оптимизировать частоту уведомлений для улучшения взаимодействия с пользователями.
Запрос уведомления возвращает сообщение об ошибке "410 Потеряно"
Причина. Истек срок действия URL-адреса канала. Невозможно отправлять новые уведомления, пока ваше приложение не запросит и не запустит новый URL-адрес канала.
Решение. При запуске ваше приложение Магазина Windows всегда должно запрашивать URL-адрес канала. Мы не гарантируем, что назначенный URL-адрес канала не изменится. При изменении URL-адреса клиенту необходимо обновить информацию на облачном сервере. Дополнительные сведения см. в разделе Запрос, создание и сохранение канала уведомлений.
Ошибки при создании канала push-уведомлений
- Создание канала уведомлений приводит к ошибке ERROR_NO_NETWORK
- Создание канала уведомлений приводит к ошибке WPN_E_CLOUD_INCAPABLE
- Создание канала уведомлений приводит к ошибке WPN_E_INVALID_APP
Примечание Ошибки, не перечисленные здесь, см. в COM Error Codes (WPN, MBN, P2P, Bluetooth).
Создание канала уведомлений приводит к ошибке ERROR_NO_NETWORK
Причина. Для создания канала уведомлений WNS необходимо подключиться к Интернету.
Решение. Проверьте подключение к Интернету.
Создание канала уведомлений приводит к ошибке WPN_E_CLOUD_INCAPABLE
Причина. Ваше приложение не указало возможность использования Интернета в манифесте приложения (package.appxmanifest).
Решение. В манифесте приложения объявите возможность использования Интернета. Найдите этот параметр на вкладке Capabilities (Возможности) под именем Internet (Client) [Интернет (клиент)] в редакторе манифестов Visual Studio. Дополнительные сведения см. в разделе Capabilities.
Создание канала уведомлений приводит к ошибке WPN_E_INVALID_APP
Причина. В качестве имени приложения должно использоваться допустимое имя пакета. Если у вас его нет, вы можете получить его на портале Магазина Windows в разделе "Дополнительные возможности".
Решение. Дополнительные сведения о получении идентификатора безопасности пакетов (PKSID) для ваших приложений Магазина Windows см. в разделе Проверка подлинности с помощью службы push-уведомлений Windows (WNS).
Устранение неполадок всплывающих уведомлений
В этом разделе рассматриваются некоторые распространенные ошибки, с которыми вы можете столкнуться при работе со всплывающими уведомлениями и шаблонами этих уведомлений. Большинство этапов устранения неполадок при работе со всплывающими уведомлениями те же, что и при работе с уведомлениями плиток. Если не указано иначе, каждое решение применимо ко всем типам доставки уведомлений: к локальным, запланированным и push-уведомлениям.
Локальное всплывающее уведомление не отображается
Самая распространенная причина этого — то, что XML-код, используемый для определения уведомления, содержит ошибку. Но возможны и другие причины, выявить которые помогут следующие шаги:
- Проверка параметров пользователя
- Проверка записей в манифесте приложения
- Проверка размеров изображений
- Проверка URL-адресов
- Проверка форматов изображений
- Проверка синтаксиса XML
- Проверка окончания срока действия уведомления
Проверка параметров пользователя
Возможная причина. Пользователь или администратор отключил уведомления в параметрах. Проверьте выключатель уведомлений в глобальных параметрах и параметрах отдельного приложения на странице "Уведомления" элемента "Параметры компьютера". Администратор может отключить уведомления при помощи нескольких групповых политик. Узнайте у своего администратора, включены ли уведомления.
Решение. Включите уведомления в параметрах или попросите администратора включить уведомления в групповой политике.
Дополнительные сведения см. в разделе Краткое руководство: отправка всплывающего уведомления.
Проверка записей в манифесте приложения
Возможная причина. В манифесте приложения не задана необходимая информация для включения доставки всплывающих уведомлений. Убедитесь, что для параметра Toast Capable (Всплывающие уведомления) в манифесте приложения установлено значение Yes (Да). Если содержимое уведомления, например изображение, получено из Интернета, убедитесь, что в манифесте приложения объявлена возможность Internet (Client) (Интернет [клиент]).
Решение. Включите записи, относящиеся к уведомлениям, в манифесте приложения.
Дополнительные сведения см. в разделе Краткое руководство: создание плитки по умолчанию с помощью редактора манифестов Visual Studio.
Проверка размеров изображений
Возможная причина. Изображения для всех уведомлений должны иметь размер меньше 1024 x 1024 пикселей и 200 КБ. Если хотя бы одно из изображений в уведомлении превышает хотя бы одно из этих ограничений, уведомление будет удалено.
Решение. Уменьшите размер изображений.
Дополнительные сведения см. в разделе Размеры изображений для плиток и всплывающих уведомлений.
Проверка URL-адресов
Возможная причина. Синтаксические ошибки в URL-адресе.
Изображения в уведомлениях задаются в виде ссылок на ресурсы или литеральных путей. Если используется путь, он должен быть задан с использованием одного из трех протоколов:
Префикс | Использование | Примечания |
---|---|---|
http:// и https:// | Изображения, хранящиеся в Интернете | Эти изображения могут содержаться в локальном кэше, так что ваш сервер изображений может не получить запрос на изображение. К этим URL-адресам добавляются строки запроса. Убедитесь, что, если вы не добавляете строку запроса, то ваш веб-сервер возвращает исходное изображение, а не код 404. Пример строки запроса: ?scale=100&contrast=blk&lang=ru-RU Обратите внимание: чтобы получать из Интернета содержимое уведомления, в манифесте вашего приложения должна быть объявлена возможность "Internet (Client)" (Интернет [клиент]). |
ms-appx:/// | Изображения, включенные в пакет приложения | Универсальный код ресурса (URI) принимает как разделитель между папками в составе пути косую черту (/) или обратную косую черту (\), но в большинстве языков программирования при указании обратной косой черты требуется использовать escape-символ (\\). Обратите внимание, что для этой ссылки требуется тройная косая черта после двоеточия. |
ms-appdata:///local/ | Изображения, сохраненные приложением локально | Это расположение соответствует папке, которую возвращает Windows.Storage.ApplicationData.current.localFolder. В разделителях папок в составе пути необходимо использовать escape-символы (\\). Обратите внимание, что для этой ссылки требуется тройная косая черта после двоеточия. |
Примечание Символ "/" выступает как разделитель в каждом типе спецификации. Мы рекомендуем всегда использовать "/" вместо "\", чтобы избежать случайной путаницы с escape-символами.
Примеры правильного формата:
URL-адрес |
---|
https://www.contoso.com/icon.jpg |
ms-appx:///images/icon.png |
ms-appdata:///local/myDrawing.jpg |
Примеры неправильного формата:
URL-адрес | Примечания |
---|---|
https://www.contoso.com\fail.png | В пути HTTP необходимо использовать символ /. Не используйте символ \. |
http:www.contoso.com | В пути HTTP требуется двойная косая черта (//) после двоеточия. |
"ms-appdata:///local/c:\\images\\Drawing.jpg" | Приложение не может ссылаться на изображения за пределами своего локального хранилища. |
"ms-appx://images/triangle.png" | Используйте в сочетании с "ms-appx:" тройную косую черту, а не двойную косую черту. |
Проверка форматов изображений
Возможная причина. Формат изображений не поддерживается.
Уведомления могут использовать изображения только в форматах PNG, JPG/JPEG или GIF. Формат изображения должен также соответствовать его расширению. Если неподдерживаемый тип файла переименовать, всего лишь заменив расширение на поддерживаемое, то файл работать не будет.
Самая распространенная причина ошибок формата изображений — это сериализация точечных рисунков в хранилище Windows.Storage.ApplicationData.current.localFolder. Вызывайте предпочтительный формат. В противном случае изображение будет сохранено как точечный рисунок Windows, а его заголовок будет содержать расширение "BMP".
Проверка. Один из способов проверить формат — загрузить изображение в программу обработки изображений и сохранить его как JPG-файл. Если вы ссылаетесь на этот новый JPG-файл в уведомлении и ошибка не повторяется, вероятно, она была вызвана форматом изображения. Можно также открыть файл в двоичном редакторе Visual Studio и проверить его заголовок.
Решение. Измените или исправьте форматы изображений.
Проверка синтаксиса и содержимого XML
Возможная причина. Синтаксические ошибки или ошибки при проверке XML.
Помимо основного синтаксиса, проверьте завершенность и правильность XML-кода. Вот некоторые распространенные причины ошибок XML-содержимого.
- Учет регистра. Во всех именах тегов и атрибутов, а также значениях атрибутов учитывается регистр. Убедитесь, что в вашем XML-коде используется правильный регистр.
- Текстовые строки не должны содержать зарезервированные символы XML. Например, для выделения курсивом строки всплывающего уведомления нельзя использовать теги <i> и </i>. Если вы хотите отобразить литеральные символы "<i>", то перед ними нужно указать escape-символы. Дополнительные сведения об escape-символах в XML см. в статье Сущности знаков XML и XAML.
- Значения, предоставляемые для атрибутов lang, должны соответствовать спецификации ITEF BCP 47.
- Локально создаваемые строки XML (для локальных или запланированных уведомлений) должны использовать кодировку UTF-16. При отправке через push-уведомления или опросе с URL-адреса строки должны использовать кодировку UTF-8.
- Если вы включаете в полезные данные XML элемент image с непустым атрибутом src, обязательно убедитесь, что ссылка указывает на допустимое изображение. В противном случае уведомление вызовет ошибку.
Если всплывающее уведомление не отображается, можно просмотреть ошибки в журнале событий. События, касающиеся ваших всплывающих уведомлений, можно найти в просмотре событий в разделе Журналы приложений и служб > Microsoft > Windows > Приложения > Microsoft-Windows-TWinUI > Работающий.
Проверка. Используйте проверку синтаксиса XML, например редактор Visual Studio, чтобы найти основные синтаксические ошибки. Найдите ссылку на соответствующий шаблон (ToastTemplateType), чтобы убедиться, что вы правильно назначаете элементы.
Решение. Измените XML-код или используйте другой шаблон, соответствующий вашему содержимому.
Проверка окончания срока действия уведомления
Возможная причина. Задано слишком маленькое значение окончания срока действия.
Если вы задаете окончание срока действия в уведомлении с помощью метода expirationTime (для локального уведомления) или поля заголовка X-WNS-TTL (в push-уведомлении), не забывайте, что эти значения представлены в миллисекундах. Например, если вы хотите, чтобы всплывающее уведомление отображалось ровно час, значение должно составлять 60 * 60 * 1000 = 3 600 000.
Решение. Используйте большее значение.
Отправка отчета об ошибке
Если решения, предложенные в этом разделе, не помогли устранить проблему, поместите сообщение на форумах Майкрософт, чтобы обсудить проблему с разработчиками Майкрософт и другими заинтересованными сторонами.
Для push-уведомлений, кроме описания проблемы, вас могут попросить сообщить URL-адрес канала и привести пример ответа службы WNS, включая коды ошибки HTTP и заголовки HTTP. Существуют специальные заголовки, которые сервер приложений регистрирует в журнале при отправке отчета об ошибке. Дополнительные сведения см. в разделе Запросы на обслуживание и заголовки ответа push-уведомлений.
Связанные разделы
Пример плиток приложения и индикаторов событий
Пример запланированных уведомлений
Пример всплывающих уведомлений
Пример push-уведомлений и периодических уведомлений
Краткое руководство: создание плитки по умолчанию с помощью редактора манифестов Visual Studio
Краткое руководство: отправка обновления плитки
Краткое руководство: отправка обновления индикатора событий
Краткое руководство: отображение уведомлений на экране блокировки
Краткое руководство: настройка периодических уведомлений
Создание расписания уведомления плитки
Использование очереди с локальными уведомлениями
Обзор плиток и уведомлений на плитках
Общие сведения об индикаторе событий
Общие сведения об экране блокировки