Com pouco ou nenhum esforço de programação, o recurso "Mensagens no app" do Firebase permite criar, configurar e segmentar interações avançadas dos usuários, aproveitando os recursos prontos do Google Analytics para vincular eventos de mensagens a características, atividades e escolhas reais dos usuários. Com algumas integrações adicionais do SDK Firebase In-App Messaging, é possível personalizar ainda mais o comportamento das mensagens no app, respondendo quando os usuários interagem com mensagens, acionando eventos de mensagem fora do framework Analytics e permitindo que os usuários controlem o compartilhamento dos dados pessoais relacionados às interações de mensagens.
Enviar respostas quando os usuários interagirem com mensagens no app
Com as ações, é possível usar suas mensagens no app para direcionar os usuários para um site ou uma tela específica no app.
Seu código pode responder a interações básicas, como cliques e ações de dispensar, a impressões, ou seja, visualizações das suas mensagens, e a exibições de erros registrados e confirmados pelo SDK. Por exemplo, se sua mensagem for do tipo modal de cartão, talvez você queira monitorar e acompanhar em quais URLs desse cartão o usuário clicou.
Implementar um DisplayDelegate para gerenciar as interações do cartão
É possível registrar um "delegate" de exibição de mensagens no app que será chamado
sempre que houver alguma interação com uma mensagem. Para isso, implemente
uma classe por protocolo InAppMessagingDisplayDelegate
e configure como a propriedade "delegate" na instância InAppMessaging
.
Para saber em qual link um usuário clicou em uma mensagem estilo cartão,
defina uma classe que implemente o método messageClicked
pelo
protocolo DisplayDelegate
para acesso ao
link clicado pelo usuário.
Swift
Consulte a referência da propriedade "delegate" de exibição do Swift para ver o conjunto de métodos de callback que podem ser implementados e os parâmetros deles, incluindo 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
Consulte a referência da propriedade "delegate" de exibição do Swift para ver o conjunto de métodos de callback que podem ser implementados e os parâmetros deles, incluindo 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;
Acionar mensagens no app de forma programática
Por padrão, o recurso Firebase In-App Messaging permite acionar mensagens no app com eventos do Google Analytics para Firebase, sem integração adicional. Também é possível acionar eventos manualmente, mas de forma programática, com os acionadores programáticos do SDK do Firebase In-App Messaging.
No editor de campanhas do recurso "Mensagens no app", crie uma nova campanha ou selecione uma atual. Na etapa "Programação" do fluxo de trabalho do editor, anote o ID de um evento de mensagens recém-criado ou atual. Depois, configure seu app para acionar o evento de acordo com o ID.
Swift
…
// somewhere in the app's code
InAppMessaging.inAppMessaging().triggerEvent("exampleTrigger");
Objective-C
…
// somewhere in the app's code
[[FIRInAppMessaging inAppMessaging] triggerEvent:@"exampleTrigger"];
Usar metadados personalizados da campanha
Em suas campanhas, você pode especificar dados personalizados em uma série de pares de chave-valor. Quando os usuários interagem com as mensagens, esses dados ficam disponíveis para você exibir um código promocional, por exemplo.
Swift
class CardActionFiamDelegate : NSObject, InAppMessagingDisplayDelegate {
func messageClicked(_ inAppMessage: InAppMessagingDisplayMessage) {
// Get data bundle from the inapp message
let appData = inAppMessage.appData
// ...
}
}
Objective-C
@implementation CardActionFiamDelegate
- (void)messageClicked:(nonnull FIRInAppMessagingDisplayMessage *)inAppMessage {
appData = inAppMessage.appData
// ...
}
@end
Desativar temporariamente as mensagens no app
Por padrão, o Firebase In-App Messaging processa mensagens sempre que uma condição de acionamento é
atendida, independentemente do estado atual de um app. Se você quiser suprimir
a exibição de mensagens por qualquer motivo, por exemplo, para evitar a interrupção de uma
sequência de telas de processamento de pagamento, use a propriedade
messageDisplaySuppressed
do SDK, conforme mostrado na seção referente ao Objective-C:
[FIRInAppMessaging inAppMessaging].messageDisplaySuppressed = YES;
Definir a propriedade como YES
impede que o Firebase In-App Messaging mostre mensagens, enquanto NO
reativa a exibição delas. O SDK redefine a propriedade como NO
na reinicialização do app. As mensagens suprimidas são ignoradas pelo SDK. As condições de acionamento precisarão ser atendidas novamente enquanto a supressão estiver desativada para que Firebase In-App Messaging possa exibi-las.
Ativar entrega de mensagens de desativação
Por padrão, o Firebase In-App Messaging entrega mensagens automaticamente para todos os usuários do seu app que são segmentados nas campanhas de mensagens. Para entregar essas mensagens, o SDK Firebase In-App Messaging usa os IDs de instalação Firebase para identificar o app de cada usuário. Isso significa que o In-App Messaging precisa enviar dados do cliente, vinculados ao ID de instalação, aos servidores do Firebase. Se você quiser dar aos usuários mais controle sobre os dados enviados, desative a coleta automática de dados. Assim, eles poderão aprovar o compartilhamento.
Para isso, você precisa desativar a inicialização automática para Firebase In-App Messaging e inicializar o serviço manualmente para os usuários que aceitaram:
Desative a inicialização automática com uma nova chave no arquivo
Info.plist
:- Chave:
FirebaseInAppMessagingAutomaticDataCollectionEnabled
- Valor:
NO
- Chave:
Inicialize Firebase In-App Messaging para usuários selecionados manualmente:
// Only needed if FirebaseInAppMessagingAutomaticDataCollectionEnabled is set to NO // in Info.plist [FIRInAppMessaging inAppMessaging].automaticDataCollectionEnabled = YES;
Quando você define
automaticDataCollectionEnabled
comoYES
, o valor persiste entre as reinicializações do app, modificando o valor no seuInfo.plist
. Se você quiser desativar a inicialização novamente, por exemplo, se um usuário não quiser mais participar da coleta, defina a propriedade comoNO
.