Modifica del comportamento dei messaggi di messaggistica in-app Firebase


Con uno sforzo di programmazione minimo o nullo, la messaggistica in-app Firebase ti consente di creare, configurare e scegliere come target interazioni avanzate degli utenti, sfruttando le funzionalità pronte all'uso di Google Analytics per collegare gli eventi di messaggistica a caratteristiche, attività e scelte effettive degli utenti. Con un'ulteriore integrazione dell'SDK Firebase In-App Messaging, puoi personalizzare ancora di più il comportamento dei messaggi in-app, rispondendo quando gli utenti interagiscono con i messaggi, attivando eventi di messaggi al di fuori del framework Analytics e consentendo agli utenti di controllare la condivisione dei propri dati personali relativi alle interazioni con i messaggi.

Rispondere quando gli utenti interagiscono con i messaggi in-app

Con le azioni, puoi utilizzare i messaggi in-app per indirizzare gli utenti a un sito web o a una schermata specifica della tua app.

Il codice può rispondere a interazioni di base (clic e chiusure), alle impressioni (visualizzazioni verificate dei tuoi messaggi) e mostrare gli errori registrati e confermati dall'SDK. Ad esempio, quando il messaggio è composto come finestra modale della scheda, potresti voler monitorare e seguire su quale dei due URL l'utente ha fatto clic nella scheda.

Implementa un DisplayDelegate per gestire le interazioni con la scheda

Puoi registrare un delegato di visualizzazione della messaggistica in-app che verrà chiamato ogni volta che si verifica un'interazione con un messaggio in-app. Per farlo, implementa una classe per il protocollo InAppMessagingDisplayDelegate e impostala come proprietà delega nell'istanza InAppMessaging.

Supponendo di nuovo che tu voglia monitorare il link su cui un utente ha fatto clic in un messaggio in stile scheda, definisci una classe che implementi il metodo messageClicked in base al protocollo DisplayDelegate, in modo da avere accesso al link su cui ha fatto clic l'utente.

Swift

Nota: questo prodotto non è disponibile sui target macOS, Mac Catalyst, App Clip o watchOS.

Fai riferimento al riferimento al delegato di visualizzazione di Swift per l'insieme di metodi di callback che possono essere implementati e i relativi parametri, tra cui 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

Nota: questo prodotto non è disponibile sulle destinazioni macOS, Mac Catalyst, App Clip o watchOS.

Fai riferimento al riferimento del delegato di visualizzazione in Objective-C per l'insieme di metodi di callback che possono essere implementati e i relativi parametri, tra cui 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;

Attivare i messaggi in-app in modo programmatico

Per impostazione predefinita, Firebase In-App Messaging ti consente di attivare i messaggi in-app con gli eventi di Google Analytics per Firebase, senza alcuna integrazione aggiuntiva. Puoi anche attivare manualmente gli eventi in modo programmatico con gli attivatori programmatici dell'SDK Firebase In-App Messaging.

Nel compositore di campagne di messaggistica in-app, crea una nuova campagna o selezionane una esistente e, nel passaggio di pianificazione del flusso di lavoro di Composer, annotare l'ID evento di un evento di messaggistica appena creato o esistente. Dopo averlo annotato, instrumenta l'app in modo che attivi l'evento in base al suo ID.

Swift

Nota: questo prodotto non è disponibile sui target macOS, Mac Catalyst, App Clip o watchOS.

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

Objective-C

Nota: questo prodotto non è disponibile sulle destinazioni macOS, Mac Catalyst, App Clip o watchOS.

// somewhere in the app's code
[[FIRInAppMessaging inAppMessaging] triggerEvent:@"exampleTrigger"];

Utilizzare i metadati personalizzati della campagna

Nelle campagne puoi specificare dati personalizzati in una serie di coppie chiave/valore. Quando gli utenti interagiscono con i messaggi, puoi utilizzare questi dati, ad esempio per mostrare un codice promozionale.

Swift

Nota: questo prodotto non è disponibile sui target macOS, Mac Catalyst, App Clip o watchOS.
class CardActionFiamDelegate : NSObject, InAppMessagingDisplayDelegate {

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

Objective-C

Nota: questo prodotto non è disponibile sui target macOS, Mac Catalyst, App Clip o watchOS.
@implementation CardActionFiamDelegate

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

@end

Disattivare temporaneamente i messaggi in-app

Per impostazione predefinita, Firebase In-App Messaging esegue il rendering dei messaggi ogni volta che viene soddisfatta una condizione di attivazione, indipendentemente dallo stato corrente di un'app. Se vuoi eliminare la visualizzazione del messaggio per qualsiasi motivo, ad esempio per evitare di interrompere una sequenza di schermate di elaborazione dei pagamenti, utilizza la proprietà messageDisplaySuppressed dell'SDK come illustrato di seguito in Objective-C:

  [FIRInAppMessaging inAppMessaging].messageDisplaySuppressed = YES;

Se imposti la proprietà su YES, Firebase In-App Messaging non mostra i messaggi, mentre NO riattiva la visualizzazione dei messaggi. L'SDK reimposta la proprietà su NO al riavvio dell'app. I messaggi soppressi vengono ignorati dall'SDK. Le relative condizioni di attivazione devono essere soddisfatte di nuovo mentre la soppressione è disattivata, prima che Firebase In-App Messaging possa visualizzarle.

Attivare la consegna dei messaggi con disattivazione

Per impostazione predefinita, Firebase In-App Messaging invia automaticamente i messaggi a tutti gli utenti dell'app che scegli come target nelle campagne di messaggistica. Per inviare questi messaggi, l'SDK Firebase In-App Messaging utilizza gli ID installazione Firebase per identificare l'app di ogni utente. Ciò significa che In-App Messaging deve inviare i dati del client, collegati all'ID installazione, ai server Firebase. Se vuoi offrire agli utenti un maggiore controllo sui dati che inviano, disattiva la raccolta automatica dei dati e offri loro la possibilità di approvare la condivisione dei dati.

Per farlo, devi disattivare l'inizializzazione automatica per Firebase In-App Messaging e inizializzare manualmente il servizio per gli utenti che hanno attivato la funzionalità:

  1. Disattiva l'inizializzazione automatica con una nuova chiave nel file Info.plist:

    • Chiave: FirebaseInAppMessagingAutomaticDataCollectionEnabled
    • Valore: NO
  2. Inizializza manualmente Firebase In-App Messaging per gli utenti selezionati:

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

    Una volta impostato automaticDataCollectionEnabled su YES, il valore rimane invariato anche dopo i riavvii dell'app e sostituisce il valore in Info.plist. Se vuoi nuovamente disattivare l'inizializzazione, ad esempio se un utente disattiva la raccolta in un secondo momento, imposta la proprietà su NO.