¿Cómo funcionan las notificaciones push en Windows Phone?

Muchos de nosotros estamos ya acostumbrados al uso de notificaciones push. Algunos de los lectores es posible que no conozcan lo que son, pero si decimos que sin ellas no funcionan las notificaciones de mensajes nuevos en WhatsApp, seguro que ya sabéis de qué hablamos. Sí, son esas notificaciones en tiempo real, que esperamos recibir para estar al día de la forma más rápida posible, pero que además, no queremos que nos gasten batería.

Vamos a hablaros sobre estos mensajes, su necesidad, su funcionamiento y hasta analizaremos algunos posibles problemas.

¿Por qué son necesarios? ¿Cuál es su uso?

Pues, como decíamos anteriormente, queremos estar al día y saber cuando alguien nos ha enviado un mensaje, escrito en el muro de Facebook, hemos recibido un correo, o cualquier otro evento. Pues bien, si para ello, cada aplicación del móvil tuviera que estar conectada a su servidor para ser notificada, sería un gasto de procesador, batería y memoria. Y precisamente, eso no es lo que sobra en nuestros móviles.

La solución es centralizar todas esas conexiones en una sola, y que las aplicaciones las reciban por ese método. Es lo que se entiende como que las notificaciones son “empujadas” (pushed) a las aplicaciones, y no al revés. Así, no es necesario que cada aplicación esté corriendo en segundo plano para recibirlas. Un punto muy importante para Windows Phone, ya que eso nos hace comprender varios puntos:

La eficiencia de batería. Es el propio sistema operativo quien las gestiona, y por lo tanto, da igual que instalemos 1 aplicación con notificaciones push o 10. El gasto de batería va en función del volumen de notificaciones y nunca en función de cuantas aplicaciones tenga instalada. Ninguna se ejecuta en segundo plano para este punto.

Tonos personalizados. Aunque desde luego es posible, como hemos visto en GDR3, no es fácil personalizar el tono de la notificación, ya que es el propio sistema operativo quien la recibe, y no la aplicación. Es por lo que, hasta ahora, todas las notificaciones sonaban de la misma manera en Windows Phone.

Acciones ante notificaciones: Hasta Windows Phone 8, y sólo en determinadas ocasiones, es posible que se realicen acciones ante una notificación push. Esto es lo que permite que ante una notificación de Skype de llamada, pueda abrirse la aplicación y sonar. En Windows Phone 7, ese enlace entre la notificación y la aplicación no es posible y por lo tanto, no es posible recibir llamadas en Skype sin que esté abierta la aplicación.

Tipos de notificaciones

En Windows Phone, existen más tipos de notificaciones que en otras plataformas de móvil. Así tenemos:

Toast: que presenta un mensaje en la parte superior de la pantalla durante 10 segundos. Puede contener un enlace que nos lleve a la aplicación si la notificación es pulsada. Por ejemplo, ir a una conversación cuando se pulsa sobre la notificación de un mensaje.

Tile: que incrementa un contador en el Live Tile. En este tipo de notificaciones, también se pueden enviar imágenes, y así actualizar el Live Tile con ellas. Todo ello sin abrir la aplicación.

Raw: que se usan para enviar información de aplicaciones. Normalmente se utilizan para juegos, ya que en este caso sí que se necesita que la aplicación esté funcionando en primer plano.

¿Cómo funcionan?

Lo primero que tenemos que conocer, es que todas las notificaciones en Windows Phone, se realizan a través de servidores de Microsoft, que se denominan MPNS (Microsoft Push Notificación Service). Os mostramos a continuación cuales son los pasos:

1) La aplicación pide una URI (Uniform Resource Identifier, o identificador uniforme de recursos) al servicio push cliente que está instalado en el terminal.

2) Ese servicio en el terminal se comunica con el servidor MPNS y recibe de éste el URI.

3) El servicio cliente push devuelve a la aplicación la URI recibida.

4) La aplicación envía el valor de la URI al servicio en la nube de la aplicación concreta. Por ejemplo, Skype, WhatsApp, etc.

5) Cuando el servidor de la aplicación quiere enviarnos una notificación, utiliza esa URI para ponerse en contacto con el servidor MPNS e indicarle así el dato a enviar.

6) El servidor MPNS toma esos datos, y envía la notificación a nuestro móvil, siendo el servicio cliente push el que recibe la notificación y muestra el mensaje o actualiza el Live Tile.

Cuando el servicio envía la notificación al servidor MPNS, puede indicarle que la notificación se tramite lo antes posible, con un retraso de 450 segundos o de 900 segundos. Por otro lado, el servidor MPNS no envía información al servidor de la aplicación de si la notificación ha sido tramitada hasta el móvil o no.

