Guía de integración Firebase Cloud Messaging (FCM)

Las notificaciones push en Android se realizan mediante la tecnología de Google llamada Cloud Message. Hasta el Verano de 2016, esto se hacia mediante el servicio de mensajería GCM (Google Cloud Messaging), pero Google ha comenzado a implantar su nuevo aplicativo llamado Firebase, que integra numerosos servicios propios, entre ellos FCM (Firebase Cloud Messaging).

FCM es el nuevo método de trasporte que usa Octopush para las notificaciones en Android. A continuación se explicará paso a paso como dar de alta una aplicación Android en la consola de Firebase ( Firebase Console )
 

Alta del proyecto en la Consola Firebase 

Accedemos directamente a la Firebase Console. Seleccionamos la opción Crear Nuevo Proyecto.

fcm_console

Y en el diálogo que aparece hay que darle nombre al proyecto y una región.

fcm_create

Alta de una aplicación en un proyecto Firebase

Una vez tengamos el proyecto disponible, pasamos a configurar la aplicación para que use el servicio FCM.

Seleccionamos la opción Añade Firebase a tu aplicación Android Add Android App

Escribimos el paquete de nuestra aplicación Android, y opcionalmente podemos indicar un nombre y el SHA-1 y seleccionamos Añadir aplicación.

fcm_config_package

A continuación se descargará automáticamente el archivo google-services.json generado por Firebase y a continuación seleccionamos Salta a la consola

fcm_download_json

Obtener claves y archivos de una aplicación en un proyecto Firebase

Una vez en la consola del proyecto con la aplicación configurada en Firebase podremos descargar manualmente el archivo anterior.

fcm_get_json

Nota: Podremos además añadir más aplicaciones al proyecto, por ejemplo para distribución, build type o flavour de la misma.

Lo último que debemos hacer es seleccionar la opción Configuración donde podremos obtener las claves de configuración.

fcm_open_config

Seleccionamos la pestaña Mensajería en la Nube donde obtendremos el Server API Key y el Sender_ID, que podremos usar en la configuración de la consola web de Octopush y en la aplicación Android respectivamente.

fcm_generated_keys
 

Configuración consola web

Una vez obtenidos y guardados los archivos generados procedemos a configurar nuestra aplicación en la consola web de Octopush.

En la sección de Ajustes y la sección Servicios (Google y Apple)

Pondremos el API Key proporcionado por Firebase (óvalo azul). Activamos la configuración y guardamos.Anotamos también la referencia del proyecto para la configuración del cliente móvil de Octopush (óvalo verde).

fcm_oct_config

Nota: Esta configuración es necesaria para cada entorno de programación (dev, test y pro) con sus respectivos proyectos de Octopush y Api Key proporcionadas por Firebase.
 

Integración del cliente FCM en aplicación Android

Una vez configurado nuestro proyecto en la Consola de Firebase, generado el archivo google-services.json y configurado el proyecto correspondiente en la Consola de Octopush con la clave de servidor, integraremos el cliente Octopush FCM en nuestra aplicación Android.

Configuración build.grandle

Hay que configurar dos ficheros build.gradle: el referente al proyecto de la aplicación y el que hace referencia al módulo da la aplicación:

build.grandle (proyect)

Se debe incluir el servicio GMS de Google en las dependencias:

buildscript {
     dependencies {
       classpath 'com.google.gms:google-services:3.1.1'
       ...
     }
   }
 build.grandle (Module)

En primer lugar debemos añadir dos líneas de código imprescindible para el uso del cliente Octopush:

  • Aplicar el plugin GMS de Google Services al final del archivo
apply plugin: 'com.google.gms.google-services'

 

  • Añadir la librería del cliente de Octopush FCM
dependencies {
     ...
     compile 'es.sdos.android:octopush:fcm-5.1.2@aar'
     ...
   }

Además, debemos configurar la librería para nuestra aplicación. Se describen a continuación los parámetros de configuración a incluir:

  • OCTOPUSH_APP_KEY: Obligatorio
    Es la referencia del proyecto en el cliente web de Octopush y que identifica a nuestra aplicación.
resValue("string", "OCTOPUSH_APP_KEY", "\"......\"")
  • OCTOPUSH_ENDPOINT: Opcional
    Sólo especificaremos este parámetro en el caso de que se nos proporcione un nuevo punto de acceso para Octopush. Para los entornos dev y pre hay que configurarlo.
resValue "string", "OCTOPUSH_ENDPOINT", "\"https://test.octopush.me/\""

 

Configuración de SENDER_ID

La clave generada por Firebase es la responsable (además de la clave de servidor configurada en la consola web de Octopush) de la comunicación entre cliente y servidor de FCM.

Podemos configurarlo de dos formas:

Añadir parámetro SENDER_ID

Añadir al archivo build.gradle del módulo de la aplicación el parámetro SENDER_ID:

resValue("string", "SENDER_ID", "\"......\"")
 Usar archivo google-services.json

Otra opción es añadir el fichero google-services.json generado en la consola de Firebase a la carpeta raíz del módulo de la aplicación:

fcm_json_root

 

O bien, si la aplicación tiene varios flavours ó build types, podremos poner cada fichero google-services.json correspondiente a cada configuración en la carpeta raíz del flavour ó build type:

fcm_json_flavours

Tal y como hemos ido comentando, para cada entorno de ejecución necesitaremos una configuración diferente, por lo que nos debe quedar algo parecido a lo siguiente (ó sin los parámetros SENDER_ID si hemos usado los archivos google-services.json):
 

Migración proyecto GCM a FCM

Es muy sencillo migrar un proyecto desde Google Cloud Messaging a Firebase Cloud Messaging

  • En primer lugar accedemos a la consola de Firebase

    fcm_migration_home
  • Seleccionamos la opción de Importar proyecto desde Google

    fcm_migration_proyect
  • Nos aparecerá una lista con los proyectos que tenemos en nuestra cuenta de desarrollador y debemos seleccionar uno de ellos.

    fcm_migration_select
  • Si ya teníamos una aplicación Android configurada, podemos ir a la opción de Configuración -> Mensajería en la Nube donde podremos ver la Clave de servidor heredada que es clave que usaba la aplicación en GCM y la nueva Clave de servidor que nos proporciona Firebase. Por el momento, se puede usar cualquiera de las dos claves en la configuración de la consola web de Octopush, pero recomendamos el uso de la nueva clave de Firebase.
  • fcm_migration_oldkey

 

Guía de integración Firebase Cloud Messaging (FCM)