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.