Por tanto, podemos ver cómo la aplicación en el móvil no es necesario que se esté ejecutando para recibir la notificación, ahorrando así batería y memoria. El inconveniente es que si ese canal entre el móvil y el servidor no funciona correctamente, nos quedamos sin notificaciones. Es por ello, por lo que la comunicación entre el terminal y el servidor tiene unos mensajes de mantenimiento, y así intentar que el móvil esta el mayor tiempo posible disponible.

Estados de la conexión con el terminal

El servidor MPNS tendrá marcado nuestro terminal dentro de uno de los tres estados disponibles:

Conectado. Que será la situación normal y que es cuando existe una conexión buena y estable entre el terminal y el servidor MPNS. Es cuando recibiremos notificaciones de forma normal y en tiempo real.

Desconectado temporalmente. Es cuando el terminal ha perdido comunicación con el servidor MPNS. El terminal intentará establecer esa comunicación en cuanto le sea posible. En este estado, las notificaciones para este terminal se encolarán y se enviarán cuando esté disponible. Existe un tamaño máximo de 30 notificaciones en 24 horas. ¿Os suena? A que alguna vez os ha llegado de repente muchas notificaciones seguidas siendo algunas retrasadas. Pues ya sabéis a qué ha sido debido.

Desconectado. Después de que haya pasado 24 horas desde la desconexión temporal, si la comunicación no se restablece, se pasa al estado desconectado. En ese momento, todas las notificaciones que estaban esperando o futuras notificaciones serán descartadas. Será así, hasta que se vuelva a reestablecer la conexión.

Problemas

Muchos usuarios reportan problemas con las notificaciones, por lo que vamos a repasar varios casos típicos en donde podemos estar en un estado como temporalmente desconectado:

Modo de ahorro de batería. Cuando se está en ese modo, el cliente que tenemos en el terminal se deshabilita, y por lo tanto, no podremos recibir notificaciones.

Problemas con los datos móviles. Es posible que no tengas una conexión a internet con los datos móviles estable. Por ejemplo, por haber gastado el saldo de datos, o estar en una zona de baja cobertura, que haga que el canal de datos sea inestable.

Data Sense habilitado. Si estas cerca del límite de consumo de datos, es posible que Data Sense te esté limitando los datos para no tener un exceso. Dentro de esa limitación está el eliminar las notificaciones.

Uso de Wi-Fi corporativo o en sitios públicos. Para que las notificaciones funciones de forma correcta, debe existir una comunicación directa entre el móvil y el servidor MPNS. Si existen firewall, servidores proxy, etc es muy posible que haya fallos en las notificaciones. Algo muy típico en redes de empresas o de restaurantes o bares.

Limitación debido a la operadora móvil. Muchas de las operadoras móviles utilizan NAT (Network Address Translation) para no gastar direcciones IP públicas en los móviles. Al utilizar NAT (que lleva un firewall) hace que la conexión que lanza el terminal al servidor MPNS, si no se envía información durante determinado tiempo, se elimine por parte del operador. Esto cortará la comunicación, y aunque el cliente que tiene el móvil está programado para intentar paliarlo, es posible que haya franjas de tiempo donde haya desconexión y no se puedan recibir los mensajes. Este es un punto muy a tener en cuenta, y que hace que paradójicamente, cuantas más notificaciones recibas, menos problemas deberías tener.

Limitación debido a router Wi-Fi. La misma restricción que en el punto anterior, lo podemos tener con un router de casa Wi-Fi. Tened en cuenta que los routers también realizan NAT y eliminan las conexiones abiertas si pasado un tiempo no se usan. Esto os puede provocar que os funcionen al principio las notificaciones, pero al cabo de un rato, deje de funcionaros a pesar de tener cobertura Wi-Fi correcta.

Cambio excesivo entre redes móviles y Wi-Fi. Tened en cuenta que si estáis cambiando constantemente u os acabáis de cambiar de una red a otra, es posible que esa conexión del cliente al servidor MPNS todavía no se haya actualizado, y como tal, no esté disponible.

Así, si estamos con problemas debido a uno de los tres últimos puntos, lo que habría que hacer es forzar al móvil a que intente conectarse al servidor MPNS de nuevo. Una forma rápida y sencilla, y que ya os contamos hace un tiempo, es poner el móvil en modo avión y luego quitarlo. De esta forma, obligamos al móvil a reconectarse y reestablecer la comunicación con el servidor.

Por supuesto, hemos partido del hecho que la aplicación del servicio está generando correctamente las notificaciones, ya que ese puede ser también un punto de fallo. Lo que sí podemos indicar es que si el problema está en el servidor MPNS o en la conexión al móvil, fallarían todas las notificaciones y no sólo un determinado servicio.

Conclusiones

Espero que estos datos os haya aclarado algo más el funcionamiento de las notificaciones, para así comprender cuando tengáis problemas, a qué puede ser debido. Siempre viene bien para realizar ciertos chequeos básicos. Y recordad que si este servicio falla, debería fallar todas las notificaciones y no sólo las de una aplicación en concreto.