Ir a la consola

Personaliza tus mensajes de Firebase In-App Messaging

Agrega una acción a tu mensaje

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 ella.

Firebase In-App Messaging usa controladores de vínculos directos para procesar las acciones. El SDK puede usar varios controladores, por lo que, si tu app ya tiene uno, Firebase In-App Messaging puede usarlo sin configuración adicional. En caso contrario, puedes usar Firebase Dynamic Links. Consulta Crea Dynamic Links en iOS para obtener más información.

Usa Firebase console para agregar la acción al mensaje

Cuando tu app tenga un controlador de vínculos directos, podrás redactar una campaña con una acción. Abre la sección In-App Messaging de Firebase console y comienza una campaña nueva o edita una existente. En esa campaña, proporciona un texto y una acción para el botón, y una imagen o un banner para la acción. La acción corresponde a un vínculo directo relevante.

El formato de la acción depende del diseño que elijas para el mensaje. Los mensajes modales tienen botones de acción con texto, color de texto y color de fondo personalizables. En cambio, las imágenes y los banners superiores son interactivos y permiten invocar la acción especificada cuando se presionan.

Habilita la entrega de mensajes opcional

Según la configuración predeterminada, Firebase In-App Messaging entrega los mensajes automáticamente a todos los usuarios de tu app. Para ello, el SDK de Firebase In-App Messaging usa los ID de instancia 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 instancia, a los servidores de Firebase. Si quieres dar más control a los usuarios sobre los datos que envían, puedes habilitar la recopilación de datos opcional y darles la oportunidad de aprobar 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 manera manual para los usuarios que aceptaron, como se indica a continuación:

  1. Agrega una clave nueva en tu archivo Info.plist para desactivar la inicialización automática:

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

    [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.

Inhabilita los mensajes de manera temporal

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 suprimir las pantallas de mensajes de FIAM por algún motivo, puedes hacerlo mediante la propiedad messageDisplaySuppressed del SDK:

[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.

Modifica las pantallas de mensajes

Firebase In-App Messaging te permite personalizar pantallas de mensajes para cambiar la forma en que tu app procesa el diseño, los estilos de fuente y las formas de los botones de los mensajes, además de otros detalles. Hay dos formas de modificar las pantallas de mensajes: modificar las pantallas predeterminadas de Firebase In-App Messaging o crear tu propia biblioteca de pantallas de mensajes desde cero.

Modifica las pantallas predeterminadas

La manera más directa de personalizar los mensajes es basarse en el código predeterminado de pantallas de mensajes de Firebase In-App Messaging.

Clona el repositorio firebase-ios-sdk

Para comenzar, clona la versión más reciente del repositorio firebase-ios-sdk y, luego, abre el directorio InAppMessagingDisplay.

Selecciona los tipos de mensajes que modificarás

Con el repositorio clonado, puedes modificar cualquiera o todos los tipos de mensajes de Firebase In-App Messaging, es decir, Modal, Banner y ImageOnly. Cada tipo corresponde a un diseño de mensaje en el flujo de creación de campañas de Firebase In-App Messaging.

En este sentido, cada tipo tiene acceso a un conjunto de datos diferente, determinado por las opciones de personalización de campañas en Firebase console:

Tipo titleText bodyText textColor backgroundColor imageData actionButton
Modal check check check check check check
Banner check check check check check
ImageOnly check

Modifica el código de procesamiento de pantallas de mensajes

Con las limitaciones de los tipos de mensajes en mente, tienes la libertad de modificarlos como quieras. Puedes crear un banner que se muestre en la parte inferior de tu app, desplazar el botón de acción en una modal o hacer cualquier otra modificación que haga que la apariencia de los mensajes se ajuste a tu app.

Hay dos elementos principales a los que se debe prestar atención cuando se modifican las pantallas de mensajes:

  • Directorios de tipos de mensajes: Cada tipo de mensaje tiene un directorio independiente con archivos que determinan la lógica del tipo:
  • Storyboard: La biblioteca InAppMessagingDisplay también tiene un archivo .storyboard que ayuda a definir la IU para los tres tipos de mensajes:

Modifica archivos en los directorios de tus tipos de mensajes preferidos y en las secciones del .storyboard correspondientes para crear tus pantallas de mensajes personalizadas.

Actualiza tu podfile para usar tu InAppMessagingDisplay modificada

Para que Firebase In-App Messaging use tus pantallas de mensajes modificadas en lugar de las predeterminadas, actualiza tu podfile a fin de usar tu InAppMessagingDisplay modificada de la siguiente forma:

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

target 'YourProject' do
# Comment the next line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!

# Pods for YourProject
pod 'Firebase'

# Remove the default InAppMessagingDisplay pod:
# pod 'Firebase/InAppMessagingDisplay'

# Overwrite it with a version that points to your local copy:
pod `FirebaseInAppMessagingDisplay', :path => '~/Path/To/The/Cloned/Repo/'

end
Con eso listo, puedes actualizar tus pods, volver a compilar tu app y ver tus nuevas pantallas de mensajes personalizadas.

Crea tu propia biblioteca de pantallas de mensajes

No estás obligado a trabajar desde la biblioteca InAppMessagingDisplay para crear una IU a fin de mostrar los mensajes. También puedes escribir tu propio código desde cero.

Crea una clase que implemente la interfaz de FIRInAppMessagingRendering

Firebase In-App Messaging usa la clase FIRInAppMessaging para administrar las comunicaciones entre los servidores de Firebase y tu app. Esa clase, a su vez, usa el protocolo FIRInAppMessagingRendering para mostrar los mensajes que recibe. Para crear tu propia biblioteca de pantallas, escribe una clase que implemente ese protocolo.

La definición y documentación del protocolo sobre cómo adecuarse a este están en el archivo FIRInAppMessagingRendering.h de la biblioteca InAppMessaging. Si ya configuraste Firebase In-App Messaging, puedes encontrar el archivo en el directorio de tu proyecto de Xcode como se muestra a continuación:

FirebaseInAppMessaging > Frameworks > FirebaseInAppMessaging.framework > Headers > FIRInAppMessagingRendering.h.

Configura messageDisplayComponent para usar tu biblioteca de pantallas de mensajes

FIRInAppMessaging usa su propiedad messageDisplayComponent a fin de determinar qué objeto debe usar para mostrar mensajes. Configura esa propiedad en un objeto de la clase personalizada de pantallas de mensajes, de modo que Firebase In-App Messaging sepa usar tu biblioteca para procesar mensajes como se muestra a continuación:

[FIRInAppMessaging inAppMessaging].messageDisplayComponent = yourFIRInAppMessagingRenderingInstance;

Modifica tu podfile para usar la versión sin periféricos de Firebase In-App Messaging

El pod predeterminado de Firebase In-App Messaging, Firebase/InAppMessagingDisplay, automáticamente se asigna a sí mismo como el messageDisplayComponent de tu app. Para evitar esto, usa el pod sin periféricos de Firebase/InAppMessaging en su lugar:

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

target 'YourProject' do
# Comment the next line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!

# Pods for YourProject
pod 'Firebase'

# Remove the default InAppMessagingDisplay pod:
# pod 'Firebase/InAppMessagingDisplay'

# Include the headless pod instead:
pod `Firebase/InAppMessaging'

end
Con eso listo, puedes actualizar tus pods, volver a compilar tu app y ver tus nuevas pantallas de mensajes personalizadas.