Para el envío y recepción de notificaciones push móviles mediante el Mobile SDK de Android necesitarás tener configurado Firebase Cloud Messaging. En este artículo se explican los pasos necesarios para realizar la configuración.
1. Crear y configurar el proyecto en Firebase
1.1. Crear y configurar un proyecto en Firebase
El primer paso será tener configurado un proyecto en la consola de Firebase, en caso de no tenerlo podremos seguir la guía de Google para la creación y configuración inicial de Firebase en Android.
Una vez tengamos este punto completado, habremos conseguido el fichero google-services.json y tendremos Google Play Service a nivel proyecto y app, y la dependencia de Firebase a nivel app (dentro de nuestros ficheros Build.gradle).
1.2. Configuración de FirebaseMessagingService
Dentro de nuestro proyecto Android, necesitaremos tener implementado el servicio FirebaseMessagingService, en cual nos permitirá recibir las notificaciones mediante onMessageReceived y registrar los cambios de push token con onNewToken.
a. Recepción de notificaciones en onMessageReceived
En la llamada onMessageReceived recibiremos nuestras notificaciones generadas desde nuestros Workflows en Connectif, para poder manejar esos push utilizaremos Connectif.handlePushNotification, el cual nos devolverá un booleano indicando si ese push fue manejado por Connectif, como se ve en la implementación lo utilizaríamos para poder manejar todos los push que no provengan de Connectif.
override fun onMessageReceived(remoteMessage: RemoteMessage) {
if (!Connectif.handlePushNotification(
remoteMessage.data,
applicationContext
)
) {
// Other push providers
}
}
Si deseamos identificar si el push viene de parte de Connectif y no deseamos manejarlo en ese momento, podremos utilizar Connectif.isConnectifPushNotification.
b. Registrar cambios en el token de push
La primera vez que arranca nuestra app genera un nuevo token, lo podremos registrar a través de nuestro servicio con onNewToken.
override fun onNewToken(token: String) {
Connectif.addPushToken(token)
}
Este token podrá cambiar en los siguientes casos:
- La app se restablece en un dispositivo nuevo.
- El usuario desinstala y vuelve a instalar la app.
- El usuario borra los datos de la app.
Este será el aspecto de nuestra implementación de FirebaseMessagingService.
class MyFirebaseMessagingService : FirebaseMessagingService() {
private val notificationManager by lazy {
getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
}
override fun onMessageReceived(remoteMessage: RemoteMessage) {
if (!Connectif.handlePushNotification(
remoteMessage.data,
notificationManager,
applicationContext
)
) {
// Other push providers
}
}
override fun onNewToken(token: String) {
Connectif.addPushToken(token)
}
}
Tendremos que tener en cuenta que si no es el primer inicio de la app, no se ejecutará onNewToken, por lo que será interesante obtener el token de push actual de la instancia de Firebase y enviarlo a Connectif. Los lugares adecuados serán durante onCreate en nuestro objeto Application o en el de nuestra Activity principal.
class SampleApp : Application() {
override fun onCreate() {
super.onCreate()
FirebaseMessaging.getInstance().token.addOnSuccessListener {
Connectif.addPushToken(it, applicationContext)
}
}
}
c. Añadir FirebaseMessagingService al fichero AndroidManifest
Para poder usar el servicio de mensajería, deberemos de añadirlo a nuestro fichero AndroidManifest.
<service
android:name=".mypackages.MyFirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
2. Configurar Android en la Integración App Móvil de Connectif
Para poder realizar el envío de push desde Connectif, necesitaremos que nos facilites la clave privada (fichero JSON) de la Cuenta de Servicio para Google Cloud. Los pasos para la creación son los siguientes.
Desde la Consola de Firebase accederemos a nuestro proyecto, dentro de "Configuración de proyecto" accederemos a las "Cuentas de Servicio.
Manteniendo el check en Node.js, pulsaremos en "Generar nueva clave privada". Esta acción nos generará un fichero JSON el cual necesitaremos más adelante.
Dentro de Connectif iremos a la configuración de nuestra tienda, a la sección del canal App Móvil. Nos encontraremos una sección Android que nos permitirá subir el anterior fichero descargado en Firebase.
Y este será el aspecto que tendrá nuestra integración cuando hayamos subido nuestro fichero correctamente.
Una vez realizados estos pasos tendremos la integración de Firebase Cloud Messaging lista para enviar push desde nuestros workflows.
3. Configuración adicional
Recuerda que al iniciar el SDK podrá definir algunos valores usando el parámetro ConnectifConfig en Connectif.initialize().
3.1. Icono
Por defecto tendremos un icono asignado a nuestras notificaciones push:
ic_default_notification
Si lo deseas podrás personalizando indicando el recurso en la propiedad pushSmallIcon de ConnectifConfig al iniciar el SDK, recuerda que para que se visualice correctamente debe contener únicamente color blanco y transparencias.
3.2. Canal de notificaciones
Desde Android 8 es obligatorio crear un canal para poder mostrar las notificaciones, por defecto asignaremos a las notificaciones mostradas por Connectif el nombre de canal "Default Channel" y "connectif_channel" como identificador de canal.
Podrás indicarnos tu nombre y canal personalizado usando las propiedades pushChannelName y pushChannelId de ConnectifConfig al iniciar el SDK.
¡Sigue aprendiendo!
Para aprovechar todo el potencial de tu cuenta en Connectif, te recomendamos continuar con los siguientes artículos:
- Android SDK Get Started, para añadir Connectif Mobile SDK a tu proyecto Android.
- Guía completa para integrar Connectif con tu App Móvil, para conocer en profundidad todos los cambios de esta integración.
- iOS SDK Get Started, para añadir Connectif Mobile SDK a tu proyecto iOS.
- Configuración Apple Push Notifications Service, para activar el envío y recepción de push mediante el Mobile SDK de iOS.