Modificar o comportamento das mensagens do Firebase In-App Messaging

Com pouco ou nenhum esforço de codificação, o Firebase In-App Messaging permite criar, configurar e direcionar interações avançadas do usuário, aproveitando os recursos prontos do Google Analytics para vincular eventos de mensagens às características, atividades e escolhas reais do usuário. Com alguma integração adicional do SDK de mensagens no aplicativo do Firebase, você pode personalizar ainda mais o comportamento das mensagens no aplicativo, respondendo quando os usuários interagem com as mensagens, acionando eventos de mensagens fora da estrutura do Analytics e permitindo que os usuários controlem o compartilhamento de seus dados pessoais relacionados. para interações de mensagens.

Responder quando os usuários interagem com mensagens no aplicativo

Com ações, você pode usar mensagens no aplicativo para direcionar os usuários a um site ou a uma tela específica do seu aplicativo.

Seu código pode responder a interações básicas (cliques e dispensas), a impressões (visualizações verificadas de suas mensagens) e exibir erros registrados e confirmados pelo SDK. Por exemplo, quando sua mensagem é composta como um modal de Cartão, você pode querer rastrear e acompanhar em qual dos dois URLs o usuário clicou no Cartão.

Implemente um DisplayDelegate para lidar com interações de cartão

Você pode registrar um delegado de exibição de mensagens no aplicativo que será chamado sempre que houver qualquer interação com uma mensagem no aplicativo. Para fazer isso, implemente uma classe de acordo com o protocolo InAppMessagingDisplayDelegate e defina-a como a propriedade delegada na instância InAppMessaging .

Supondo novamente que você deseja rastrear em qual link um usuário clicou em uma mensagem estilo cartão, defina uma classe que implemente o método messageClicked de acordo com o protocolo DisplayDelegate , fornecendo assim acesso ao link clicado pelo usuário.

Rápido

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

Consulte a referência de delegado de exibição do Swift para o conjunto de métodos de retorno de chamada que podem ser implementados e seus parâmetros, 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;

Objetivo-C

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

Consulte a referência de delegado de exibição do Objective-C para o conjunto de métodos de retorno de chamada que podem ser implementados e seus parâmetros, 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;

Acione mensagens no aplicativo programaticamente

Por padrão, o Firebase In-App Messaging permite acionar mensagens no aplicativo 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 do Firebase In-App Messaging.

No compositor de campanha de mensagens no aplicativo, crie uma nova campanha ou selecione uma campanha existente e, na etapa Agendamento do fluxo de trabalho do compositor, anote o ID do evento de um evento de mensagens existente ou recém-criado. Depois de anotado, instrumente seu aplicativo para acionar o evento por seu ID.

Rápido

Observação: este produto não está disponível em destinos macOS, Mac Catalyst, App Clip ou watchOS.
…
// somewhere in the app's code
InAppMessaging.inAppMessaging().triggerEvent("exampleTrigger");

Objetivo-C

Observação: este produto não está disponível em destinos macOS, Mac Catalyst, App Clip ou watchOS.
…
// somewhere in the app's code
[[FIRInAppMessaging inAppMessaging] triggerEvent:@"exampleTrigger"];

Use metadados personalizados de campanha

Em suas campanhas, você pode especificar dados personalizados em uma série de pares chave/valor. Quando os usuários interagem com as mensagens, esses dados ficam disponíveis para você, por exemplo, exibir um código promocional.

Rápido

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

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

Objetivo-C

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

- (void)messageClicked:(nonnull FIRInAppMessagingDisplayMessage *)inAppMessage {
	appData = inAppMessage.appData
	// ...
}

@end

Desative temporariamente as mensagens no aplicativo

Por padrão, o Firebase In-App Messaging renderiza mensagens sempre que uma condição de acionamento é atendida, independentemente do estado atual do aplicativo. 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 pagamentos, use a propriedade messageDisplaySuppressed do SDK, conforme ilustrado aqui em Objective-C:

  [FIRInAppMessaging inAppMessaging].messageDisplaySuppressed = YES;

Definir a propriedade como YES evita que o Firebase In-App Messaging exiba mensagens, enquanto NO reativa a exibição de mensagens. O SDK redefine a propriedade para NO na reinicialização do aplicativo. As mensagens suprimidas são ignoradas pelo SDK. Suas condições de acionamento devem ser atendidas novamente enquanto a supressão estiver desativada, antes que o Firebase In-App Messaging possa exibi-las.

Ativar entrega de mensagem de cancelamento

Por padrão, o Firebase In-App Messaging entrega mensagens automaticamente a todos os usuários do aplicativo que você segmenta em campanhas de mensagens. Para entregar essas mensagens, o SDK de mensagens no aplicativo do Firebase usa IDs de instalação do Firebase para identificar o aplicativo de cada usuário. Isso significa que o In-App Messaging deve enviar dados do cliente, vinculados ao ID de instalação, aos servidores Firebase. Se quiser dar aos usuários mais controle sobre os dados que enviam, desative a coleta automática de dados e dê a eles a oportunidade de aprovar o compartilhamento de dados.

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

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

    • Chave: FirebaseInAppMessagingAutomaticDataCollectionEnabled
    • Valor: NO
  2. Inicialize manualmente o Firebase In-App Messaging para usuários selecionados:

    // 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 aplicativo, substituindo o valor em seu Info.plist . Se desejar desabilitar a inicialização novamente, por exemplo, se um usuário optar por sair da coleta posteriormente, defina a propriedade como NO .