Modifica el comportamiento de los mensajes de Firebase In‑App Messaging

Firebase In-App Messaging te permite crear, configurar y segmentar interacciones de usuario enriquecidas con las capacidades de Google Analytics, sin parámetros de configuración adicionales, a fin de vincular eventos de mensajería a las características, actividades y decisiones reales del usuario, con requisitos de programación mínimos o nulos. Con la integración adicional de algunos SDK de Firebase In‑App Messaging, puedes adaptar aún más el comportamiento de los mensajes desde la app, responder cuando los usuarios interactúen con ellos, activar eventos de mensajes fuera del framework de Analytics y permitir que los usuarios controlen el uso compartido de sus datos personales relacionados con las interacciones a través de mensajes.

Responde cuando los usuarios interactúen con los mensajes desde la app

Con las acciones, puedes usar los mensajes desde la app para dirigir a los usuarios a un sitio web o una pantalla específica de la aplicación.

Tu código puede responder a interacciones básicas (como clics y descartes), impresiones (vistas verificadas de los mensajes) y errores de visualización registrados y confirmados por el SDK. Por ejemplo, si el mensaje se redactó como un diálogo modal en formato de tarjeta, es posible que quieras hacer un seguimiento para saber en cuál de las dos URLs de la tarjeta hizo clic el usuario.

Implementa DisplayDelegate para controlar las interacciones de las tarjetas

Puedes registrar un delegado de visualización de mensajes desde la app que recibirá llamadas cada vez que se interactúe con ellos. Deberás implementar una clase según el protocolo InAppMessagingDisplayDelegate y configurarlo como la propiedad delegada de la instancia InAppMessaging.

Si quieres hacer un seguimiento del vínculo del mensaje estilo tarjeta en el que hizo clic el usuario, define una clase que implemente el método messageClicked mediante el protocolo DisplayDelegate, que proporciona acceso al vínculo visitado por el usuario.

Swift

Nota: Este producto no está disponible en macOS, Mac Catalyst, App Clips ni watchOS.

Consulta la referencia del delegado de visualización de Swift para conocer los métodos de devolución de llamada que se pueden implementar y sus parámetros, incluido InAppMessagingAction.


// In CardActionFiamDelegate.swift
class CardActionFiamDelegate : NSObject, InAppMessagingDisplayDelegate {

    func messageClicked(_ inAppMessage: InAppMessagingDisplayMessage) {
        // ...
    }

    func messageDismissed(_ inAppMessage: InAppMessagingDisplayMessage,
                          dismissType: FIRInAppMessagingDismissType) {
        // ...
    }

    func impressionDetected(for inAppMessage: InAppMessagingDisplayMessage) {
        // ...
    }

    func displayError(for inAppMessage: InAppMessagingDisplayMessage, error: Error) {
        // ...
    }

}

// In AppDelegate.swift
// Register the delegate with the InAppMessaging instance
let myFiamDelegate = CardActionFiamDelegate()
InAppMessaging.inAppMessaging().delegate = myFiamDelegate;

Objective-C

Nota: Este producto no está disponible en macOS, Mac Catalyst, App Clips ni watchOS.

Consulta la referencia del delegado de visualización de Objective-C para conocer los métodos de devolución de llamada que se pueden implementar y sus parámetros, incluido FIRInAppMessagingDisplayMessage.


// In CardActionFiamDelegate.h
@interface CardActionFiamDelegate : NSObject <FIRInAppMessagingDisplayDelegate>
@end

// In CardActionFiamDelegate.m
@implementation CardActionFiamDelegate

- (void)displayErrorForMessage:(nonnull FIRInAppMessagingDisplayMessage *)inAppMessage
                         error:(nonnull NSError *)error {
    // ...
}

- (void)impressionDetectedForMessage:(nonnull FIRInAppMessagingDisplayMessage *)inAppMessage {
    // ...
}

- (void)messageClicked:(nonnull FIRInAppMessagingDisplayMessage *)inAppMessage {
    // ...
}

- (void)messageDismissed:(nonnull FIRInAppMessagingDisplayMessage *)inAppMessage
             dismissType:(FIRInAppMessagingDismissType)dismissType {
    // ...
}

@end

// In AppDelegate.m
CardActionFiamDelegate *myFiamDelegate = [CardActionFiamDelegate new];
[FIRInAppMessaging inAppMessaging].delegate = myFiamDelegate;

Activa los mensajes desde la app de manera programática

