Skip to content


Manejo personalizado de la visualización de mensajes dentro de la aplicación

Cuando está configurado ABKInAppMessageControllerDelegate, se llama al siguiente método delegado antes de que se muestren los mensajes dentro de la aplicación:

1
- (ABKInAppMessageDisplayChoice) beforeInAppMessageDisplayed:(ABKInAppMessage *)inAppMessage;
1
func beforeInAppMessageDisplayed(inAppMessage: ABKInAppMessage!) -> ABKInAppMessageDisplayChoice

Si sólo has implementado ABKInAppMessageUIDelegatese llamará al siguiente método delegado de interfaz de usuario:

1
- (ABKInAppMessageDisplayChoice) beforeInAppMessageDisplayed:(ABKInAppMessage *)inAppMessage withKeyboardIsUp:(BOOL)keyboardIsUp;
1
func beforeInAppMessageDisplayed(inAppMessage: ABKInAppMessage!, withKeyboardIsUp keyboardIsUp: Bool) -> ABKInAppMessageDisplayChoice

Puedes personalizar la gestión de mensajes dentro de la aplicación implementando este método delegado y devolviendo uno de los siguientes valores para ABKInAppMessageDisplayChoice:

Puedes utilizar el métodobeforeInAppMessageDisplayed: delegate para añadir lógica de visualización de mensajes dentro de la aplicación, personalizar los mensajes dentro de la aplicación antes de que Braze los muestre u optar por no utilizar la lógica de visualización de mensajes dentro de la aplicación y la interfaz de usuario de Braze por completo.

Consulta nuestra aplicación de muestra para ver un ejemplo de implementación.

Anulación de mensajes dentro de la aplicación antes de la visualización

Si quieres modificar el comportamiento de visualización de los mensajes dentro de la aplicación, debes añadir la lógica de visualización necesaria a tu método delegado beforeInAppMessageDisplayed:. Por ejemplo, puede que quieras mostrar el mensaje dentro de la aplicación desde la parte superior de la pantalla si se está mostrando el teclado, o tomar el modelo de datos del mensaje dentro de la aplicación y mostrar tú mismo el mensaje dentro de la aplicación.

Si la campaña de mensajería dentro de la aplicación no se muestra cuando se ha iniciado la sesión, asegúrate de que has añadido la lógica de visualización necesaria a tu método delegado beforeInAppMessageDisplayed:. Esto permite que la campaña de mensajería dentro de la aplicación se muestre desde la parte superior de la pantalla aunque se esté mostrando el teclado.

Desactivar el modo oscuro

Para evitar que los mensajes dentro de la aplicación adopten el estilo de modo oscuro cuando el dispositivo del usuario tiene habilitado el modo oscuro, utiliza la propiedad ABKInAppMessage.enableDarkTheme. Desde el método ABKInAppMessageControllerDelegate.beforeInAppMessageDisplayed: o ABKInAppMessageUIDelegate.beforeInAppMessageDisplayed:, establece la propiedad enableDarkTheme del parámetro inAppMessage del método en NO.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// ABKInAppMessageControllerDelegate
- (ABKInAppMessageDisplayChoice)beforeInAppMessageDisplayed:(ABKInAppMessage *)inAppMessage {
  ...
  inAppMessage.enableDarkTheme = NO;
  ...
  return ABKDisplayInAppMessageNow;
}

// ABKInAppMessageUIDelegate
- (ABKInAppMessageDisplayChoice)beforeInAppMesssageDisplayed:(ABKInAppMessage *)inAppMessage
                                            withKeyboardIsUp:(BOOL)keyboardIsUp {
  ...
  inAppMessage.enableDarkTheme = NO;
  ...
  return ABKDisplayInAppMessageNow;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// ABKInAppMessageControllerDelegate
func before(inAppMessageDisplayed inAppMessage: ABKInAppMessage) -> ABKInAppMessageDisplayChoice {
  ...
  inAppMessage.enableDarkTheme = false
  ...
  return ABKInAppMessageDisplayChoice.displayInAppMessageNow
}

// ABKInAppMessageUIDelegate
func before(inAppMessageDisplayed inAppMessage: ABKInAppMessage, withKeyboardIsUp keyboardIsUp: Bool) -> ABKInAppMessageDisplayChoice {
  ...
  inAppMessage.enableDarkTheme = false
  ...
  return ABKInAppMessageDisplayChoice.displayInAppMessageNow
}

Ocultar la barra de estado durante la visualización

Para los mensajes dentro de la aplicación Full y HTML, el SDK intentará colocar el mensaje sobre la barra de estado de forma predeterminada. Sin embargo, en algunos casos, la barra de estado puede seguir apareciendo encima del mensaje dentro de la aplicación. A partir de la versión 3.21.1 del SDK de iOS, puedes forzar que la barra de estado se oculte al mostrar los mensajes dentro de la aplicación Full y HTML configurando ABKInAppMessageHideStatusBarKey a YES dentro del appboyOptions pasado a startWithApiKey:.

Registro de impresiones y clics

El registro de impresiones y clics de mensajes dentro de la aplicación no es automático cuando implementas un manejo completamente personalizado (por ejemplo, eludes la visualización de mensajes dentro de la aplicación de Braze devolviendo ABKDiscardInAppMessage en tu beforeInAppMessageDisplayed:). Si decides implementar tu propia interfaz de usuario utilizando nuestros modelos de mensajes dentro de la aplicación, debes registrar los análisis con los siguientes métodos en la clase ABKInAppMessage:

1
2
3
4
// Registers that a user has viewed an in-app message with the Braze server.
- (void) logInAppMessageImpression;
// Registers that a user has clicked on an in-app message with the Braze server.
- (void) logInAppMessageClicked;
1
2
3
4
// Registers that a user has viewed an in-app message with the Braze server.
func logInAppMessageImpression()
// Registers that a user has clicked on an in-app message with the Braze server.
func logInAppMessageClicked()

Además, deberías registrar los clics en los botones de las subclases de ABKInAppMessageImmersive (i.e., Modal y Full mensajes dentro de la aplicación):

1
2
// Logs button click analytics
- (void)logInAppMessageClickedWithButtonID:(NSInteger)buttonID;
1
2
// Logs button click analytics
func logInAppMessageClickedWithButtonID(buttonId: NSInteger)

Declaraciones de métodos

Para más información, consulta los siguientes archivos de encabezado:

Muestras de aplicación

Consulta AppDelegate.m ejemplo de aplicación de mensajes dentro de la aplicación.

New Stuff!