Guía de integración Google Cloud Messaging (GCM)

 

 

Alta del servicio de mensajería

Las notificaciones push en Android se realizan mediante el servicio de mensajería de Google conocido como Google Cloud Messaging (GCM). A continuación se explicará paso a paso como dar de alta una aplicación Android en el centro de aplicaciones de Google ( Google Api Console )

Google Cloud Messaging (GCM) es uno de los métodos de trasporte que usa Octopush para las notificaciones en Android. Hay que configurar pues nuestra aplicación con GCM, por lo que necesitamos tener nuestra aplicación dada de alta en la Consola de APIs de Google.

Alta del proyecto en la Consola de APIS de Google

Tenemos que dar de alta nuestro proyecto (si no existe ya) en Google Developers Console.

cdg_create

 

Y en el diálogo que aparece hay que darle un nombre al proyecto, que será el que busquemos posteriormente para la configuración del servicio GCM.

 

cdg_proyect

 

 

Alta de GCM

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

Accedemos a Google Developers donde seleccionaremos el nombre de la aplicación que tenemos configurada con anterioridad y le pondremos el paquete de la aplicación que recibirá las notificaciones push.

 

gcm_choose

Nota: para cada distribución (dev, test, y pro) necesitaremos generar las claves y descargar el archivo google.services.json

A continuación, habilitamos Google Cloud Messaging, API que permite enviar mensajes push a dispositivos Android.

 

gcm_enable

Si se ha activado correctamente GCM, nos enviará a la siguiente pantalla en la que debemos de pulsar en la opción de generar el archivo de configuración google-services.json

gcm_generate

El siguiente paso es generar el archivo de configuración que nos proporciona la aplicación web que habrá que añadirlo en la ruta correspondiente que especificaremos más delante. A su vez, obtendremos el Server API Key y el Sender_ID, que usaremos en la configuración del cliente web de notificaciones y en la aplicación respectivamente.

gcm_files
 

Configuración Consola Web Octopush

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 -> Servicios (Google y Apple) y pondremos el API Key que nos ha proporcionado GCM (ó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).

octopush_gcm

 

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 GCM.
 

Integración del Cliente GCM en Aplicación Android

Configuración build.gradle

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.gradle (Proyect)

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

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

En primer lugar debemos añadir tres 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 y la librería GCM de Google Services
    dependencies {
        compile 'com.google.android.gms:play-services-gcm:11.4.2'
        compile 'es.sdos.android:octopush:gcm-5.1.2@aar'
        ...
      }
    <span id="mce_marker" data-mce-type="bookmark">​</span>

Posteriormente, debemos configurar Octopush 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 del SENDER_ID

La clave generada por Google Cloud Messaging 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 GCM.

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:

esValue("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:

GCM 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):

buildTypes {
         release {
            ...
      resValue("string", "OCTOPUSH_APP_KEY", "\"--------\"")
      resValue("string", "SENDER_ID", "\"--------\"")
         }
 
         test {
            ...
            resValue("string", "OCTOPUSH_APP_KEY", "\"--------\"")
      resValue("string", "SENDER_ID", "\"--------\"")
      resValue("strings", "URL_BASE_PRODUCTION", "\"--------\"")
         }
 
         debug {
            ...
      resValue("string", "OCTOPUSH_APP_KEY", "\"--------\"")
      resValue("string", "SENDER_ID", "\"--------\"")
      resValue("strings", "URL_BASE_PRODUCTION", "\"--------\"")
        }
      ...
      }
 ...

Configuración AndroidManifest.xml

A continuación debemos de configurar el archivo AndroidManifest.xml para que el cliente funcione correctamente:

 Permisos

Definimos los permisos necesarios:

  • Permiso necesario para el uso de Internet
<uses-permission android:name="android.permission.INTERNET" />
  • Permisos necesarios para conectar nuestra aplicación con los servicios de Google.
<permission
         android:name="${applicationId}.permission.C2D_MESSAGE"
         android:protectionLevel="signature" />
 
     <uses-permission android:name="${applicationId}.permission.C2D_MESSAGE" />
 Servicios

Para el correcto funcionamiento de Octopush, necesitamos declarar algunos servicios:

  • Servicio de recepción de notificaciones: Obligatorio
<application>
...
<service
     android:name="es.sdos.octopush.services.OctopushMessageListenerService"
     android:exported="false">
     <intent-filter>
         <action android:name="com.google.android.c2dm.intent.RECEIVE" />
     </intent-filter>
 </service>
 
 <receiver android:name="com.sdos.testoctopush.MyReceiver">
     <intent-filter>
         <action android:name="${applicationId}.OCTOPUSH_RECEIVER" />
     </intent-filter>
 </receiver>
...
</application>

 

 

Guía de integración Google Cloud Messaging (GCM)