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 utente, sfruttando le funzionalità di Google Analytics pronte all'uso 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.

Rispondi quando gli utenti interagiscono con messaggi in-app

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

Il codice può rispondere alle interazioni di base (clic e chiusure) impressioni (visualizzazioni verificate dei messaggi) e di mostrare gli errori registrati e confermati dall'SDK. Ad esempio, quando il messaggio è composto come una scheda modale, potresti voler monitorare e analizzare in quali due URL l'utente ha fatto clic sulla scheda.

Implementare un DisplayDelegate per gestire le interazioni con le schede

Puoi registrare un delegato per la visualizzazione dei messaggi in-app che verrà chiamato ogni volta che si verifica un'interazione con un messaggio in-app. A questo scopo, implementa una classe secondo il protocollo InAppMessagingDisplayDelegate e impostala come delega sull'istanza InAppMessaging.

Supponendo di nuovo che tu voglia monitorare il link su cui un utente ha fatto clic su 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 sulle destinazioni macOS, Mac Catalyst, App Clip o watchOS.

Fai riferimento a Swift display delegati Reference 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.

Consulta il riferimento display delegato di Objective-C per conoscere 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 Eventi di Google Analytics per Firebase, senza ulteriori integrazioni. Puoi Inoltre, puoi attivare manualmente gli eventi in modo programmatico con la classe Firebase In-App Messaging dell'SDK trigger programmatici.

Nel compositore delle campagne di messaggistica in-app, crea una nuova campagna o selezionane una esistente e, nel passaggio Pianificazione del flusso di lavoro del compositore, prendi nota dell'ID evento di un evento di messaggistica appena creato o esistente. Una volta annotato, lo strumento dell'app per attivare l'evento in base al suo ID.

Swift

Nota: questo prodotto non è disponibile sulle destinazioni 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 sulle destinazioni 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 sulle destinazioni macOS, Mac Catalyst, App Clip o watchOS.
@implementation CardActionFiamDelegate

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

@end

Disattiva 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 visualizzato per qualsiasi motivo, ad esempio per evitare l'interruzione di sequenza di elaborazione dei pagamenti, utilizza la classe Proprietà messageDisplaySuppressed come illustrato qui 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 eliminati vengono ignorati dall'SDK. Il suo attivatore le condizioni devono essere soddisfatte di nuovo mentre l'eliminazione è disattivata, prima che Firebase In-App Messaging possa di mostrarli.

Attiva la consegna dei messaggi per la disattivazione

Per impostazione predefinita, Firebase In-App Messaging consegna automaticamente i messaggi a tutti gli utenti dell'app che scegli come target nelle campagne di messaggistica. Per consegnare questi messaggi, l'SDK Firebase In-App Messaging utilizza Firebase ID installazione per identificare l'app di ogni utente. Ciò significa che In-App Messaging deve inviare i dati del cliente, collegati 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;
    
    

    Dopo aver impostato automaticDataCollectionEnabled su YES, il valore persiste tramite i riavvii dell'app, sostituendo il valore in Info.plist. Se vuoi per disabilitare nuovamente l'inizializzazione, ad esempio se un utente disattiva raccolta in un secondo momento, imposta la proprietà su NO.