EN

  |  ES

/Guía Rápida de Integración /Notificaciones app push /Android

Integración Android

guía rápida de integración del SDK de Android.

Indice

¿Qué necesitas para la integración?

Es importante ya que el proyecto contiene los datos de configuración de tu aplicación, es decir, el dominio donde esta alojada tu web, los certificados de safari o iOS o la clave de firebase que usa android. Todo depende de las plataformas (web o app) que use el proyecto.


obtener_AppKey

Integración

Este artículo muestra el desarrollo mínimo que hay que hacer para comenzar a registrar dispositivos y poder realizar las primeras campañas push.


La SDK de Indigitall es compatible con los servicios de mensajería de Google, mediante la plataforma Firebase y con los servicios de HMS o Huawei Mobile Services de Huawei.


Puedes verlo en ente vídeo tutorial o leer las instrucciones más abajo:



Añadiendo las dependencias del SDK

Lo primero que hay que hacer es abrir el fichero app/build.gradle. En la captura de pantalla se puede comprobar dónde encontrar este fichero app/build.gradle.

Atención: es el fichero build.gradle que se encuentra en la carpeta app, NO el de la raíz del proyecto.


Gradle build file

La librería está disponible a través del repositorio Maven Central. Maven es una de las herramientas de gestión de librerias más usadas en Android. Para integrar el SDK de indigitall es necesario añadir las siguientes dependencias:


// build.gradle (project)

buildscript {
    repositories {
        ...
        mavenCentral()
        maven {
            url 'https://developer.huawei.com/repo/'
        }
    }
    dependencies {
        ...
        classpath 'com.google.gms:google-services:4.3.5'
        classpath 'com.huawei.agconnect:agcp:1.2.1.301'
    }
}
allprojects {
    ...
    mavenCentral()
    maven{
        url 'https://developer.huawei.com/repo/'
    }

}


// build.gradle (app)

plugins {
    id 'com.android.application'
    ...
    id 'com.google.gms.google-services'
}
// if you use apply plugin
// apply plugin: 'com.google.gms.google-services'

android {
    compileSdkVersion 31
    defaultConfig {
        minSdkVersion 19
        targetSdkVersion 31
    }
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'com.google.android.gms:play-services-location:18.0.0'
    implementation 'com.google.firebase:firebase-messaging:22.0.0'
    implementation 'com.huawei.hms:push:6.1.0.300'
    implementation 'com.indigitall:android:4.17.+'
}


Si estás con una versión de Kotlin menor a 1.5.21, deberás añadir la siguiente implementación de coroutines en las dependencias del gradle:


dependencies {
    implementation 'androidx.appcompat:appcompat:1.1.0'
    ...

    implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.1'
}

Añadiendo los servicios de Indigitall

Estos servicios son necesarios para que nuestro SDK pueda sincronizar los datos del dispositivo con los servidores de indigitall.


<manifest ...>
    <!-- ... -->

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

    <!-- To obtain the location of the device -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>

    <application ...>
        <!-- ... -->

        <!-- MANDATORY -->

        <!-- So that when the user presses a push, the metric is saved -->
        <service android:name="com.indigitall.android.services.StatisticService"/>

        <!-- Daily sync of device data -->
        <service android:name="com.indigitall.android.services.NightService"/>

        <!-- To start services when you restart the device -->
        <receiver android:name="com.indigitall.android.receivers.BootReceiver">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
        </receiver>

        <!-- OPTIONAL -->

        <!-- So that when the user clicks an InApp message, the metric is saved.
        It is only necessary if you use the InApp message functionality -->
        <service android:name="com.indigitall.android.inapp.services.StatisticInAppService" />

        <!-- To obtain the location of the device.
        It is only necessary if you are going to ask for location permission
        to segment pushes by device location -->
        <receiver android:name="com.indigitall.android.receivers.LocationReceiver">
            <intent-filter>
                <action android:name="LocationReceiver.Action.LOCATION_UPDATE" />
            </intent-filter>
        </receiver>

    </application>
</manifest>

Añadiendo los servicios de Firebase

Nuestro SDK necesita integrarse con tu proyecto de FCM (Firebase Cloud Messaging).

