lunes, 6 de febrero de 2012

Entendiendo el canal para las Notificaciones Push


Las Notificaciones Push son una funcionalidad bastante llamativa para agregar a nuestras aplicaciones, en muchos lugares (empezando por MSDN) nos describen cuales son los tipos de notificaciones que reciben los móviles con Windows Phone, no seré la excepción, sin embargo, al menos inicialmente solo espero ayudarlos a entender en que consiste la creación del canal para el envío de las notificaciones.

Para comenzar a entender como funcionan las Notificaciones Push, debemos tener claro que se trata de un servicio gratuito que provee Microsoft a terceros para sus aplicaciones y que no tenemos que hacer ninguna clase de sobre esfuerzo para enviarlas o recibirlas en el dispositivo.

Sobre los tipos de notificaciones


Hay 3 tipos de notificaciones:


Notificaciones Toast: Es una notificación que se muestra en la parte superior de la pantalla para notificar al usuario de un evento. Para estas notificaciones es necesario solicitar permiso de recepción de mensajes al usuario.


Notificaciones Tile: Es una notificación que puede ser usada para actualizar información breve sobre un icono mosaico situado en el inicio de Windows Phone. Como muestra la imagen tenemos la posibilidad de enviar un contador y datos para la parte frontal y también para la parte trasera del mosaico, teniendo en cuenta que el contador solo es para la parte frontal y que solo aparecerá si tiene un valor superior a 0 y hasta 99.



Notificaciones Raw: Esta notificación se usa para enviar información a la aplicación cuando se encuentra en ejecución, al recibir la notificación, somos nosotros quienes decidimos que funcionalidad ejecutar.

Ahora el canal

Bien, después de esta breve mención, entendamos conceptualmente como funciona el canal a través del cual se envían y se reciben las notificaciones y algunas consideraciones que debemos tener en cuenta.

Es común encontrarnos con este gráfico de  MSDN o alguno de sus derivados al buscar sobre Notificaciones Push para Windows Phone:


Si bien el gráfico es comprensible y la  explicación detallada, quisiera compartirles el entendimiento que tuve sobre el implementando las notificaciones, y que observé en algunos foros son temas que generaban un poco de confusión a quienes apenas se familiarizan con el tema.

Crear y abrir un canal en el dispositivo: Al iniciar nuestra aplicación debemos crear y abrir un canal en el dispositivo. Aunque son varios tipos de notificaciones, una aplicación solo necesita un canal establecido para recibir todas ellas.

Según  MSDNWindows Phone soporta hasta 30 aplicaciones que reciban notificaciones, sin embargo en internet circula el rumor de que el límite son 15 aplicaciones y que después de superar el límite el dispositivo no deja instalar una aplicación que reciba notificaciones. En Channel 9 encontrarás una explicación paso a paso de como crear el canal en el móvil, sin embargo recuerda comprender el uso de las notificaciones antes de intentar implementarlas. Crear le canal es simplemente una porción de código que invoca de forma asincrónica un servicio de suscripción que se ofrece a través del .NET Framework en Windows Phone. Consideremos el cerrar el canal si el usuario decide no recibir notificaciones o cuando no se esté usando.

Almacenar el suscriptor: Después de completar la creación del canal, el método nos retorna una Uri o Url que provee Microsoft y que es única por aplicación y dispositivo. Nosotros debemos tomar esa Uri, y enviarla a través de un Servicio Web que construyamos y publiquemos en internet, con el fin de que los dispositivos puedan accederlo, nos corresponderá decidir de que forma persistimos el datos que nos envian, ya que estas Uri son los suscriptores que tiene nuestra aplicación, así que si manejamos usuarios es preciso que vinculemos la Uri al usuario que ha iniciado sesión y en tal caso si nuestro usuario puede iniciar sesión en nuestra aplicación desde múltiples dispositivos, vincular a un usuario todas sus ubicaciones para reportarle correctamente las notificaciones. Evidentemente la publicación y mecanismos de seguridad de este servicio para el registro de las ubicaciones, depende de nosotros.

Enviar las notificaciones: En el envío de notificaciones tenemos varias cosas que considerar, como el hecho de que el envío de notificaciones no es en masa, se realiza una a una por cada ubicación que tengamos registrada. Y evidentemente nosotros decidimos que és lo que deseamos notificar a los usuarios de nuestra aplicación y cuando. Las notificaciones pueden ser notificaciones generales o bien notificaciones de un evento personal para su cuenta.

Para ilustrar un poco el tema y que se hagan a un escenario de ejemplo, les cuento sobre algo que estoy construyendo: Estoy desarrollando una aplicación que reporta cada vez que se hace una publicación en un blog, en el tile o mosaico yo debia contarle a mi usuario cuantas publicaciones tenia sin leer, pero ¿como iba a saberlo? Pues bien tuve que crear en mi base de datos un campo para cada subscriptor que me dijera cuantas publicaciones tenia sin leer e implementar un método en mi servicio WCF que volviera a cero el contador cuando el usuario iniciara la aplicación. De este modo cada vez que se publica en el blog, se suma uno (1) a las notificaciones que cada usuario tiene sin leer y este es el contador que se envía a cada uno de los suscriptores.

El código de envío de las notificaciones tambien es algo que encontrarán en MSDN, en un próximo post haremos un ejercicio para ejemplificar este escenario de las notificaciones push, sin embargo ya claro el escenario será más fácil entender los tutoriales en la red.

Hasta la próxima.

No hay comentarios: