Índice:
- Configurar FCM en la aplicación
- Registrar el token FCM de los usuarios en BLiP Chat
- Enviar archivo de clave privada de su cuenta de servicio
- Probar la integración
En algunos escenarios específicos, puede ser necesario agregar notificaciones push en aplicaciones Android que incluyen BLiP Chat.
A través de las notificaciones push, es posible notificar al usuario sobre mensajes no leídos.
Para esto, se requieren algunas configuraciones específicas entre la aplicación (que incluye BLiP Chat), FCM (Firebase Cloud Messaging) y BLiP. A continuación se describen los pasos necesarios para realizar estas configuraciones.
1 - Configurar FCM en la aplicación
Agregue Firebase a su proyecto Android, si aún no lo ha hecho.
Configure un cliente de la aplicación Firebase Cloud Messaging en su proyecto Android.
2 - Registrar el token FCM de los usuarios en BLiP Chat
Para que BLiP Chat envíe notificaciones, es necesario registrar el token del usuario en el servidor de BLiP. Es a través de esta información que BLiP puede determinar la credencial FCM (Google) de un usuario de BLiP Chat.
Importante: La integración con FCM fue homologada inicialmente solo utilizando nuestra biblioteca nativa de Android en proyectos también nativos. El uso con Flutter o integraciones en WebView aún no ha sido completamente probado y documentado.
El token del usuario debe capturarse utilizando el método onTokenRefresh de su clase que hereda de FirebaseInstanceIdService.
@Override
public void onTokenRefresh() {
// Get updated InstanceID token.
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
// Store token to send later when connecting to blip chat.
storeTokenUsingAnyMethod(refreshedToken);
}
El token almacenado debe ser pasado al BLiP Chat cuando se carga el cliente (BlipClient). Para esto, es necesario pasar el token (FCM) del usuario concatenado con @firebase.gw.msging.net en la propiedad extras de la cuenta del usuario.
El valor debe ser definido como un elemento de la propiedad ‘extras’ de la ‘Account’. La propiedad ‘extras’ es un Map<String,String>, el elemento debe tener la clave "#inbox.forwardTo" y el valor “{storedToken}@firebase.gw.msging.net”. Ver el ejemplo a continuación:
AuthConfig authConfig = new AuthConfig(AuthType.Dev, "userIdentifier","userPassword");
Map<String, String> extras = new HashMap<>();
String fcmUserToken = "stored_user_token";
extras.put("#inbox.forwardTo", String.format("%s@firebase.gw.msging.net", fcmUserToken));
Account account = new Account();
account.setFullName("User Name");
account.setEmail("user@gmail.com");
account.setEncryptMessageContent(true);
account.setExtras(extras);
BlipOptions blipOptions = new BlipOptions();
blipOptions.setAuthConfig(authConfig);
blipOptions.setAccount(account);
BlipClient.openBlipThread(MainActivity.this, BuildConfig.APPKEY, blipOptions);
3 - Enviar archivo de clave privada de su cuenta de servicio
Además de las configuraciones 1 y 2, es necesario enviar al BLiP un archivo con las claves privadas de su proyecto FCM.
Para generar el archivo con estas configuraciones, siga los pasos a continuación:
- En la consola de Firebase, vaya a Configuración > Cuentas de servicio.
Haga clic en Generar nueva clave privada y confirme haciendo clic en Generar clave. Guarde de manera segura el archivo JSON que contiene la clave.
- Envíe un correo electrónico (sin adjuntar el archivo) a blip@blip.ai con el asunto Integração FCM.
El equipo de BLiP responderá al correo electrónico indicando dónde debe almacenarse el archivo de clave privada.
Nota: No adjunte el archivo de clave privada al correo electrónico.
Una vez completados todos los pasos anteriores, su aplicación ya puede recibir los mensajes.
Nota: Actualmente, para llevar a cabo este proceso, abra un ticket de soporte (https://support.blip.ai/), enviando el archivo JSON generado y solicitando la información.
Probar la integración
Cree una clase que herede de FirebaseMessagingService para consumir las notificaciones push enviadas por BLiP utilizando el siguiente método:
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
// TODO(developer): Handle FCM messages here.
// Check if message contains a data payload.
if (remoteMessage.getData().size() > 0) {
Log.d(TAG, "Message data payload: " + remoteMessage.getData());
// Handle message within 10 seconds
handleNow();
}
}
El retorno del método remoteMessage.getData() es un Map<String, String> con 3 elementos, que representan un mensaje en el protocolo utilizado por BLiP Chat.
‘id’ = identificador del mensaje
‘content’ = json del contenido del mensaje.
‘type’ = tipo de mensaje.
- Los contenidos y tipos de mensajes se ejemplifican aquí
Para obtener más información, acceda a la discusión sobre el tema en nuestra comunidad o los vídeos en nuestro canal. 😃