Depuración de los Centros de notificaciones

Esta sección describe algunas sugerencias sobre cómo depurar una solución que usa Azure Notification Hubs.

La depuración de notificaciones push puede ser un desafío porque hay muchos sistemas implicados: la aplicación de dispositivo, el back-end, el sistema de notificaciones de plataforma y, lo más probable, es un servicio de notificaciones push, como Azure Notification Hubs. En una situación habitual, es necesario dedicar algún tiempo a configurar el centro de notificaciones con las credenciales de inserción correctas, registrar su aplicación de dispositivo en el sistema de notificación de la plataforma y en el centro y, finalmente, actualizar el back-end para enviar notificaciones. Dada la complejidad de una arquitectura de este tipo, existe la posibilidad de cometer un error en algún punto del proceso que ocasione que las notificaciones no se reciban en el dispositivo. Afortunadamente, hay varias herramientas que resultan útiles al depurar la configuración de las notificaciones push.

  • Portal de administración de Azure

  • Explorador de servidores de Visual Studio

  • Explorador de Service Bus

Portal de administración de Azure

Puede usar el Portal de administración de Azure para supervisar el estado de las notificaciones y los registros, y puede enviar notificaciones de prueba. Puede tener acceso a esta funcionalidad en la pestaña Depurar de su centro de notificaciones, como se muestra a continuación:

Portal

Puede especificar qué servicio de notificaciones push desea usar al enviar la notificación de prueba: Windows Phone, Windows, iOS, Android o personalizado (mediante una plantilla). Puede enviar una notificación de prueba aleatoria o puede enviar notificaciones de prueba a un conjunto de registros específico. Para enviar una notificación de inserción de prueba, establezca los parámetros necesarios en la pestaña Depurar y, a continuación, haga clic en Enviar en la parte inferior de la pantalla.

Explorador de servidores de Visual Studio

El Explorador de servidores en Visual Studio se conecta a su suscripción de Microsoft Azure para permitirle trabajar con los servicios de Azure directamente desde el IDE de Visual Studio. Cuando se conecte, podrá realizar algunas pruebas y depuraciones limitadas de sus centros de notificaciones. La depuración en Visual Studio es especialmente recomendable al probar la aplicación en Visual Studio. Desde Visual Studio, puede revisar los registros de notificaciones push existentes para un centro de notificaciones determinado. También puede probar la configuración de los centros de notificaciones mediante el envío de mensajes de prueba a los dispositivos registrados.

Para diagnosticar un centro de notificaciones en Visual Studio, expanda el nodo Centros de notificaciones en el Explorador de servidores en Azure, a continuación, haga clic con el botón derecho en el nombre del concentrador y haga clic en Diagnosticar.

Sugerencia

Para desplazarse directamente al Portal de administración de Azure desde Visual Studio, haga clic con el botón derecho en el nombre del concentrador en el Explorador de servidores y, a continuación, haga clic en Abrir en el Portal de administración.

La siguiente es la pestaña de diagnóstico Registros de dispositivos, que muestra los registros existentes:

Existing notification hub registrations

Si tiene un gran número de registros, puede filtrar la lista en función de las etiquetas y ordenar la lista por columna. También puede editar las etiquetas de un registro existente seleccionando un registro existente y, a continuación, haciendo clic en el icono de etiqueta de edición.

La siguiente es la pestaña de diagnóstico Probar envío, que permite enviar un mensaje de prueba a un registro existente:

Visual Studio Notification Hubs test send

Puede enviar una notificación a los registros de cliente de manera aleatoria (difusión) o solo a los registros con una etiqueta específica. Al utilizar esta funcionalidad de prueba, Visual Studio garantiza que no más de 10 clientes recibirán notificaciones de prueba, y los resultados de la prueba se muestran en la tabla Resultado de mensaje. Este es el mismo comportamiento que establecer EnableTestSend en true en la API NotificationHubClient .

Al elegir un tipo de mensaje, se genera un mensaje de prueba con el formato correcto para la plataforma seleccionada y el tipo de notificación push.

En la ventana Propiedades aparece información adicional sobre el centro de notificaciones, incluido el estado de configuración, la información de la cadena de conexión y el período de vida del registro. El TTL se muestra en el formato de día y hora serializados de PxxDTyyH, donde xx es días y es horas, y el registro predeterminado de 90 días es P90D.

Explorador de Service Bus

También puede utilizar la herramienta Explorador de Bus de servicio para ayudar en el proceso de depuración. Puede descargar Service Bus Explorador aquí. Esta herramienta permite explorar los dispositivos que están registrados actualmente en el centro de notificaciones. También puede utilizar el Explorador de Bus de servicio para enviar notificaciones de prueba. Puede realizar todas estas tareas con el SDK de Azure y la biblioteca de cliente .NET, y también mediante REST, pero esta herramienta facilita más el proceso de depuración. Para obtener una introducción rápida a Service Bus Explorer, consulte este vídeo.

Cuando se inicia el Explorador de Bus de servicio, conéctelo al espacio de nombres mediante la cadena de conexión de ACS, y no la cadena de conexión de concentrador (es decir, las que se utilizan en la aplicación y el back-end). Por ejemplo:

