Modifica del comportamento dei messaggi di messaggistica in-app Firebase


Con uno sforzo di codifica minimo o nullo, Firebase In-App Messaging ti consente di creare, configurare e indirizzare interazioni utente avanzate, sfruttando le funzionalità di Google Analytics predefinite per collegare gli eventi di messaggistica alle caratteristiche, alle attività e alle scelte effettive degli utenti. Con un'integrazione aggiuntiva dell'SDK Firebase In-App Messaging, puoi personalizzare ulteriormente il comportamento dei messaggi in-app, rispondere quando gli utenti interagiscono con i messaggi, attivare eventi di messaggi al di fuori del framework Analytics e consentire agli utenti di controllare la condivisione dei propri dati personali relativi alle interazioni di messaggistica.

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 alle interazioni di base (clic e chiusure), alle impressioni (visualizzazioni verificate dei messaggi) e agli errori di visualizzazione registrati e confermati dall'SDK. Ad esempio, se il messaggio è composto come una scheda modale, potresti voler monitorare e dare seguito a quale dei due URL l'utente ha fatto clic sulla scheda.

Implementare un DisplayDelegate per gestire le interazioni con le schede

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à delegata 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 per il protocollo DisplayDelegate, in modo da fornirti l'accesso al link su cui l'utente ha fatto clic.

Swift

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

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

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

Consulta il riferimento al delegato di visualizzazione Objective-C per l'insieme di metodi di callback che possono essere implementati e i relativi parametri, incluso 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 a livello di programmazione

Firebase In-App Messaging per impostazione predefinita ti consente di attivare i messaggi in-app con gli eventi di Google Analytics per Firebase, senza integrazioni aggiuntive. Puoi anche attivare manualmente gli eventi a livello di programmazione con i trigger programmatici dell'SDK Firebase In-App Messaging.

Nel compositore di campagne di messaggistica in-app, crea una nuova campagna o seleziona una campagna 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, strumenta l'app per attivare l'evento in base al suo ID.

Swift

Nota:questo prodotto non è disponibile per i 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 per i target 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, questi dati sono a tua disposizione, ad esempio per mostrare un codice promozionale.

Swift

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

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

Objective-C

Nota:questo prodotto non è disponibile per i target macOS, Mac Catalyst, App Clip o watchOS.
@implementation ExampleCardActionDelegate

- (void)messageClicked:(nonnull FIRInAppMessagingDisplayMessage *)inAppMessage {
    NSDictionary *appData = inAppMessage.appData;
    NSLog(@"Message data: %@", 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 attuale di un'app. Se vuoi sopprimere la visualizzazione dei messaggi 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 qui in Objective-C:

  [FIRInAppMessaging inAppMessaging].messageDisplaySuppressed = YES;

Se imposti la proprietà su YES, Firebase In-App Messaging non visualizza 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 visualizzarli.

Attivare la pubblicazione dei messaggi di disattivazione

Per impostazione predefinita, Firebase In-App Messaging pubblica automaticamente i messaggi per tutti gli utenti dell'app a cui ti rivolgi nelle campagne di messaggistica. Per pubblicare questi messaggi, l'Firebase In-App Messaging SDK utilizza Firebase ID di installazione per identificare l'app di ogni utente. Ciò significa che In-App Messaging deve inviare i dati dei clienti, collegati all' ID di installazione, ai server Firebase. Se vuoi dare agli utenti un maggiore controllo sui dati che inviano, disattiva la raccolta automatica dei dati e dai 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 ricezione:

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

    • Chiave: FirebaseInAppMessagingAutomaticDataCollectionEnabled
    • Valore: NO
  2. Inizializza Firebase In-App Messaging manualmente 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 viene mantenuto durante i riavvii dell'app, sostituendo il valore in Info.plist. Se vuoi disattivare di nuovo l'inizializzazione, ad esempio se un utente disattiva la raccolta in un secondo momento, imposta la proprietà su NO.