Okey, pues me encuentro en el ejemplo anterior que hicimos hace un momento, en el que únicamente, pues, hicimos una interfaz como esta, lanzamos una notificación, llamémosle local, es una notificación que estamos activando desde una interfaz del celular. Ahora, lo que vamos a estar trabajando es que esta notificación, lejos de estarse mandando desde el celular, pues, se esté enviando desde nuestro servidor, ¿okey? Y para esto, pues estaremos utilizando un intermediario, un intermediario que este intermediario se va a llamar Firebase, Firebase Cloud Messaging, que, el cual es el intermediario oficial o el cual es, hasta el momento, el, sÃ, el enviador o el encargado de estar enviando notificaciones a nuestro teléfono. y cabe mencionar que anteriormente, pues, era Google Cloud Messaging y recientemente en el Google I/O de este año 2016, se anunció precisamente que Firebase será quien reemplace a Google Cloud Messaging. Entonces, pues, lo que estaremos trabajando en este ejemplo, pues será precisamente, ¿qué significa Firebase? ¿Qué es todo lo que hace? Si solamente nos sirve para enviar notificaciones, ¿o qué tantas cosas podemos hacer con él? Entonces, lo primero, este es el sitio oficial de Firebase, es firebase.google.com. Y bueno, por supuesto, tienes que estar logueado con tu cuenta de gmail, debes estar logueado con tu cuenta de gmail para que esto sea más fácil de manejar. Si no lo haces, en algún momento, de cualquier forma te lo estará solicitando. Entonces, voy a darle clic aquÃ. Dice, Get started for a free, for free. Bueno, Firebase tiene, por supuesto, una versión free, pero también tiene una versión, tiene versiones de paga que, esto es dependiendo de cómo vayas escalando o qué tan, hasta dónde quieras llevar tu aplicación. Aquà te voy a dar un breve recorrido de todo lo que es Firebase. Básicamente Firebase inició siendo tan solo una base de datos en tiempo real, como se ve aquÃ. Una base de datos en tiempo real que era, pues, independiente, no tenÃa nada que ver con Google. Posteriormente, Google, pues, echó el ojo a Firebase y entonces Google puede predecir o está prediciendo que, en un futuro muy muy cercano, la mayorÃa de las personas accesarán a Internet a través de su smartphone. Nosotros estamos acostumbrados a accesar a Internet desde nuestro smartphone y además desde la web, pero Google predice que, en este futuro cercano, la mayorÃa de las personas solamente estarán ingresando a Internet a través de su smartphone. Entonces, Google tomando esa estrategia toma Firebase y todas las herramientas que Google tiene las integra a Firebase y estamos hablando de todas las herramientas de, en este caso, Cloud Messaging, de almacenamiento, de hosting, de configuraciones remotas, de testing, de, incluso por acá tenemos de, podemos generar Analytics, todo lo que, Adwords, etcétera. Todo lo que es Googlitos, o sea herramientas que Google tiene, pues las incrustado o las ha metido en un solo producto, el cual es Firebase, y pues, por supuesto, es muy importante para nosotros que aprendamos a utilizar esta herramienta y que podamos integrarla en nuestros proyectos, que verás es muy fácil y muy sencillo integrarlo. La documentación viene bastante bien. Entonces, no tendremos problema con esto. Podemos estar trabajando con Swift, podemos estar trabajando con Objective C, con Java, con JavaScript, con C++ y esto quiere decir que también, pues, podemos llevar Firebase a nuestros proyectos para iOS, para con iPhone. Podemos también llevar nuestros proyectos a Android y además podemos hacer lo que queramos a través de Internet, en una página web. Entonces, dado el objetivo de esta lección, nosotros vamos a aprender a utilizar Firebase, tanto para Android, puesto que vamos a integrar nuestras notificaciones y, además, vamos a estar trabajando con Firebase, con la parte de web, puesto que, en futuras lecciones estaremos viendo cómo generar nuestro propio servidor y configurar nuestro propio endpoint y, por lo tanto, necesitaremos, en algún momento, el hospedaje y las bases de datos que Firebase maneja. Entonces, si le damos aquà Get started for free, veremos, de primera instancia, si es que tú you tienes algún proyecto, pues, aquà va a aparecer. Si es que no, vamos a darle clic aquÃ, crear nuevo proyecto y de acuerdo al proyecto que hemos estado trabajando, voy a escribir, Petagram, y lo siguiente es el paÃs o región en el cual estás trabajando. Esto es muy importante, puesto que, de acuerdo al paÃs que tú selecciones por aquÃ, será en donde la ubicación de servidores estará, pues, ahà mismo, correspondiente. Como observas, pues, vienen una gran variedad de paÃses, sino es que todos, la verdad no los he revisado a detalle, pero viene una gran variedad de paÃses y esto es muy importante, que nuestro servidor se mantenga cerca de nuestra aplicación o de nuestro proyecto. Voy a darle clic aquÃ, crear proyecto, y listo. A continuación, hemos entrado al panel. Nos ha introducido, más bien, inmediatamente nos ha introducido al panel de nuestra aplicación, nuestro elemento. Ahorita no estoy diciendo que you creé la aplicación de notificaciones, simplemente estoy dando de alta un proyecto de Firebase. El proyecto lo nombré Petagram y, bueno, automáticamente puedo gozar de todos los beneficios que incluye Firebase, como Analytics, como bases de datos, almacenamiento. Estamos hablando en almacenamiento de manejar archivos, archivos de de todo tipo, hosting, un hosting web, aplicaciones web, etcétera. Tenemos muchas, muchas cosas. Por ejemplo, en este caso, la parte de notificaciones, que es la parte que en este momento a nosotros nos interesa. Entonces, hasta el momento, you he dado de alta mi proyecto. Vamos a ir aquà precisamente, donde estoy, en notificaciones y voy a darle clic en la parte de Android. Por supuesto, Firebase no es un producto exclusivo de Google. También lo podemos utilizar, exclusivo de Google con respecto a Android. También lo podemos utilizar en iOS, como lo mencioné hace un momento y puedo dar de alta cualquier tipo de aplicación. Este es uno también de los beneficios que manejamos. Entonces, lo primero que me está solicitando es el nombre de mi paquete y como ves, es sumamente amigable la plataforma y aquà inmediatamente me está diciendo que este paquete generalmente lo vas a encontrar en el archivo build.gradle en la en el identificador que dice applicationId. Entonces, voy a regresar a mi proyecto, precisamente a abrir ese package. Aquà está y, exactamente, aquà está, applicationId y este es mi package. Lo voy a copiar y voy a llevarlo aquà a pegar. Perfecto. Ahora, lo siguiente que tengo por aquÃ, que voy a necesitar, es el SHA de mi aplicación, que básicamente es la firma es la firma de mi aplicación. Todo el software, en general, contiene este elemento, un SHA y necesito yo generar una firma. Voy a darle clic aquà donde dice See this page for information on using keytool, y entonces, para que nos diga, aquà nos va a mostrar cómo es que yo puedo generar un certificado partiendo de mi proyecto. Entonces, me encuentro aquÃ, dice Autenticando Tu Cliente y es muy sencillo. Aquà aparece, esto lo tenemos que hacer en modo de consola de comandos. Por eso es que you la tengo aquà abierta y es muy simple. Nada más hay que poner este código o este comando, este comando con estos parámetros y también está aquà la versión de Windows. Entonces, voy a utilizar yo, tengo un equipo Mac, voy a utilizar el de Mac, voy a darle copiar y ahora abriendo mi terminal, que you lo tengo aquÃ. Tu terminal en el caso de los que estén manejando Windows, pues, es su, lo que se conoce como CMD o command line. Voy a pegarlo, lo que estuve, lo que acabo de copiar. Ahà está. Perfecto. Lo que hace esta herramienta keytool, si es que te aparece que no lo tienes instalado este comando o lo que sea, puedes encontrar muchos tutoriales en internet que te van a enseñar a instalar este comando, pero generalmente you es algo que trae tu computadora. Entonces lo que estaremos haciendo es partiendo de una llave, un keystore, una llave que Android nos provee, por supuesto esta es una llave de modo debug, modo de pruebas llamémosle asÃ, no es cuando tú necesites firmar tu aplicación tendrás que hacerlo con una llave de release, no de debug. En este caso para fines de pruebas, lo haremos con una llave de debug que es la llave genérica que Android nos provee en su carpeta oculta que al momento de instalar Android Studio con tu SDK Manager esta carpeta se crea, y entonces es ahà dentro están nuestro debug keystore. Entonces a partir de esta llave estamos generando un certificado a nuestra aplicación, o más bien estamos obteniendo el SHA, obteniendo el certificado de la llave. Entonces simplemente tengo que dar enter, me dice introduzca la contraseña del almacén de claves, esta contraseña es genérica y la contraseña es android, android en minúsculas. Le voy a dar enter y listo, you me ha abierto mi llave, mi SHA de el modo debug. Este SHA es el que yo necesito, el SHA 1. Si recuerdas es justamente lo que me está solicitando en mi proyecto de Firebase, el SHA 1. Voy a copiar después de los dos puntos de SHA 1, voy a copiar toda esa cadena que está ahà y eso es lo que voy a pegar aquÃ. Listo, you está. Ahora simplemente voy a darle añadir aplicación. Entonces lo que acaba de suceder es que mi aplicación se está, estoy registrando mi aplicación móvil de Android, esta que tengo aquà que estuvimos trabajando aquÃ, esta aplicación móvil la estoy registrando en mi proyecto que di de alta en Firebase, mi proyecto que se llama Petagram, tan solo estoy utilizando la parte de notificaciones, y entonces yo doy de alta ahà mi aplicación y you puedo tener acceso a estar enviando notificaciones. Entonces lo que me acaba de descargar es un archivo en formato JSON que básicamente va a traer todas las configuraciones de mi proyecto. Este archivo lo podemos ver y lo tenemos aquÃ, entonces si yo lo quiero abrir yo lo puedo abrir con sublime text, y lo que me está mostrando, acá te lo estoy poniendo es simplemente información sobre el proyecto que vive en Firebase. Dice aquà que el número de mi proyecto es este, que si recuerdas en Google Cloud Messaging es lo que nosotros necesitamos dar de alta, en nuestro proyecto, en nuestra aplicación móvil, nuestro proyecto de Android, viene la URL base que es esto proyect- todo este número que está aquÃ, y bueno vienen muchas otras cosas que las cuales podemos estar aprovechando a partir de este JSON para estar configurando dentro de nuestro proyecto. Este archivo, ahora nosotros tenemos que integrarlo a nuestro proyecto, y si observaste un poco las instrucciones, nos está diciendo que debemos cambiar la vista e ir a la vista de proyecto de nuestro Android Studio donde está nuestra aplicación. Abrimos la vista de proyecto y en la parte de, en la carpeta app ahà es donde tenemos que este archivo copiarlo y vamos a pegarlo aquà en la raÃz de nuestra carpeta app. Nos dice quieres este nombre quieres copiarlo aquà en este directorio, le vamos a decir que sÃ, okey y listo, you está aquà nuestro archivo que va a contener toda la configuración de nuestro proyecto que vive en Firebase, es decir you no tengo que estar haciendo todo a mano como lo vimos en los videos, en algunos videos, you no tengo que hacer todo a mano sino que con este archivo de configuración automáticamente tiene toda la información que yo necesito. Ahora veamos nuestro siguiente paso, nuestro siguiente paso nos está diciendo que integremos un par de librerÃas y un par de cosas adicionales a nuestro proyecto. Nosotros estaremos trabajando esto, sÃ, pero además vamos a añadir unas cuantas librerÃas más para, dado que nosotros estamos trabajando con notificaciones, y entonces pues bueno vamos a necesitarlas. Voy a ir aquà donde me está diciendo, dice que vayas a project y abras el archivo build Gradle. Entonces abriremos el nivel de project, vamos a regresar aquà a Android, y dice que este project, abrimos build Gradle. Y entonces ahà me dice copia, añade esta lÃnea, esta es la que vamos a copiar y la vamos a pegar aquà donde nos está diciendo en dependencias debajo de esto que está aquÃ, por favor no borres nada, nada, simplemente copia, has un copy, paste. Okey, bien, automáticamente you sabes nos está mostrando la notificación que Gradle you cambió, etcétera, entonces que necesitamos sincronizarlo pero bueno todavÃa no terminamos. Entonces lo siguiente que vamos a hacer es que vamos aquà a poner esta lÃnea que nos está diciendo añade esta lÃnea de plugin, pero ahora en tu archivo app.module build Gradle. Okey, vamos a abrir ese, dice build gradle module app, ese es el que necesito y esto irá hasta abajo después de dependencias, ahà lo voy a poner. Debe ser la última lÃnea de tu archivo module app. Bien, hasta ahorita esto es lo único que nos está diciendo pero nosotros necesitamos dos librerÃas más que ahorita te las voy a mostrar. Le damos a aceptar y dice que you podemos enviar nuestro mensaje, voy a darle clic donde dice más información. En este momento me está abriendo toda la documentación de Firebase, notificaciones en Firebase, y bueno, yo puedo darle clic aquà donde dice cloud messaging, y vamos a ir a la parte de Android, setup an android client. Le damos clic ahà y nos muestra todo lo que la mayorÃa de las cosas que hemos puesto, dice que si quieres habilitar tu proyecto, puedes utilizar el Firebase Cloud Messaging el SDK, y entonces necesitarás añadir esta librerÃa, esta es la que queremos, vamos a ponerla, la pegamos, listo. Estoy utilizando Google Firebase Messaging 9.0.2 y además necesito otra, la que necesito es el core, el core de Firebase. Vamos a ver por acá donde dice get started, donde dice Android, y lo que queremos hacer es accesar al SDK completo y entonces aquà you nos está mostrando lo que hicimos, el Google Services, añadimos esto y esta también la necesito, okey. Compile Firebase Core 9.0.2. Entonces, pongo mi Firebase core y también mi messaging, okey. Entonces, ¿qué necesito en mi archivo build Gradle notification project? Pongo esta que está aquà de Google Services, el classpath, y luego en mi archivo build Gradle de module app coloco el plugin y además coloco dos librerÃas que voy a estar necesitando para trabajar internamente en mi proyecto con las notificaciones, y bueno con todo lo demás que tenemos que hacer. Voy a darle ahora sà sincronizar ahora, y voy a esperar un momento, listo, Gradle you ha terminado de traer las librerÃas que necesito. Vamos a dar un vistazo a la documentación a ver qué más necesito, qué cosas más tengo como opciones. Entonces estoy aquà en Guides, donde dice get started y en la parte de Android, y entonces si yo quisiera integrar más cosas a mi proyecto, por ejemplo estar trabajando con solamente con bases de datos, puedo trabajar con almacenamiento, con ads que también es algo interesante para la parte de publicidad, entonces también puedo estar trabajando con eso. Bien, estos son todas las librerÃas y básicamente las puedo insertar con compile. Listo, pues you tenemos todo, esto es muy importante tener esto en cuenta que a pesar de que Firebase funciona con la versión 2 de Android, Firebase no funciona con la versión 2.2 de Android, hasta este momento hoy en este año 2016, en el mes de junio pues en este momento no funciona Firebase. en la versión 2.2 de Android. Entonces revisa muy bien la documentación y revisa bien los pre requisitos. Listo, pues you tengo mi aplicación, you tengo integradas las notificaciones. Entonces ahora hagamos que podamos recibir una notificación pero que sea una notificación que no se esté lanzando como aquÃ, sino que sea una notificación que nosotros podamos estar lanzando desde el panel de Firebase. Se supone que nuestro proyecto, nuestra aplicación móvil you está dada de alta aquà y lo único que tenemos que hacer es enviar nuestro mensaje. Adicionalmente, si nosotros queremos precisamente recibir una notificación desde Firebase, vamos a darle clic aquà donde dice Notifications en la parte de Android donde dice send to a user segment, y dice añade Firebase a tu proyecto, bueno eso you lo hicimos. Ahora dice que instala en la aplicación, instala y corre la aplicación, you la tenemos corriendo, pero antes de todo esto tenemos nosotros que configurar algunos servicios como este, ajá MyFirebaseMessagingService. Voy a ir aquà a este menú donde están los samples, los ejemplos de código que nos muestran cómo utilizar cada cosa. Voy a seleccionar en la parte de Cloud Messaging y le voy a decir que quiero ver la parte de Android, okey. Y entonces esto me está llevando a un directorio en Github que básicamente, todo lo que yo quiera hacer con Android aquà viene, lo que hay que hacer con Android con respecto a Firebase. Entonces vamos a buscar esta parte que dice messaging y es un repositorio que podemos tomar como base para precisamente hacer que nuestra aplicación funcione para recibir notificaciones. Entonces estoy introduciendo en el directorio hasta llegar a la parte del código fuente de las clases de Java necesarias. Entonces voy a ver esta parte que es MyFirebaseMessagingService, vamos a abrir eso y lo que tengo aquà es una configuración muy simple, muy sencilla. FÃjate bien, es una clase que simplemente estará heredando de la clase FirebaseMessagingService y a partir de ahà estaremos cachando un callback llamando onMessageReceived, onMessageReceived estará cachando el mensaje recibido y entonces, bueno estará ejecutando la notificación. Lo que nosotros vamos a hacer es precisamente enviar una notificación desde aquà y estar cachando los datos de esa notificación en estos logs. Automáticamente Firebase, este FirebaseMessagingService y toda el SDK de Firebase you tiene configurado la parte de mostrar una notificación, okey. Y bueno, nosotros lo que haremos será mostrar este mensaje. Entonces voy a regresar a mi proyecto, voy a crear una nueva clase, una nueva clase que se va a llamar NotificationService. Okey, y este NotificationService, vamos a heredarlo de la clase que vimos hace un momento de FirebaseMessagingService, que es exactamente lo que nos está diciendo en la documentación que para recibir mensajes necesitas utilizar un servicio que herede de esta clase FirebaseMessagingService. Tu servicio necesitará estar sobreescribiendo, deberá estar sobreescribiendo el método onMessageReceived el callback, este es proveÃdo para muchos tipos de mensajes. Entonces esto es lo que vamos a estar implementando, le vamos a decir extends Firebase MessagingService, este es el que buscamos. Y ahora vamos a sobreescribir el método que decÃa allà onMessageReceived, ahà está. Perfecto, una vez que hemos recibido el mensaje, únicamente lo que tenemos que hacer según el ejemplo del código es mostrarlo en un log. Entonces esto mismo que está aquà Log.d vamos a copiarlo y lo estaremos pegando aquÃ, voy a quitar o voy a comentar este super asÃ, listo. No olvides implementar la clase y esta TAG nos lo está pidiendo, es simplemente una variable que tiene por aquà public static final TAG, es una constante para identificar Firebase, lo voy a poner asÃ, me falta el tipo de dato aquÃ, string, asÃ. Listo, you funciona perfecto. Pues una vez que you tenemos todo eso, you tenemos nuestra clase que hereda de FirebaseMessagingService, a continuación abriremos nuestro archivo android manifest, y es muy importante ahà declarar nuestro servicio que es el que estamos dando de alta NotificationService y declararlo como un servicio. El lugar en el que tiene que estar declarado, si analizamos de nuevo la documentación, el lugar en donde tiene que estar declarado es dentro de la aplicación y además debe tener estos parámetros. Vamos a copiarlos, vamos a copiar esto y vamos a pegarlo. Debe estar a la misma altura de activity y ahà lo vamos a poner. Simplemente que este no es el nombre de nuestro servicio, nuestro servicio se llama NotificationService, es el que nosotros hicimos. Bien, vamos a correr esto para precisamente comenzar a enviar nuestra notificación. Voy a seleccionar el emulador, aquà está, y vamos a esperar a que abra, vamos a esperar a que corra, listo. you está corriendo por ahà nuestro proyecto, como observamos pues todo ocurrió bien, no hay ningún problema, no tenemos ningún error. Entonces ahora sà enviaremos nuestra notificación desde el panel de notificaciones. Voy a dejar aquà disponible la aplicación y dice envÃa tu primer mensaje. Esto que está aquÃ, este primer campo en realidad este es el mensaje que se estará mostrando. Este es el mensaje que estaremos mostrando y lo siguiente es una etiqueta que es un mensaje opcional, entonces le voy a poner aquà notificación, es un mensaje opcional esto no es necesario. Además lo que hace padre también Firebase es que nosotros podemos estar segmentando usuarios, además de que Firebase está trabajando como un enviador de notificaciones, además de eso está trabajando, está recopilando mucha información del dispositivo o de nuestro usuario que está funcionando, que está trabajando con notificaciones. Entonces podemos aprovechar ese tipo de cosas y entonces podemos enviar una notificación por un tema o incluso podemos enviar una notificación a un único dispositivo, okey. Eso es lo que a nosotros nos importa también y que estaremos viendo en siguientes dÃas. Vamos a seleccionar la aplicación que dimos de alta, este es nuestro package, y le voy a dar enviar. Me pide una confirmación, le voy a dar enviar mensaje, vamos a ver la consola y listo. Bien, la consola ha respondido bien, estamos cachando la notificación, dice NotificationMessage, dice Hola Coursera Android, okey. Lo siguiente será transformar este texto, esto que estamos recibiendo, transformarlo en una notificación que realmente se muestre en nuestro dispositivo. Para eso podemos reutilizar el método que estábamos trabajando aquÃ, este método de nuestro ejercicio anterior y entonces puedo por aquà estar una vez que el mensaje es recibido, le puedo decir que entonces lance esta notificación que you está configurada. Por supuesto pues serÃa buena idea modularizar este código. Aquà en el ContentText le vamos a poner esto remote getNotification body, para que ahora que nuestro proyecto esté recibiendo las notificaciones, pues you no solamente nos lo muestra en la consola, sino que ahora sà nos lo muestra en forma de notificación, ahà está. Vamos a enviar un nuevo mensaje. [AUDIO EN BLANCO] Aquà le vamos a poner notificación, seleccionaré la aplicación y le daré enviar. Le damos enviar, y automáticamente incluso se ha registrado el tono que tenÃamos por ahà asignado. Aquà está la notificación, dice Hola Coursera Android Team, okey, y al darle clic nos está abriendo la notificación de, que nos está abriendo la pantalla que seleccionamos. Entonces de esta forma es como nosotros podemos estar trabajando notificaciones y estarlas enviando desde el panel de notificaciones.