Modificar o comportamento de mensagens do recurso Mensagens no app do Firebase


Com uma integração do SDK das Mensagens no app do Firebase, é possível personalizar ainda mais o comportamento de mensagens no aplicativo para enviar respostas quando os usuários interagirem com as mensagens, acionar eventos de mensagens fora dos frameworks do Analytics e permitir o controle pelos usuários do compartilhamento dos dados pessoais relacionados às interações.Google Analytics Com alguma integração adicional do SDK Firebase In-App Messaging, você pode personalizar ainda mais o comportamento das mensagens no app, respondendo quando os usuários interagem com as mensagens, acionando eventos de mensagem fora da estrutura Analytics e permitindo que os usuários controlem o compartilhamento de dados pessoais relacionados às interações de mensagens.

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.

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 listener de eventos para interações do cartão

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

Observação: este produto não está disponível para destinos macOS, Mac Catalyst, App Clip ou watchOS.

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: InAppMessagingDismissType) {
        // ...
    }

    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

Observação: este produto não está disponível para destinos macOS, Mac Catalyst, App Clip ou watchOS.

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;

Por padrão, o recurso Mensagens no app do Firebase permite acionar mensagens no app com eventos do Google Analytics para Firebase, sem integração adicional.

Firebase In-App Messaging por padrão permite acionar mensagens no app com eventos do Google Analytics para Firebase, sem integração adicional. Você também pode acionar eventos manualmente de forma programática com os acionadores programáticos do SDK Firebase In-App Messaging.

No compositor de campanha de Mensagens no App, crie uma nova campanha ou selecione uma campanha existente e, na etapa de Programação do fluxo de trabalho do compositor, anote o ID do evento de um evento de mensagens recém-criado ou existente. Depois, configure seu app para acionar o evento de acordo com o ID.

Swift

Observação: este produto não está disponível para destinos macOS, Mac Catalyst, App Clip ou watchOS.

// somewhere in the app's code
InAppMessaging.inAppMessaging().triggerEvent("exampleTrigger");

Objective-C

Observação: este produto não está disponível para destinos macOS, Mac Catalyst, App Clip ou watchOS.

// 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

Observação: este produto não está disponível para destinos macOS, Mac Catalyst, App Clip ou watchOS.
class CardActionDelegate : NSObject, InAppMessagingDisplayDelegate {

    func messageClicked(_ inAppMessage: InAppMessagingDisplayMessage) {
	// Get data bundle from the inapp message
	let appData = inAppMessage.appData
	// ...
    }
}

Objective-C

Observação: este produto não está disponível para destinos macOS, Mac Catalyst, App Clip ou watchOS.
@implementation ExampleCardActionDelegate

- (void)messageClicked:(nonnull FIRInAppMessagingDisplayMessage *)inAppMessage {
    NSDictionary *appData = inAppMessage.appData;
    NSLog(@"Message data: %@", appData);
	// ...
}

@end

Por padrão, o recurso Mensagens no app do Firebase processa mensagens sempre que uma condição de acionamento é satisfeita, independentemente do estado atual de um aplicativo.

Por padrão, Firebase In-App Messaging renderiza mensagens sempre que uma condição de acionamento é satisfeita, independentemente do estado atual de um app. Definir a propriedade como `YES` impede que o recurso do Firebase de mensagens no app exiba mensagens, enquanto `NO` reativa a exibição delas.messageDisplaySuppressed

  [FIRInAppMessaging inAppMessaging].messageDisplaySuppressed = YES;

A definição da propriedade como YES impede que Firebase In-App Messaging exiba mensagens, enquanto NO reativa a exibição de mensagens. O SDK redefine a propriedade para NO ao reiniciar o aplicativo. As condições de acionamento precisarão ser atendidas novamente enquanto a supressão estiver desativada para que o recurso possa exibi-las. As condições de acionamento precisam ser atendidas novamente enquanto a supressão estiver desativada, antes que Firebase In-App Messaging possa exibi-las.

Por padrão, o Mensagens no app do Firebase entrega mensagens automaticamente para todos os usuários do seu aplicativo que são segmentados nas campanhas.

Por padrão, Firebase In-App Messaging entrega mensagens automaticamente para todos os usuários do app que você segmenta em campanhas de mensagens. Para entregar essas mensagens, o SDK Firebase In-App Messaging usa IDs de instalação Firebase para identificar o app de cada usuário. Isso significa que In-App Messaging precisa enviar dados do cliente, vinculados ao ID de instalação, para os servidores do Firebase. Para isso, você precisa desativar a inicialização automática do recurso Mensagens no app do Firebase e inicializar o serviço manualmente para os usuários que aceitaram:

Para fazer isso, você precisa desativar a inicialização automática para Firebase In-App Messaging, e inicializar o serviço manualmente para usuários que optaram por participar:

  1. Desative a inicialização automática com uma nova chave no arquivo Info.plist:

    • Chave: FirebaseInAppMessagingAutomaticDataCollectionEnabled
    • Valor: NO
  2. 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;
    
    

    Depois de definir automaticDataCollectionEnabled como YES, o valor persiste durante as reinicializações do app, substituindo o valor em seu Info.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 como NO.