Skip to content


Exibição personalizada de mensagens no app

Quando o ABKInAppMessageControllerDelegate é definido, o método delegado a seguir será chamado antes que as mensagens no app sejam exibidas:

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

Se você tiver implementado apenas ABKInAppMessageUIDelegateo método delegado da interface do usuário a seguir será chamado em seu lugar:

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

Você pode personalizar o envio de mensagens no app implementando esse método delegado e retornando um dos seguintes valores para ABKInAppMessageDisplayChoice:

Você pode usar o método delegado beforeInAppMessageDisplayed: para adicionar a lógica de exibição de mensagens no app, personalizar as mensagens no app antes que o Braze as exiba ou aceitar a lógica de exibição de mensagens no app e a interface do usuário completamente.

Confira nosso aplicativo de amostra para obter um exemplo de implementação.

Substituição de mensagens no app antes da exibição

Se quiser alterar o comportamento de exibição das mensagens no app, adicione qualquer lógica de exibição necessária ao método delegado beforeInAppMessageDisplayed:. Por exemplo, você pode querer exibir a mensagem no app na parte superior da tela se o teclado estiver sendo exibido no momento, ou pegar o modelo de dados da mensagem no app e exibir a mensagem no app você mesmo.

Se a campanha de mensagens no app não estiver sendo exibida quando a sessão for iniciada, verifique se a lógica de exibição necessária foi adicionada ao método delegado beforeInAppMessageDisplayed:. Isso permite que a campanha de mensagens no app seja exibida na parte superior da tela, mesmo que o teclado esteja sendo exibido.

Desativando o modo escuro

Para evitar que as mensagens no app adotem o estilo do modo escuro quando o dispositivo do usuário tiver o modo escuro ativado, use a propriedade ABKInAppMessage.enableDarkTheme. No método ABKInAppMessageControllerDelegate.beforeInAppMessageDisplayed: ou ABKInAppMessageUIDelegate.beforeInAppMessageDisplayed:, defina a propriedade enableDarkTheme do parâmetro inAppMessage do método como 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
}

Ocultação da barra de status durante a exibição

Para mensagens no app Full e HTML, o SDK tentará colocar a mensagem sobre a barra de status por padrão. No entanto, em alguns casos, a barra de status ainda pode aparecer na parte superior da mensagem no app. A partir da versão 3.21.1 do SDK do iOS, é possível forçar a ocultação da barra de status ao exibir mensagens no app Full e HTML, definindo ABKInAppMessageHideStatusBarKey para YES dentro do appboyOptions passado para startWithApiKey:.

Registro de impressões e cliques

O registro de impressões e cliques em mensagens no app não é automático quando você implementa um tratamento totalmente personalizado (por exemplo, você contorna a exibição de mensagens no app do Braze retornando ABKDiscardInAppMessage no seu beforeInAppMessageDisplayed:). Se você optar por implementar sua própria interface do usuário usando nossos modelos de mensagem no app, deverá registrar a análise de dados com os seguintes métodos na classe 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()

Além disso, você deve registrar os cliques em botões nas subclasses de ABKInAppMessageImmersive (i.e., Modal e mensagens no app Full):

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

Declarações de métodos

Para saber mais, consulte os seguintes arquivos de cabeçalho:

Amostras de implementação

Veja um AppDelegate.m exemplo de aplicativo de mensagem no app.

New Stuff!