Según la configuración predeterminada, Firebase In‑App Messaging te permite activar los mensajes desde la app mediante los eventos de Google Analytics para Firebase sin integración adicional. También puedes activar manualmente eventos de manera programática mediante los activadores programáticos del SDK de Firebase In‑App Messaging.

En el redactor de campañas de In‑App Messaging, crea una campaña nueva o selecciona una existente. Luego, en el paso de programación del flujo de trabajo del redactor, anota el ID de un evento de mensajería nuevo o existente. Una vez que lo anotes, instrumenta tu app para que active el evento según su ID.

Swift

Nota: Este producto no está disponible en macOS, Mac Catalyst, App Clips ni watchOS.
…
// somewhere in the app's code
InAppMessaging.inAppMessaging().triggerEvent("exampleTrigger");

Objective-C

Nota: Este producto no está disponible en macOS, Mac Catalyst, App Clips ni watchOS.
…
// somewhere in the app's code
[[FIRInAppMessaging inAppMessaging] triggerEvent:@"exampleTrigger"];

Usa metadatos personalizados de la campaña

En tus campañas, puedes especificar datos personalizados en una serie de pares clave-valor. Cuando los usuarios interactúan con los mensajes, los datos te permiten, por ejemplo, mostrar un código promocional.

Swift

Nota: Este producto no está disponible en macOS, Mac Catalyst, App Clips ni watchOS.
class CardActionFiamDelegate : NSObject, InAppMessagingDisplayDelegate {

    func messageClicked(_ inAppMessage: InAppMessagingDisplayMessage) {
	// Get data bundle from the inapp message
	let appData = inAppMessage.appData
	// ...
    }
}

Objective-C

Nota: Este producto no está disponible en macOS, Mac Catalyst, App Clips ni watchOS.
@implementation CardActionFiamDelegate

- (void)messageClicked:(nonnull FIRInAppMessagingDisplayMessage *)inAppMessage {
	appData = inAppMessage.appData
	// ...
}

@end

Inhabilita temporalmente los mensajes desde la app

Según la configuración predeterminada, Firebase In‑App Messaging procesa los mensajes cuando se cumple una condición de activación, sin importar el estado actual de la app. Si quieres evitar que aparezcan mensajes por algún motivo (por ejemplo, para no interrumpir una secuencia de pantallas de procesamiento de pagos), usa la propiedad messageDisplaySuppressed del SDK, como en este ejemplo de Objective-C:

  [FIRInAppMessaging inAppMessaging].messageDisplaySuppressed = YES;

Puedes evitar que Firebase In‑App Messaging muestre mensajes si configuras la propiedad como YES. Por el contrario, si la configuras como NO, se volverán a mostrar. El SDK restablece la propiedad en NO cuando se reinicia la app. El SDK ignora los mensajes suprimidos. Cuando la supresión está desactivada, se deben volver a cumplir las condiciones de activación correspondientes para que Firebase In‑App Messaging pueda mostrar los mensajes.

Permite que los usuarios rechacen la entrega de mensajes

Según la configuración predeterminada, Firebase In‑App Messaging entrega mensajes automáticamente a todos los usuarios de la app a los que segmentes en las campañas de mensajes. Para ello, el SDK de Firebase In‑App Messaging usa los IDs de instalación de Firebase a fin de identificar las apps de cada usuario. Esto significa que In‑App Messaging debe enviar los datos del cliente vinculados con el ID de instalación a los servidores de Firebase. Si quieres darles más control a los usuarios sobre los datos que envían, puedes inhabilitar la recopilación automática de datos y permitirles que aprueben el uso compartido de datos.

Para ello, debes inhabilitar la inicialización automática de Firebase In‑App Messaging y, luego, inicializar el servicio de forma manual para los usuarios que aceptaron, como se indica a continuación:

  1. Agrega una clave nueva al archivo Info.plist para desactivar la inicialización automática, como se indica a continuación:

    • Clave: FirebaseInAppMessagingAutomaticDataCollectionEnabled
    • Valor: NO
  2. Inicializa Firebase In‑App Messaging de manera manual para los usuarios seleccionados:

    // Only needed if FirebaseInAppMessagingAutomaticDataCollectionEnabled is set to NO
    // in Info.plist
    [FIRInAppMessaging inAppMessaging].automaticDataCollectionEnabled = YES;
    
    

    Cuando configuras la clave automaticDataCollectionEnabled como YES, el valor persiste tras reiniciar la app y anula el valor que definiste en el archivo Info.plist. Si quieres volver a inhabilitar la inicialización, por ejemplo, si un usuario deja de participar en la recopilación más adelante, configura la propiedad como NO.