| ES
guía rápida de integración del SDK de Android.
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.
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:
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.
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:
El SDK de indigitall
// 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'
}
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>
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>
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:
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'
}
}
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:
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
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">
Para comprobar que la integración se ha realizado correctamente realiza lo siguiente: