
AppboyKit (também conhecido como o SDK Objective-C) não é mais suportado e foi substituído pelo Swift SDK. Não receberá mais novos recursos, correções de bugs, atualizações de segurança ou suporte técnico—no entanto, o envio de mensagens e a análise de dados continuarão a funcionar normalmente. Para saber mais, veja Apresentando o Novo SDK Braze Swift.
Envio de mensagens no app
Tipos de gatilho
Nosso produto de In-App Messages permite disparar a exibição de mensagens no app como resultado de diversos tipos de evento: Any Purchase, Specific Purchase, Session Start, Custom Event e Push Click. Além disso, os gatilhos Specific Purchase e Custom Event contam com filtros robustos de propriedades.

As mensagens no app disparadas só funcionam com eventos personalizados registrados por meio do SDK da Braze. As mensagens no app não podem ser disparadas pela API ou por eventos da API (como eventos de compra). Se você está trabalhando com iOS, acesse nosso artigo sobre rastreamento de eventos personalizados para saber mais.
Semântica de entrega
Todas as mensagens no app para as quais um usuário é elegível são entregues ao dispositivo do usuário no início da sessão. Quando duas mensagens no app são disparadas por um mesmo evento, a mensagem no app com maior prioridade será exibida. Para saber mais sobre a semântica de início de sessão do SDK, leia sobre nosso ciclo de vida da sessão. Ao serem entregues, o SDK fará o pré-carregamento dos ativos para que estejam disponíveis imediatamente no momento do disparo, minimizando a latência de exibição.
Quando um evento-gatilho tem mais de uma mensagem no app elegível associada a ele, apenas a mensagem no app com a maior prioridade será entregue.
Pode haver alguma latência para mensagens no app que são exibidas imediatamente na entrega (início de sessão, clique de push) devido aos ativos não terem sido pré-carregados.
Intervalo mínimo de tempo entre disparos
Por padrão, limitamos a frequência de In-App Messages para uma vez a cada 30 segundos, a fim de proporcionar uma experiência de qualidade ao usuário.
Você pode substituir esse valor por meio do ABKMinimumTriggerTimeIntervalKey dentro do parâmetro appboyOptions passado para startWithApiKey:inApplication:withLaunchOptions:withAppboyOptions:. Defina o ABKMinimumTriggerTimeIntervalKey com o valor inteiro desejado como o tempo mínimo em segundos entre In-App Messages:
// Sets the minimum trigger time interval to 5 seconds
[Appboy startWithApiKey:@"YOUR-API-KEY"
inApplication:application
withLaunchOptions:options
withAppboyOptions:@{ ABKMinimumTriggerTimeIntervalKey : @(5) }];
Appboy.start(withApiKey: "YOUR-API-KEY", in:application, withLaunchOptions:launchOptions, withAppboyOptions:[ABKMinimumTriggerTimeIntervalKey : 5])
Falha ao encontrar um gatilho correspondente
Quando a Braze não encontra um gatilho correspondente para um determinado evento, ela chama o método noMatchingTriggerForEvent:name: do ABKInAppMessageControllerDelegate. Implemente esse método na sua classe que adota o protocolo de delegado para lidar com esse cenário.
Entrega local de mensagens no app
A pilha de mensagens no app
Exibindo mensagens no app
Quando um usuário é elegível para receber uma mensagem no app, o ABKInAppMessageController receberá a mensagem no app mais recente da pilha de mensagens no app. A pilha mantém apenas mensagens no app armazenadas em memória e é limpa entre inicializações do app a partir do modo suspenso.

Não exiba mensagens no app quando o teclado estiver visível na tela, pois a renderização é indefinida nessa circunstância.
Adicionando mensagens no app à pilha
Os usuários são elegíveis para receber uma mensagem no app nas seguintes situações:
- Um evento-gatilho de mensagem no app é disparado
- Evento de início de sessão
- O app é aberto a partir de uma notificação por push
Mensagens no app disparadas são colocadas na pilha quando seu evento-gatilho é disparado. Se várias mensagens no app estiverem na pilha esperando para serem exibidas, a Braze exibirá primeiro a mensagem no app recebida mais recentemente (último a entrar, primeiro a sair).
Retornando mensagens no app à pilha
Uma mensagem no app disparada pode ser retornada à pilha nas seguintes situações:
- A mensagem no app é disparada quando o app está em segundo plano.
- Outra mensagem no app está visível no momento.
- O método delegado de UI descontinuado
beforeInAppMessageDisplayed:withKeyboardIsUp:não foi implementado e o teclado está sendo exibido no momento. - O método delegado
beforeInAppMessageDisplayed:ou o método delegado de UI descontinuadobeforeInAppMessageDisplayed:withKeyboardIsUp:retornouABKDisplayInAppMessageLater.
Descartando mensagens no app
Uma mensagem no app disparada será descartada nas seguintes situações:
- O método delegado
beforeInAppMessageDisplayed:ou o método delegado de UI descontinuadobeforeInAppMessageDisplayed:withKeyboardIsUp:retornouABKDiscardInAppMessage. - O ativo (imagem ou arquivo ZIP) da mensagem no app falhou ao ser baixado.
- A mensagem no app está pronta para ser exibida, mas excedeu o tempo limite de duração.
- A orientação do dispositivo não corresponde à orientação da mensagem no app disparada.
- A mensagem no app é uma mensagem no app em tela cheia, mas não possui imagem.
- A mensagem no app é uma mensagem no app modal somente com imagem, mas não possui imagem.
Enfileirar manualmente a exibição de mensagens no app
Se você deseja exibir uma mensagem no app em outros momentos dentro do seu app, pode exibir manualmente a mensagem no app do topo da pilha chamando o seguinte método:
[[Appboy sharedInstance].inAppMessageController displayNextInAppMessage];
Appboy.sharedInstance()!.inAppMessageController.displayNextInAppMessage()
Criação e exibição de mensagens no app em tempo real
Mensagens no app também podem ser criadas localmente dentro do app e exibidas pela Braze. Isso é particularmente útil para exibir mensagens que você deseja disparar dentro do app em tempo real. A Braze não oferece suporte a análise de dados em mensagens no app criadas localmente.
ABKInAppMessageSlideup *customInAppMessage = [[ABKInAppMessageSlideup alloc] init];
customInAppMessage.message = @"YOUR_CUSTOM_SLIDEUP_MESSAGE";
customInAppMessage.duration = 2.5;
customInAppMessage.extras = @{@"key" : @"value"};
[[Appboy sharedInstance].inAppMessageController addInAppMessage:customInAppMessage];
let customInAppMessage = ABKInAppMessageSlideup.init()
customInAppMessage.message = "YOUR_CUSTOM_SLIDEUP_MESSAGE"
customInAppMessage.duration = 2.5
customInAppMessage.extras = ["key": "value"]
Appboy.sharedInstance()!.inAppMessageController.add(customInAppMessage)