Solución de problemas de notificaciones de icono, del sistema y de distintivo (aplicaciones de Windows en tiempo de ejecución)
[ Este artículo está destinado a desarrolladores de Windows 8.x y Windows Phone 8.x que escriben aplicaciones de Windows en tiempo de ejecución. Si estás desarrollando para Windows 10, consulta la documentación más reciente
En este tema se tratan los primeros pasos de solución de problemas que tienes que dar cuando tengas problemas con los iconos, las notificaciones de sistema y las notificaciones de distintivos, incluidos los diversos métodos de notificación: notificaciones locales, de inserción, periódicas y programadas.
Solución de problemas de las notificaciones de icono
En esta sección, se tratan algunos errores comunes que se te podrían presentar al trabajar con iconos y plantillas de iconos. Salvo que se especifique lo contrario, cada solución se aplica a todos los tipos de entrega de notificaciones: notificaciones locales, programadas, periódicas o de inserción.
No se muestra la notificación de icono local
El problema más común en esta situación es que el XML usado para definir la notificación es incorrecto. Sin embargo, hay otras causas posibles, que también se especifican en estos pasos:
- Comprueba la configuración del usuario
- Proporciona recursos de logotipo ancho o grande en el manifiesto de la aplicación
- Comprueba los tamaños de las imágenes
- Comprueba las direcciones URL
- Examina los formatos de las imágenes
- Comprueba la sintaxis de tu XML
- Comprueba la fecha de expiración de la notificación
- Asegúrate de que has habilitado la cola de notificaciones
Comprueba la configuración del usuario
Posible causa: el usuario o el administrador han deshabilitado las notificaciones. Comprueba si la aplicación proporciona una opción para activar o desactivar un icono dinámico en la barra de la aplicación y que esta no se encuentre desactivada. En cuanto al administrador, hay varias directivas de grupo que pueden deshabilitar las notificaciones. Consulta con el administrador para asegurarte de que las notificaciones estén habilitadas.
Corrección: habilita las notificaciones mediante la barra de la aplicación o haz que un administrador las habilite a través de una directiva de grupo.
Para obtener más información, consulta TileUpdater.setting.
Proporciona recursos de logotipo ancho o grande en el manifiesto de la aplicación
Posible causa: el manifiesto de la aplicación no especificaba una imagen de recurso de icono predeterminada para el tamaño de icono especificado en la notificación. Por ejemplo, si no se proporciona una imagen de icono ancho predeterminada, el icono nunca mostrará las plantillas de notificación de formato amplio. Idealmente, las notificaciones de icono deben proporcionar plantillas en la carga de la notificación para todos los tamaños de icono posibles porque, a menos que el icono utilice de manera intencionada únicamente una imagen mediana, el remitente nunca sabrá qué tamaño de icono aparecerá cuando la notificación llegue. Esta configuración depende completamente del usuario.
Corrección: en tu carga de notificaciones proporciona una versión de la actualización de cada tipo de imagen de logotipo predeterminada que hayas proporcionado en tu manifiesto. Tu icono se puede ajustar a cualquier tamaño que tenga una imagen de logotipo predeterminada.
Comprueba los tamaños de las imágenes
Posible causa: cada unas de las imágenes de una notificación debe tener una resolución inferior a 1024 x 1024 píxeles y un tamaño menor que 200 KB. Si alguna de las imágenes de las notificaciones supera alguna de estas dimensiones, se descartará la notificación.
Corrección: reduce el tamaño de las imágenes.
Para más información, consulta Tamaños de las imágenes de iconos y notificaciones del sistema.
Comprueba las direcciones URL
Posible causa: errores de sintaxis en las direcciones URL.
En las notificaciones, las imágenes se especifican a través de una referencia a un recurso o una ruta de acceso literal. Si se utiliza una ruta de acceso, se debe proporcionar mediante uno de estos tres protocolos:
Prefijo | Usa | Notas |
---|---|---|
http:// y https:// | Imágenes almacenadas en línea | Estas imágenes podrían almacenarse en caché localmente por lo que quizás tu servidor de imágenes no reciba una solicitud para dicha imagen. A estas direcciones URL se pueden anexar cadenas de consulta. Si eliges ignorar la cadena de consulta, asegúrate de que el servidor web devuelve la imagen original en lugar de un 404. Un ejemplo de cadena de consulta: ?scale=100&contrast=blk&lang=en-US Ten en cuenta que para recuperar el contenido de una notificación de Internet, tu aplicación debe declarar la funcionalidad "Internet (cliente)" en su manifiesto de la aplicación. |
ms-appx:/// | Las imágenes se incluyen en el paquete de la aplicación | Estas imágenes forman parte de la instalación de tu aplicación. Ten en cuenta que esta referencia necesita una triple barra diagonal después de los dos puntos. Después de esa triple barra diagonal, el identificador uniforme de recursos (URI) acepta la barra diagonal (/) o la barra diagonal inversa (\) para separar las carpetas de una ruta de acceso, pero la mayoría de los lenguajes de programación requieren que uses un carácter de escape cuando especifiques una barra diagonal inversa (\\). |
ms-appdata:///local/ | Imágenes guardadas localmente por tu aplicación | Esta ubicación corresponde a la carpeta devuelta por Windows.Storage.ApplicationData.current.localFolder. Ten en cuenta que esta referencia necesita una triple barra diagonal después de los dos puntos. En la ruta de acceso, los separadores de carpetas deben usar caracteres de escape (\\). |
Nota El carácter '/' funciona como separador en todos los tipos de especificación. Te recomendamos usar '/' en lugar de '\' en todos los casos para evitar una confusión inadvertida con los caracteres de escape.
Ejemplos de casos bien formados:
URL |
---|
https://www.contoso.com/icon.jpg |
ms-appx:///images/icon.png |
ms-appdata:///local/myDrawing.jpg |
Ejemplos de casos mal formados:
URL | Notas |
---|---|
https://www.contoso.com\fail.png | Las rutas de acceso HTTP deben usar el carácter /. No uses el carácter \. |
http:www.contoso.com | Las rutas de acceso HTTP requieren una doble barra diagonal (//) después de los dos puntos. |
"ms-appdata:///local/c:\\images\\Drawing.jpg" | Una aplicación no puede hacer referencia a imágenes fuera de su almacenamiento local. |
"ms-appx://images/triangle.png" | Con "ms-appx:", usa una triple barra diagonal en lugar de una doble. |
Examina los formatos de las imágenes
Posible causa: las imágenes se encuentran en un formato incompatible.
Las notificaciones solo pueden usar imágenes en los formatos .gif, .png o .jpg/.jpeg. El formato de la imagen también debe coincidir con la extensión. Si simplemente cambias el nombre de un tipo de archivo no compatible por una extensión compatible, no funcionará.
La causa más común de los errores de formato de imagen es la serialización de mapas de bits en el almacenamiento en Windows.Storage.ApplicationData.current.localFolder. Asegúrate de invocar tu formato preferido, de lo contrario la imagen se almacenará como mapa de bits de Windows y en el encabezado se incluirá "BMP"— como tipo no admitido.
Para comprobar: en primer lugar, comprueba que puede enviar correctamente una notificación solo de texto para limitar el problema a la imagen. Una forma de comprobar el formato de la imagen consiste en cargar la imagen en un programa de procesamiento de imágenes y guardarla como archivo .jpg. Si haces referencia a este nuevo archivo .jpg en la notificación y el error no vuelve a producirse, es probable que se tratara de un error de formato. También puedes abrir el archivo en el editor binario de Microsoft Visual Studio y examinar su encabezado.
Corrección: cambia o corrige los formatos de la imagen.
Comprueba el contenido y la sintaxis del XML
Posible causa: errores de validación o sintaxis del XML.
Además de la sintaxis básica, asegúrate de que el XML está completo y es correcto, en especial si has construido la carga como una cadena sin utilizar las API ni la biblioteca NotificationsExtensions. Los siguientes son algunos puntos de error habituales en el contenido XML:
- Distinción de mayúsculas y minúsculas. Los nombres de etiquetas, los nombres de atributos y los valores de atributo distinguen mayúsculas de minúsculas. Asegúrate de que, en tu XML, las mayúsculas y minúsculas son correctas.
- Debe proporcionarse un elemento binding para cada tamaño de icono. Deberías proporcionar un elemento binding para cada uno de los tamaños de icono que admita tu aplicación (esto es, las imágenes de logotipo que proporcionaste en tu manifiesto) en cada notificación que envíes.
- Las cadenas de texto no deben contener caracteres XML reservados. Por ejemplo, no puedes dar formato de cursiva a las cadenas del icono con las etiquetas <i> e </i>. Si tu intención es mostrar los caracteres literales "<i>", estos deben incluir los caracteres de escape correctos. Para obtener más información sobre los caracteres de escape en XML, consulta el tema sobre entidades de caracteres XML y XAML.
- Los valores proporcionados para los atributos lang deben cumplir con la especificación ITEF BCP 47.
- Las cadenas XML creadas localmente (para notificaciones locales o programadas) deben usar la codificación UTF-16. Cuando se envían mediante notificaciones de inserción o se sondean desde una dirección URL, las cadenas deben usar la codificación UTF-8.
- Si incluyes un elemento image en tu carga XML con un atributo src no vacío, asegúrate de incluir una referencia a una imagen válida o, de lo contrario, se descartará la notificación.
Puedes usar el registro de eventos para comprobar si hay errores cuando no se muestra la notificación de icono. Busca eventos que incluyen la notificación de icono en el Visor de eventos en Registros de aplicaciones y servicios > Microsoft > Windows > Aplicaciones > Microsoft-Windows-TWinUI/Operational.
Para comprobar: usa un corrector sintáctico de XML, como el editor de Visual Studio, para buscar errores de sintaxis básicos. Mira la referencia de plantilla apropiada (TileTemplateType) para asegurarte de tener la cantidad correcta de imágenes y de asignar las imágenes correctas al índice de imágenes correcto.
Corrección: cambia el XML o usa una plantilla diferente que coincida con el contenido. Asimismo, deberías plantearte utilizar la biblioteca NotificationsExtensions para evitar manipular el XML directamente.
Asegúrate de que la notificación no haya expirado
Posible causa: la fecha de expiración se ha establecido en un valor demasiado pequeño.
Si configuras la fecha de expiración de la notificación a través del método expirationTime (para una notificación local) o el campo de encabezado X-WNS-TTL (en una notificación de inserción), ten en cuenta que los valores representan milisegundos. Por ejemplo, si quieres que una notificación de icono dure exactamente una hora, el valor deberá ser 60 * 60 * 1000 = 3600000.
Corrección: usa un valor más grande.
Asegúrate de haber habilitado la cola de notificaciones si quieres notificaciones cíclicas
Posible causa: la cola de notificaciones de icono no se ha habilitado.
De manera predeterminada, los iconos solo muestran una actualización por vez y una nueva notificación entrante reemplaza a la existente. Si quieres mostrar las últimas cinco notificaciones de una rotación, debes llamar a TileUpdater.enableNotificationQueue(true) en el código de iniciación de la aplicación. Solo es necesario hacer esto una vez durante la vigencia de la aplicación. Para obtener más información, consulta Cómo usar la cola de notificaciones con notificaciones locales.
Corrección: llama a enableNotificationQueue(true) en el código de inicialización. Además, asegúrate de que las etiquetas de notificación sean únicas.
Solución de problemas de las notificaciones programadas
No aparece una notificación del sistema o icono programada
Posible causa: a menudo, si tienes problemas con las actualizaciones de iconos o con notificaciones del sistema que no aparecen, el contenido XML de la notificación tiene un formato incorrecto. Las notificaciones del sistema y de icono programadas, al igual que las notificaciones no programadas, deben cumplir con los esquemas XML de notificaciones de icono y notificaciones del sistema.
Corrección: prueba el XML mediante una notificación local como primer paso para depurar los problemas de envío de las notificaciones programadas. Para obtener más información, consulta la sección No se muestra la notificación de icono local o No se muestra la notificación del sistema local en este tema.
Error en el llamado de la aplicación al método AddToSchedule
Posible causa: has excedido la cantidad máxima permitida de notificaciones programadas.
Corrección: se producirá un error tanto en TileUpdater.addToSchedule como en ToastNotifier.addToSchedule si intentas programar más de 4096 notificaciones. Reduce la cantidad de notificaciones programadas.
Posible causa: la notificación está programada para una hora en el pasado con relación a la hora actual del reloj del sistema.
Corrección: asegúrate de que la hora de la notificación programada sea en el futuro. Examina la hora del reloj del sistema.
Solución de problemas de las notificaciones (de sondeo) periódicas
Las notificaciones periódicas no actualizan el icono o el distintivo
Es posible que te encuentres con uno o más los problemas que eviten que se muestren las notificaciones periódicas:
- El servicio web no devuelve un documento XML válido que corresponda al esquema XML del icono. Si experimentas problemas al implementar notificaciones periódicas, primero comprueba que el formato del XML del icono sea correcto. Cuando se depure un problema con notificaciones periódicas, como primer paso, te recomendamos probar el XML a través de una notificación local. Para obtener más información, consulta la sección No se muestra la notificación de icono local en este tema, así como Inicio rápido: enviar una actualización de icono.
- El texto devuelto de las solicitudes de sondeo no tiene formato UTF-8. Se requiere la codificación UTF-8.
- El servicio no responde correctamente a la solicitud HTTP GET que usa Windows cuando sondea la dirección URL proporcionada para el servicio. Se admite tanto el protocolo HTTP como el HTTPS.
- La aplicación no declaró capacidad de Internet en el archivo del manifiesto de la aplicación (package.appxmanifest). En el editor de manifiestos de Visual Studio, encontrarás esta opción en la pestaña Capacidades como Internet (cliente). Si no se declara esta funcionalidad para la aplicación, Windows no sondeará el servicio.
- Asegúrate de que los valores que establecen los encabezados X-WNS-Tag y X-WNS-Expires tengan el formato adecuado. X-WNS-Expires debe utilizar uno de los formatos siguientes:
- Dom, 06 nov 1994 08:49:37 GMT
- Domingo, 06-nov-94 08:49:37 GMT
- Dom nov 6 08:49:37 1994
Las actualizaciones periódicas se han retrasado
- Windows puede retrasar el sondeo de las direcciones URL hasta 15 minutos si es necesario para optimizar la energía y el rendimiento.
- El servicio no estaba disponible cuando se estableció contacto con la dirección URL. Cuando el servicio no esté disponible, no volverá a establecerse contacto con él hasta el próximo intervalo de sondeo.
Solución de problemas de notificaciones de inserción
En esta sección, se tratan algunos errores comunes que se te podrían presentar al trabajar con notificaciones de inserción.
- Comprobar registros de eventos
- La notificación de inserción recibe una respuesta "200 Correcto", pero no se muestra
- La notificación de inserción devuelve un código que no es "200 Correcto"
- Errores al intentar crear un canal de notificación de inserción
Comprobar registros de eventos
Si el icono o las notificaciones de inserción no se muestran como esperabas, revisa los registros de eventos.
- Si la notificación se recibe, pero no se muestra: inicia el Visor de eventos y examina el registro Microsoft-Windows-TWinUI/Operational en Aplicaciones y servicios\Microsoft\Windows\Apps.
- Si la notificación no se recibe: inicia el Visor de eventos y examina el registro operativo en Aplicaciones y servicios\Microsoft\Windows\PushNotifications-Platform.
La notificación de inserción recibe una respuesta "200 Correcto", pero no se muestra
Si los servicios de notificaciones de inserción de Windows (WNS) devuelven una respuesta "200 Correcto", le entregará la notificación al cliente si este se encuentra en línea. Si has verificado que el cliente se encuentra en línea, pero no se muestra la notificación, has un recorrido con los siguientes paso:
Causa: errores de XML en el contenido de la notificación.
Corrección: comprueba la sintaxis básica y asegúrate de que el XML está completo y es correcto. Los siguientes son algunos puntos de error habituales en el contenido XML:
- Distinción de mayúsculas y minúsculas. Los nombres de etiquetas, los nombres de atributos y los valores de atributo distinguen mayúsculas de minúsculas. Asegúrate de que, en tu XML, las mayúsculas y minúsculas son correctas.
- Debe proporcionarse un elemento binding para cada formato de icono admitido. Debes proporcionar un elemento binding para cada tamaño de icono que admitas en cada notificación que envíes.
- Las cadenas de texto no deben contener caracteres XML reservados. Por ejemplo, no puedes dar formato de cursiva a las cadenas del icono con las etiquetas <i> e </i>. Si tu intención es mostrar los caracteres literales "<i>", estos deben incluir los caracteres de escape correctos. Para obtener más información sobre los caracteres de escape en XML, consulta el tema sobre entidades de caracteres XML y XAML.
- Los valores proporcionados para los atributos lang deben cumplir con la especificación ITEF BCP 47.
- Las cadenas XML que se envían mediante notificaciones de inserción deben usar la codificación UTF-8.
- Si incluyes un elemento image en tu carga XML con un atributo src no vacío, asegúrate de incluir una referencia a una imagen válida o, de lo contrario, se descartará la notificación.
Si quieres obtener más información, consulta la documentación sobre los esquemas de iconos, notificaciones del sistema y notificaciones.
Causa: uso inapropiado de parámetros de la API de notificaciones de inserción
Corrección: consulta la documentación de la API en el espacio de nombres Windows.Networking.PushNotifications para obtener detalles.
Causa: el tipo de encabezado no coincide con el contenido de la notificación. Si no se le asigna un valor al encabezado tipo X-WNS—icono, notificación o notificación del sistema—que corresponda con la plantilla de notificación especificada en la carga, no se mostrará la notificación. Esta no coincidencia provocará un error en el cliente y se interrumpirá la notificación.
Corrección: consulta el tema sobre encabezados de respuesta y solicitud del servicio de notificaciones de inserción para asegurarte de que el servidor de aplicaciones esté usando el valor correcto para el encabezado tipo X-WNS.
Causa: el valor del período de vida (TTL) establecido en el encabezado X-WNS-TTL es demasiado pequeño.
Solución: proporcionar un valor de TTL más grande, teniendo en cuenta que se especifica en segundos.
Si aún no ves que se muestra la notificación después de ocuparte de los elementos de los pasos anteriores, consulta los pasos de solución de problemas para notificaciones locales en la sección No se muestra la notificación de icono local de este tema, para obtener más sugerencias.
La notificación de inserción devuelve un código que no es "200 Correcto"
Si WNS no devuelve "200 Correcto", no se enviará la notificación al cliente. Si el código devuelto está en los 400s, entonces, como desarrollador, deberías poder corregir el problema. Si quieres obtener información acerca del significado de códigos específicos, consulta la referencia de códigos de respuesta de Servicios de notificaciones de inserción de Windows (WNS). Para ver un código de ejemplo donde se muestra cómo detectar y controlar estos errores, consulta el tema Inicio rápido: enviar una notificación de inserción o descárgate la muestra Muestra de notificaciones de inserción y periódicas.
Nota Para los errores no indicados aquí de forma específica, consulta COM Error Codes (WPN, MBN, P2P, Bluetooth).
- La solicitud de notificación devuelve "400 Solicitud incorrecta"
- La solicitud de notificación devuelve "401 Sin autorización"
- La solicitud de notificación devuelve "401 Sin autorización", el token ha caducado
- La solicitud de notificación devuelve "403 Prohibido"
- La solicitud de notificación devuelve "404 No se encuentra"
- La solicitud de notificación devuelve "406 No aceptable"
- La solicitud de notificación devuelve "410 Ya no existe"
La solicitud de notificación devuelve "400 Solicitud incorrecta"
Causa: el uso de uno o más encabezados de WNS puede ser incorrecto o la solicitud HTTP puede no ser válida.
Corrección: consulta el tema sobre encabezados de respuesta y solicitud del servicio de notificaciones de inserción para asegurarte de que el servidor de aplicaciones esté usando todos los encabezados personalizados como se describe.
La solicitud de notificación devuelve "401 Sin autorización"
Causa: el servidor de aplicaciones debe usar el identificador de seguridad del paquete (SID del paquete) y la clave secreta correctos que recibiste al registrar la aplicación. Si has cambiado tu clave secreta en el panel de la Tienda Windows, también deberás actualizar el servidor de aplicaciones. Si quieres obtener más información, consulta la introducción a las notificaciones de inserción.
Corrección: visita el panel de la Tienda Windows para comprobar el SID y el secreto del paquete.
La solicitud de notificación devuelve "401 Sin autorización", el token ha caducado
Causa: un token de acceso tiene una duración limitada. Si envías una notificación con un token de acceso caducado, las credenciales del servidor de aplicaciones no son válidas y la notificación no se puede enviar.
Corrección: solicita un nuevo token de acceso de WNS mediante la autenticación a través de tu identificador de seguridad del paquete (SID del paquete) y de la clave secreta. Si quieres obtener más información, consulta la Introducción a las notificaciones de los Servicios de notificaciones de inserción de Windows (WNS).
La solicitud de notificación devuelve "403 Prohibido"
Causa: este error se produce cuando el token de acceso presentado no coincide con las credenciales requeridas para enviar notificaciones a la correspondiente dirección URL del canal. Todas las aplicaciones deben registrarse en la Tienda Windows para recibir las credenciales para el servidor de aplicaciones. Para cada aplicación, solo las credenciales proporcionadas por la Tienda Windows pueden usarse para enviar notificaciones a esa aplicación y se pueden usar solo para esa aplicación en particular.
Corrección: inicia sesión en el panel de la Tienda Windows con la cuenta de desarrollador. Selecciona la aplicación y haz clic en "Características avanzadas" -> "Administrar la configuración del servicio de nube". Selecciona "Identificación de la aplicación" para leer las instrucciones sobre la actualización del manifiesto de las aplicaciones para que coincida con las credenciales del servicio de nube.
La solicitud de notificación devuelve "404 No se encuentra"
Causa: por lo general, este error significa que la dirección URL del canal no está formada correctamente. La dirección URL del canal no debe alterarse ni modificarse cuando envías una notificación a WNS. La dirección URL del canal siempre debe tratarse como una cadena opaca—no necesitas examinar ni incluso conocer su contenido.
Corrección: comprueba que el código no esté modificando la dirección URL de canal, ya sea mediante el cambio en uno o más de sus caracteres, o mediante el cambio de la codificación.
La solicitud de notificación devuelve "406 No aceptable"
Causa: WNS tiene directivas de seguridad para evitar que aplicaciones maliciosas tengan un impacto negativo en el servicio para otros usuarios y desarrolladores. Una cantidad excesiva de notificaciones en un período corto de tiempo puede hacer que WNS interrumpa las notificaciones de manera explícita.
Corrección: revisa la frecuencia de las notificaciones para ver si es posible disminuirla u optimizarla para crear una mejor experiencia.
La solicitud de notificación devuelve "410 Ya no existe"
Causa: la dirección URL de canal ha caducado. No se pueden enviar más notificaciones hasta que la aplicación ejecute y solicite una nueva dirección URL del canal.
Corrección: la aplicación de la Tienda Windows siempre debe solicitar una dirección URL de canal cuando se inicia. No se garantiza que la dirección URL de canal que se asigna siga siendo la misma. Si la dirección URL ha cambiado, el cliente deberá actualizar la información en el servidor de nube. Para obtener más información, consulta Cómo solicitar, crear y guardar un canal de notificaciones.
Errores al intentar crear un canal de notificación de inserción
- La creación de un canal de notificación provoca un error ERROR_NO_NETWORK
- La creación de un canal de notificación provoca un error WPN_E_CLOUD_INCAPABLE
- La creación de un canal de notificación provoca un error WPN_E_INVALID_APP
Nota Para los errores no indicados aquí de forma específica, consulta COM Error Codes (WPN, MBN, P2P, Bluetooth).
La creación de un canal de notificación provoca un error ERROR_NO_NETWORK
Causa: WNS requiere una conexión a Internet para crear un canal de notificación.
Corrección: comprueba la conectividad a Internet.
La creación de un canal de notificación provoca un error WPN_E_CLOUD_INCAPABLE
Causa: la aplicación no declaró la funcionalidad de Internet en el archivo del manifiesto de la aplicación (package.appxmanifest).
Corrección: asegúrate de que el manifiesto de la aplicación haya declarado la funcionalidad de Internet. En el editor de manifiestos de Visual Studio, encontrarás esta opción en la pestaña Capacidades como Internet (cliente). Para obtener más información, consulta Capabilities.
La creación de un canal de notificación provoca un error WPN_E_INVALID_APP
Causa: la aplicación debe usar un nombre de paquete válido. Si aún no has recibido uno, puedes obtenerlo a través del portal de la Tienda Windows, en "Características avanzadas".
Corrección: para obtener detalles sobre cómo recuperar un identificador de seguridad del paquete (PKSID) para la aplicación de la Tienda Windows, consulta Cómo autenticar con los Servicios de notificaciones de inserción de Windows (WNS).
Solución de problemas de las notificaciones del sistema
En esta sección, se tratan algunos errores comunes que se te podrían presentar al trabajar con notificaciones del sistema y plantillas de notificaciones del sistema. En gran medida, la mayoría de los pasos para la solución de problemas usados por las notificaciones del sistema son los mismos usados con las notificaciones de iconos. Salvo especificación en contrario, cada solución se aplica a todos los tipos de entrega de notificaciones: local, programado o notificaciones de inserción.
No se muestra la notificación del sistema local
El problema más común en esta situación es que el XML usado para definir la notificación es incorrecto. Sin embargo, hay otras causas posibles, que se especifican en estos pasos:
- Comprueba la configuración del usuario
- Comprueba las entradas del manifiesto de aplicaciones
- Comprueba los tamaños de las imágenes
- Comprueba las direcciones URL
- Examina los formatos de las imágenes
- Comprueba la sintaxis de tu XML
- Comprueba la fecha de expiración de la notificación
Comprueba la configuración del usuario
Posible causa: el usuario o el administrador han deshabilitado las notificaciones a través de la configuración. Comprueba el interruptor de inicio y apagado de las notificaciones globales y los interruptores de inicio y apagado por aplicación en la página configuración del equipo-> Notificaciones. En cuanto al administrador, hay varias directivas de grupo que pueden deshabilitar las notificaciones. Consulta con el administrador para asegurarte de que las notificaciones estén habilitadas.
Corrección: habilita las notificaciones a través de la configuración o haz que un administrador las habilite a través de una directiva de grupo.
Si quieres obtener más información, consulta el tema de Inicio rápido: envío de una notificación del sistema.
Comprueba las entradas del manifiesto de aplicaciones
Posible causa: el manifiesto de la aplicación no tenía configurada la información apropiada para habilitar la entrega de notificaciones del sistema. Asegúrate de que la configuración "Compatibilidad con notificaciones del sistema" en el manifiesto de la aplicación, esté definido en "Sí". Si se recupera algún contenido de notificación, como por ejemplo una imagen, de Internet, asegúrate de que la funcionalidad "Internet (cliente)" esté declarada en el manifiesto de la aplicación.
Corrección: habilita las entradas específicas de las notificaciones en el manifiesto de la aplicación.
Si quieres obtener más información, consulta el tema sobre el inicio rápido: creación de un icono predeterminado mediante el editor del manifiesto de Visual Studio.
Comprueba los tamaños de las imágenes
Posible causa: la resolución de las imágenes para todas las notificaciones debe ser inferior a 1024 x 1024 píxeles y tener un tamaño menor que 200 KB. Si alguna de las imágenes de las notificaciones supera alguna de estas dimensiones, se descartará la notificación.
Corrección: reduce el tamaño de las imágenes.
Para más información, consulta Tamaños de las imágenes de iconos y notificaciones del sistema.
Comprueba las direcciones URL
Posible causa: errores de sintaxis en las direcciones URL.
En las notificaciones, las imágenes se proporcionan como una referencia a un recurso o una ruta de acceso literal. Si se utiliza una ruta de acceso, se debe proporcionar mediante uno de estos tres protocolos:
Prefijo | Usa | Notas |
---|---|---|
http:// y https:// | Imágenes almacenadas en línea | Estas imágenes podrían almacenarse en caché localmente por lo que quizás tu servidor de imágenes no reciba una solicitud para dicha imagen. A estas direcciones URL se anexan cadenas de consulta. Si eliges ignorar la cadena de consulta, asegúrate de que el servidor web devuelve la imagen original en lugar de un 404. Un ejemplo de cadena de consulta: ?scale=100&contrast=blk&lang=en-US Ten en cuenta que para recuperar el contenido de una notificación de Internet, tu aplicación debe declarar la funcionalidad "Internet (cliente)" en su manifiesto de la aplicación. |
ms-appx:/// | Las imágenes se incluyen en el paquete de la aplicación | El URI acepta la barra diagonal (/) o la barra diagonal inversa (\) para separar las carpetas de una ruta de acceso, pero la mayoría de los lenguajes de programación requieren que uses un carácter de escape cuando especifiques una barra diagonal inversa (\\). Ten en cuenta que esta referencia necesita una triple barra diagonal después de los dos puntos. |
ms-appdata:///local/ | Imágenes guardadas localmente por tu aplicación | Esta ubicación corresponde a la carpeta devuelta por Windows.Storage.ApplicationData.current.localFolder. En la ruta de acceso, los separadores de carpetas deben usar caracteres de escape (\\). Ten en cuenta que esta referencia necesita una triple barra diagonal después de los dos puntos. |
Nota El carácter '/' funciona como separador en todos los tipos de especificación. Te recomendamos usar '/' en lugar de '\' en todos los casos para evitar una confusión inadvertida con los caracteres de escape.
Ejemplos de casos bien formados:
URL |
---|
https://www.contoso.com/icon.jpg |
ms-appx:///images/icon.png |
ms-appdata:///local/myDrawing.jpg |
Ejemplos de casos mal formados:
URL | Notas |
---|---|
https://www.contoso.com\fail.png | Las rutas de acceso HTTP deben usar el carácter /. No uses el carácter \. |
http:www.contoso.com | Las rutas de acceso HTTP requieren una doble barra diagonal (//) después de los dos puntos. |
"ms-appdata:///local/c:\\images\\Drawing.jpg" | Una aplicación no puede hacer referencia a imágenes fuera de su almacenamiento local. |
"ms-appx://images/triangle.png" | Con "ms-appx:", usa una triple barra diagonal en lugar de una doble. |
Examina los formatos de las imágenes
Posible causa: las imágenes se encuentran en un formato incompatible.
Las notificaciones solo pueden usar imágenes en los formatos .png, .jpg/.jpeg o .gif. El formato de la imagen también debe coincidir con la extensión. Si simplemente cambias el nombre de un tipo de archivo no compatible por una extensión compatible, no funcionará.
La causa más común de los errores de formato de imagen es la serialización de mapas de bits en el almacenamiento en Windows.Storage.ApplicationData.current.localFolder. Asegúrate de invocar el formato preferido, de lo contrario la imagen se almacenará como mapa de bits de Windows y en el encabezado se incluirá "BMP".
Para comprobar: una forma de comprobar el formato de la imagen consiste en cargar la imagen en un programa de procesamiento de imágenes y guardarla como un archivo .jpg. Si haces referencia a este nuevo archivo .jpg en la notificación y el error no vuelve a producirse, es probable que se tratara de un error de formato. También puedes abrir el archivo en el editor binario de Visual Studio y examinar su encabezado.
Corrección: cambia o corrige los formatos de la imagen.
Comprueba el contenido y la sintaxis del XML
Posible causa: errores de validación o sintaxis del XML.
Además de la sintaxis básica, asegúrate de que el XML está completo y es correcto. Los siguientes son algunos puntos de error habituales en el contenido XML:
- Distinción de mayúsculas y minúsculas. Los nombres de etiquetas, los nombres de atributos y los valores de atributo distinguen mayúsculas de minúsculas. Asegúrate de que, en tu XML, las mayúsculas y minúsculas son correctas.
- Las cadenas de texto no deben contener caracteres XML reservados. Por ejemplo, no puedes dar formato de cursiva a las cadenas del icono con las etiquetas <i> e </i>. Si tu intención es mostrar los caracteres literales "<i>", estos deben incluir los caracteres de escape correctos. Para obtener más información sobre los caracteres de escape en XML, consulta el tema sobre entidades de caracteres XML y XAML.
- Los valores proporcionados para los atributos lang deben cumplir con la especificación ITEF BCP 47.
- Las cadenas XML creadas localmente (para notificaciones locales o programadas) deben usar la codificación UTF-16. Cuando se envían mediante notificaciones de inserción o se sondean desde una dirección URL, las cadenas deben usar la codificación UTF-8.
- Si incluyes un elemento image en tu carga XML con un atributo src no vacío, asegúrate de incluir una referencia a una imagen válida o, de lo contrario, se producirá un error en la notificación.
Puedes usar el registro de eventos para comprobar si hay errores cuando no se muestra la notificación del sistema. Busca eventos que incluyen la notificación del sistema en el Visor de eventos en Registros de aplicaciones y servicios > Microsoft > Windows > Aplicaciones > Microsoft-Windows-TWinUI > Operational.
Para comprobar: usa un corrector sintáctico de XML, como el editor de Visual Studio, para buscar errores de sintaxis básicos. Mira la referencia de plantilla apropiada (ToastTemplateType) para asegurarte de asignar correctamente los elementos.
Corrección: cambia el XML o usa una plantilla diferente que coincida con el contenido.
Asegúrate de que la notificación no haya expirado
Posible causa: la fecha de expiración se ha establecido en un valor demasiado pequeño.
Si configuras el tiempo de expiración de la notificación a través del método expirationTime (para una notificación local) o el campo de encabezado X-WNS-TTL (en una notificación de inserción), ten en cuenta que los valores representan milisegundos. Por ejemplo, si quieres que una notificación del sistema dure exactamente una hora, el valor deberá ser 60 * 60 * 1000 = 3600000.
Corrección: usa un valor más grande.
Cómo informar un problema
Si has intentado las soluciones que se sugieren en este tema y no has logrado resolver el problema, publica un mensaje en los foros de Microsoft para tratarlo con los desarrolladores de Microsoft y otras partes interesadas.
Para las notificaciones de inserción, además de una descripción del problema, es posible que se te solicite proporcionar una dirección URL de canal y un ejemplo de la respuesta que recibiste de WNS, incluidos tanto los códigos de error como los encabezados de HTTP. Hay encabezados específicos que el servidor de aplicaciones debe registrar cuando se informa un problema. Si quieres obtener más información, consulta el tema sobre encabezados de respuesta y solicitud del servicio de notificaciones de inserción.
Temas relacionados
Ejemplo de iconos y notificaciones de una aplicación
Muestra de notificaciones programadas
Ejemplo de notificaciones del sistema
Muestra de notificaciones de inserción y periódicas
Inicio rápido: crear un icono predeterminado con el editor de manifiestos de Visual Studio
Inicio rápido: enviar una actualización de icono
Inicio rápido: Enviar una actualización de notificación
Inicio rápido: mostrar notificaciones en la pantalla de bloqueo
Inicio rápido: configurar notificaciones periódicas
Catálogo de plantillas de icono
Cómo programar una notificación de icono
Cómo usar la cola de notificaciones con notificaciones locales
Introducción a los iconos y a las notificaciones de icono
Introducción a los distintivos
Introducción a las pantallas de bloqueo