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

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

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

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

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;

Acionar mensagens no app de forma programática

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. Também é possível acionar eventos manualmente, mas de forma programática, com os acionadores programáticos do SDK do recurso Mensagens no app do Firebase.

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

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 CardActionFiamDelegate : 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 CardActionFiamDelegate

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

@end

Desativar temporariamente as mensagens no app

Por padrão, o recurso "Mensagens no app" do Firebase 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 recurso Mensagens no app do Firebase exiba mensagens, enquanto NO reativa a exibição delas. O SDK redefine a propriedade como NO na reinicialização do aplicativo. 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 o recurso possa exibi-las.

Ativar entrega de mensagens de desativação

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. Para entregar essas mensagens, o SDK do recurso "Mensagens no app" usa os IDs de instalação do Firebase para identificar o app de cada usuário. Isso significa que as Mensagens no app precisam 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 do recurso Mensagens no app do Firebase e inicializar o serviço manualmente para os usuários que aceitaram:

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

    • Chave: FirebaseInAppMessagingAutomaticDataCollectionEnabled
    • Valor: NO
  2. Inicialize o recurso "Mensagens no app" do Firebase para usuários selecionados manualmente:

    // Only needed if FirebaseInAppMessagingAutomaticDataCollectionEnabled is set to NO
    // in Info.plist
    [FIRInAppMessaging inAppMessaging].automaticDataCollectionEnabled = YES;
    
    

    Quando você define automaticDataCollectionEnabled como YES, o valor persiste entre as reinicializações do app, modificando o valor no 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.