FCM realiza la conexión con el dispositivo para poder enviarle notificaciones push. Esta conexión se establece con el Push Token, un token efímero, único y generado por Google para cada dispositivo.


<manifest ...>
    <!-- ... -->
    <application ...>
        <!-- ... -->

        <service android:name="com.indigitall.android.services.FirebaseMessagingService">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
        </service>

        <!-- DEPRECATED - NOT ADD
        <service android:name="com.indigitall.android.services.FirebaseInstanceIdService">
        <intent-filter>
            <action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
        </intent-filter>
        </service>
        -->
    </application>
</manifest>

Añadiendo los servicios de HMS

Nuestro SDK necesita integrarse con tu proyecto de HMS (Huawei Mobile Services) para poder impactar en los últimos terminales de Huawei.

HMS realiza la conexión con el dispositivo para poder enviarle notificaciones push. Esta conexión se establece con el Push Token, un token efímero, único y generado por HMS para cada dispositivo.

Para poder impactar a los dispositivos Huawei con Harmony, deberás realizar los siguiente pasos:

  1. Añade el servicio HMSMessagingService en el manifest del proyecto.

    
    <manifest ...>
    <!-- ... -->
    <application ...>
        <!-- ... -->
    
        <service
            android:name="com.indigitall.android.services.HMSMessagingService"
            android:exported="false">
            <intent-filter>
                <action android:name="com.huawei.push.action.MESSAGING_EVENT" />
            </intent-filter>
        </service>
    </application>

<br />

2. Añadir el plugin de huawei en el _gradle_ de la aplicación, recuerda que **minSdkVersion** que permite Huawei es la 19:

```groovy
// build.gradle (app)

plugins {
    id 'com.huawei.agconnect'
}
// if you use apply plugin
// apply plugin: 'com.huawei.agconnect'

android {
    ...

     defaultConfig {
        minSdkVersion 19
     }

     ...
    dependencies {
        ...
        implementation 'com.huawei.hms:push:6.1.0.300'
    }
}

Estableciendo el icono de las notificaciones

Este icono se mostrará en la barra superior del sistema Android y en la cabecera de las pushes enviadas a través de tu app.

Debe ser un icono monocromo, es decir, que la imagen debe contener solo un color y alfa.

Te ponemos un ejemplo con nuestro logo en monocromo:


New tag


A continuación te mostramos cómo debería estar tu código en el AndroidManifest.xml (El icono tiene que ser un png)


<manifest ...>
    <!-- ... -->
    <application ...>
        <!-- ... -->

        <!-- Resource for monochrome icon -->
        <meta-data android:name="indigitall.icon" android:resource="@drawable/YOUR_MONOCHROME_ICON"/>

        <!-- Resource for icon color -->
        <meta-data android:name="indigitall.color" android:resource="@color/colorPrimary"/>
    </application>
</manifest>


* Para mayor aclaración sobre la creación de iconos, os dejamos este enlace a la documentación de Android que puede servir de ayuda: Product icons

Inicializar el SDK

Para inicializar el SDK es necesario llamar al método init. Esta llamada ha de producirse dentro del objeto Application.

La clase Application del SDK de Android es la clase base contenedora, y es lo primero que se ejecuta al abrir la aplicación. Por lo tanto, es necesario que nuestra aplicación tenga una clase personalizada que extienda de la clase Application.

Dentro de esta clase, en el método onCreate, debemos añadir las siguientes líneas de código:


Indigitall.init(this, "<your_indigitall_app_key>", "<your_firebase_sender_id")



No olvides añadir el nombre de tu clase Application en el manifest AndroidManifest.xml:


<application android:name=".application.App">

Validar la integración

Para comprobar que la integración se ha realizado correctamente realiza lo siguiente:


  1. Desde Android Studio, ves a la pestaña Logcat y busca la llamada PUT /device conteniendo los parámetros appKey, deviceId y pushToken y que devuelva HTTP 200.




  1. Envia una notificación desde la consola de indigitall. Es posible que en la consola el contador de dispositivos aparezca a 0. No te preocupes, puede tardar unos minutos en actualizarse, pero no hace falta que esperes, la push debería llegar igualmente.



Recursos