Connection String

Las tareas siguientes son útiles al depurar una solución que usa centros de notificaciones:

  1. Asegúrese de que el dispositivo está registrado correctamente en el concentrador. Para ello, puede obtener todos los registros en su concentrador y comprobar que existe un registro con el valor correcto PNSHandle (por ejemplo, ChannelURI, token del dispositivo o registrationId) y el conjunto correcto de etiquetas. En el Explorador de Bus de servicio, seleccione el centro de notificaciones a la izquierda y, a continuación, consulte los registros mediante el botón Registros situado en la parte inferior. El código en la aplicación cliente debe proporcionar los registros. Por ejemplo:

    Service Bus Explorer

  2. Si tiene el registro, asegúrese de que cuando se envía un mensaje, el resultado indica que el proceso se ha realizado correctamente (puede verlo inmediatamente en el Explorador de Bus de servicio sin tener que esperar a actualizar el panel del portal). Si recibe algún otro resultado, consulte este tema de MSDN para ayudar a comprender lo que ha ocurrido (la mayoría de los problemas aquí están relacionados con la configuración de credenciales en el centro o en la aplicación cliente).

    Service Bus Explorer Para obtener descripciones por plataforma de los resultados, consulte el tema Métricas .

  3. Si el servicio de notificaciones de plataforma devuelve un resultado correcto, esto significa que el centro de notificaciones ha entregado correctamente su notificación al sistema de notificaciones de la plataforma. Si todavía no aparece, suele deberse a idiosincrasias específicas de cada plataforma. Por ejemplo:

    • En iOS, si se ejecuta la aplicación (incluso en segundo plano), esta detectará la notificación. Para hacer que aparezca la notificación, debe implementar el método application:didReceivePushNotification: en su clase AppDelegate. Además, si la carga json es incorrecta, APNS aceptará la notificación, pero el dispositivo no mostrará nada.

    • En Windows Phone, si la aplicación está en primer plano, no se mostrarán notificaciones del sistema.

    • En Android, asegúrese de que el agente de escucha de difusión está configurado correctamente y que los permisos se establecen en el manifiesto para los paquetes adecuados.

Finalmente, compruebe que está registrando y enviando el mismo tipo de notificaciones al centro de notificaciones. Si registra una plantilla, debe enviar una notificación de plantilla. Si registra notificaciones nativas, debe enviar una notificación nativa para la plataforma correcta.

Código de resultado

Cuando se envía una notificación de prueba desde el portal o el Explorador de Bus de servicio, se devuelve un resultado que señala si el proceso se ha completado correctamente o si se ha producido un error. En la tabla siguiente se enumeran los posibles resultados y su significado:

Clase de resultado Descripción

Correcto

La notificación se entregó correctamente a PNS.

Limitado

El PNS no ha aceptado la notificación porque las credenciales asociadas están limitadas.

ChannelThrottled

El PNS no ha aceptado la notificación porque el canal de destino (ChannelUri, token del dispositivo,...) se está limitando.

ChannelDisconnected

El PNS no ha aceptado la notificación porque el canal está actualmente desconectado.

Dropped

El PNS no ha aceptado la notificación porque la cola del canal está llena.

Problemas del PNS

PnsUnreachable

No se puede establecer una conexión con el PNS.

PnsInterfaceError

Error en Service Bus interfaz con el PNS.

PnsServerError

El PNS ha informado de un error interno.

PnsUnavailable

El PNS ha informado de que el servicio no está disponible.

Problemas de autenticación de PNS

TokenProviderUnreachable

Si debe obtenerse un token de autorización antes de ponerse en contacto con PNS (por ejemplo, WNS), este error se produce si no es posible ponerse en contacto con el servicio para obtener ese token.

Nota: Este no es el resultado cuando las credenciales son incorrectas.

TokenProviderInterfaceError

Error en la interfaz de Service Bus con el servicio de proveedor de tokens.

InvalidCredentials

Las credenciales especificadas en el registro no existen, están bloqueadas o Service Bus no pudieron usarlas correctamente (forexample, el PNS los rechazó o el servicio que proporciona el token de autorización los rechazó).

InvalidToken

Si debe obtenerse un token de autorización antes de ponerse en contacto con PNS (por ejemplo, WNS), este error se produce si PNS rechaza el token.

WrongToken

El token proporcionado al PNS es válido, pero no le otorga ningún derecho sobre el PNShandle especificado.

Problemas del PNSHandle

BadChannel

El PNS no reconoce el PNSHandle proporcionado como PNShandle válido.

ExpiredChannel

El PNS reconoce el PNSHandle, pero el PNShandle ya no es válido.

WrongChannel

El PNS reconoce el identificador, pero no es válido para la notificación actual.

Problemas de solicitudes

InvalidNotificationFormat

El PNS genera un error relacionado con el formato de la notificación.

Nota: Esto puede ocurrir si la plantilla proporcionada tiene un formato incorrecto o el resultado de aplicar la plantilla al mensaje entrante da como resultado una notificación con formato incorrecto.

InvalidNotificationSize

El PNS genera un error relacionado con el tamaño de la notificación.

Nota: como se indicó anteriormente.