Bueno, pues si you estamos enviando nuestras notificaciones a través del portal de Firebase, a continuación lo que vamos a hacer es que estaremos, vamos a tratar de recuperar el id, el token del dispositivo. La forma en como estará trabajando es que este dispositivo irá a Firebase y para registrarse y Firebase le regresará un token, un identificador para este dispositivo. Entonces es muy sencillo hacer esto, si vamos al proyecto en el cual estábamos basándonos, el proyecto que está en los samples de Firebase, si vamos ahà en la parte de android estuvimos trabajando con esta clase MyFirebaseMessagingService, y esto es para un servicio que recibe un mensaje, una notificación desde la consola de Firebase. Lo que nosotros tenemos que hacer es, además de esto dejar un servicio corriendo en nuestro teléfono pero este servicio ahora lo que hará será obtener un identificador para este dispositivo. Entonces vamos a abrir esa clase, y lo primero que vemos es que en este momento pues, aquà está mi clase y está heredando de la clase FirebaseInstanceIdService. Una vez que nosotros heredamos de esta clase, pues estaremos sobreescribiendo el método onTokenRefresh el cual estará pues todo el tiempo asignándonos un token o actualizando un token y donde se hace esta magia de ir a Firebase y registrar el dispositivo y que Firebase nos regrese el identificador o el token, es a partir de esto que está aquÃ, FirebaseInstanceId y esta clase you sabe a dónde tiene que ir, you tiene asignada la aplicación y además sabe que tiene que recurrir también a nuestro archivo donde tenemos toda la configuración, nuestro archivo google-services.json. you no tenemos que por un lado estar registrando el número del proyecto, y estar mandándolo a Google Plus Messaging como era anteriormente, con este archivo google-services.json nos ahorra muchÃsimo trabajo y como vemos en una sola lÃnea de código you estamos registrando nuestro teléfono en Firebase, FirebaseCloudMessaging nos está devolviendo un token. Después de eso de que you tenemos ese token, bueno you nosotros podemos hacer lo que querramos, ¿no? Y precisamente pues aquà se está cachando un método o más bien se está declarando un método que dice send, enviar a registración, enviar el registro a un servidor, y es exactamente lo que nosotros queremos hacer. Lo que nosotros queremos hacer es de alguna forma estos tokens o estos ids identificadores de dispositivos, nosotros queremos almacenarlos en una base de datos propia. Es decir queremos que por ejemplo si alguien está dando like en alguna foto, pues nosotros poder tener el identificador del dispositivo para a partir de eso, ese identificador asociarlo a una cuenta de Instagram, que es lo que hemos trabajado con nuestra aplicación de Petagram. Entonces si yo tengo una cuenta de Petagram asociada con el identificador del dispositivo, yo voy a poder estar si alguien me da like, yo puedo mandar una notificación solamente a ese dispositivo de la cual le dieron like a esa cuenta por ejemplo, ajá, o a los dispositivos donde tenga configurada esa cuenta de Petagram o de Instagram. Entonces precisamente eso es lo que en un video posterior haremos en nuestro método send, enviar a registro para el servidor, para poder estar asignando ese token a un identificador cualquiera. En este caso pues te ponemos de ejemplo Instagram pero tú podrÃas asociarla a una cuenta de correo electrónico o a un usuario o a tu segmento de tus usuarios que tú prefieras, la forma en que prefieras. Y por eso hacemos esto para que puedas tener flexilibidad y puedas tener un completo control, ¿okey? Entonces para no depender tanto de esta plataforma Firebase, que sà nos ayuda hasta cierto punto pero en algún momento you no nos da el ancho para hacer todo lo que nosotros quisiéramos hacer. Entonces precisamente vamos a obtener, vamos a empezar a trabajar nuestro proyecto, y voy a cambiarme aquà a la vista de android, y voy a comenzar a declarar mi clase, voy a dar clic derecho new Java class, le voy a poner NotificacionIDTokenService, okey, porque esta clase servirá para estar obteniendo el token, o el identificador del dispositivo, ahà está, IDService, perfecto. Voy a hacer esto un poco más grande y el método que vamos a estar sobreescibiendo es el método onTokenRefresh, este es el método. Bien, y como vimos hace un momento con una lÃnea de código yo puedo estar cachando el token, aquà le vamos a poner token, vamos a decir FirebaseInstanceId get.getToken. Listo, esta lÃnea de código hace toda nuestra magia. Automáticamente con este proceso internamente va a consultar el número del proyecto, va a Firebase, que el proyecto coincida con lo que le está enviando y entonces registra nuestro dispositivo y le devuelve un token de acceso, un identificador. Vamos a declarar nuestro método, vamos a ponerle enviarTokenRegistro, y este método es lo que hará la parte de estar enviando una vez que you obtengamos el token, este método estará enviando el token a nuestro servidor, que en nuestro siguiente estaremos viendo cómo configurar nuestro servidor. Entonces ese método lo voy a llamar aquÃ, le pasaré el token y yo puedo por acá estar mostrando algunos logs para poder identificar que todo se de perfectamente. Igualmente vamos a manejar por acá arriba una TAG y esta TAG nos va a ayudar a identificar básicamente pues nuestra etiqueta, ¿no? Le vamos a poner FIREBASE_TOKEN, asÃ. Bien, entonces ponemos nuestra TAG, y el token que estamos mostrando, que estamos recibiendo aquÃ. Perfecto, una vez que you tenemos nuestro servicio configurado, you está perfecto, tenemos que darlo de alta ahora en nuestro archivo android manifest, okey. Asà de la misma forma a como dimos de alta el servicio anterior, de esa misma forma básicamente vamos a hacer un copy paste, voy a darle clic derecho, copiar y de nuevo clic derecho pegar, listo. En vez de estar trayendo esa notificacion service, ahora traeremos NotificacionIdTokenService y otra modificación que haremos será sobre nuestro intent filter que en vez de poner messaging, colocaremos INSTANCE_ID_EVENT, okey. Debemos asegurarnos que lo estamos escribiendo completamente igual, eso es muy importante. Y listo, you se ve, ahà está perfecto. Ahora tenemos nuestro servicio. you tenemos nuestro servicio definido, you lo hemos declarado en el android manifest, ahora vamos a llamar a nuestro servicio, okey. De acuerdo a la interfaz que tenemos por aquÃ, por aquà está nuestra interfaz, nosotros tenemos este botón que dice lanzarNotificación. Hasta ahorita ese botón tiene asociado este método, en mi archivo main activity, ahà se puede observar y básicamente lanza una notificación loca, okey. Este código you yo lo tengo implementado cuando escribamos un mensaje. Entonces voy a quitarlo, lo voy a borrar, vamos a modificar el texto del botón. Vamos a nuestro archivo strings y en vez de lanzarNotificacion, vamos a nuestro layout acá, okey, vamos a dar de alta otro recurso antes de lanzarNotificacion colocaremos recibir_notificaciones, okey. Listo, voy a dar alt enter y recibir notificaciones, ahà está, enter, listo. Si vemos la vista de diseño, Si en algún momento les muestra ese mensaje de rendering problems, pueden solucionarlo simplemente cambiando el API de vista, y listo, you está, recibir notificaciones. Entonces si lo que quiero es recibir notificaciones al momento de yo estar dándole clic a ese botón, pues vamos a revisar un poco la documentación. Iremos a nuestro main activity del proyecto que estamos mostrando y básicamente aquÃ, él también está trabajando con dos botones, un botón para hacer login y entonces si nosotros queremos obtener el token al momento de dar clic, pues tenemos que llamar a la instancia y solicitar de nuevo el token, okey. Entonces vamos aquà a llamar a esa instancia y vamos a estar mostrando, listo. Voy a colocarle log.d, vamos a poner TOKEN, token. Esto solo asà en el momento que yo de clic en mi botón, pues yo quiero que en ese momento me obtenga un token y entonces yo podrÃa además también aquà vamos a quitar este, yo podrÃa llamar también a mi método enviar y bueno ejecutar exactamente lo mismo que en la cuestión del servicio. Okey, podrÃa manejarlo como un servicio o podrÃa estarlo manejando como simplemente solicitar la instancia cuando en el momento en el que yo pulse, solicitar notificaciones. Vamos a correr esto, vamos a correrlo en nuestro emulador, listo. Pues hasta el momento por aquÃ, este es el log, como observas gracias al servicio que estamos ejecutando, estamos cachando you un token dado que el servicio se está iniciando automáticamente, you estamos cachando un token, podemos estarlo actualizando cada vez que le demos aquà recibir. Claro, nos faltó llamar al método aquÃ, entonces lo corremos de nuevo. Voy a limpiar esto, está sucediendo lo mismo, por aquà estoy cachando un token, aquà está uno que es el que responde al servicio, el servicio que estoy ejecutando, pero yo puedo también solicitar un token, aquà está, a partir de darle clic a mi botón. Vamos a revisar que los tokens, vamos aquà a copiar esto para revisar que los tokens pues, a ver si coinciden, este es el token que estoy recibiendo, aquà está, y vamos a revisar el otro. Parecen exactamente iguales, aquà está, como observas son exactamente iguales, okey. Es el mismo token, simplemente al lanzar, al darle clic de nuevo en recibir notificaciones, simplemente estamos obteniendo el token y ahora simplemente lo estoy enviando. Yo podrÃa ahorrarme este paso para que no se esté mandando dos veces y entonces quitar este método de aquÃ, esa llamada, ese método, y simplemente cuando yo le de clic aquÃ, en ese momento entonces sà envÃa el token al servidor. Okey, ponemos ambos casos para que observes que un token se puede recuperar cuando una aplicación empieza a correr. Okey, entonces y que además que un token se puede recuperar cuando alguien le de clic para habilitar las notificaciones y en ese momento esas notificaciones you se envÃa el registro al servidor, entonces you quedas dado de alta en el servidor, y you eres acreedor a recibir notificaciones. Bien, entonces esto era el objetivo de nuestro ejercicio, recibir este token. Vamos a ver cómo configurar ahora nuestro servidor para estar enviando este identificador y que el servidor procese y esté trabajando con algo muy interesante, está trabajando con el almacenamiento de Firebase. Estaremos trabajando como base de datos central, precisamente de nuestro proyecto Petagram estaremos trabajando sobre el servicio de Firebase de Database Realtime Database. Entonces vamos a hacer que nuestro servidor esté aquà insertando datos en nuestra base de datos de Firebase de nuestro proyecto, para posteriormente recuperar los datos y entonces enviarlos a través de una notificación al dispositivo acordado. Okey, veamos en nuestro siguiente video.