Verhalten von Firebase In-App-Messaging-Nachrichten ändern


Mit Firebase In-App-Messaging können Sie mit nur wenig oder gar keinem Programmieraufwand umfangreiche Nutzerinteraktionen erstellen, konfigurieren und steuern. Dabei können Sie die Funktionen von Google Analytics direkt nutzen, um Nachrichtenereignisse an tatsächliche Nutzermerkmale, ‑aktivitäten und ‑entscheidungen zu binden. Mit einer zusätzlichen Firebase In-App Messaging SDK-Integration können Sie das Verhalten von In-App-Mitteilungen noch weiter anpassen. Sie können reagieren, wenn Nutzer mit Mitteilungen interagieren, Mitteilungsereignisse außerhalb des Analytics-Frameworks auslösen und Nutzern die Möglichkeit geben, die Freigabe ihrer personenbezogenen Daten im Zusammenhang mit Mitteilungsinteraktionen zu steuern.

Antworten, wenn Nutzer mit In-App-Mitteilungen interagieren

Mit Aktionen können Sie Nutzer mithilfe Ihrer In-App-Nachrichten zu einer Website oder einem bestimmten Bildschirm in Ihrer App weiterleiten.

Ihr Code kann auf grundlegende Interaktionen (Klicks und Schließen) und auf Impressionen (bestätigte Aufrufe Ihrer Mitteilungen) reagieren und Fehler anzeigen, die vom SDK protokolliert und bestätigt wurden. Wenn Ihre Mitteilung beispielsweise als modales Kartenelement verfasst ist, können Sie nachverfolgen, auf welche der beiden URLs der Nutzer auf der Karte geklickt hat.

DisplayDelegate implementieren, um Karteninteraktionen zu verarbeiten

Sie können einen In-App-Messaging-Anzeigen-Delegierten registrieren, der aufgerufen wird, wenn eine Interaktion mit einer In-App-Nachricht erfolgt. Implementieren Sie dazu eine Klasse gemäß dem InAppMessagingDisplayDelegate-Protokoll und legen Sie sie als delegierte Eigenschaft für die InAppMessaging-Instanz fest.

Angenommen, Sie möchten erfassen, auf welchen Link ein Nutzer in einer Karte geklickt hat, definieren Sie eine Klasse, die die messageClicked-Methode gemäß dem DisplayDelegate-Protokoll implementiert. So erhalten Sie Zugriff auf den Link, auf den der Nutzer geklickt hat.

Swift

Hinweis: Dieses Produkt ist nicht für macOS-, Mac Catalyst-, App Clip- oder watchOS-Ziele verfügbar.

In der Swift-Referenz für den Display-Delegierten finden Sie eine Liste der implementierbaren Callback-Methoden und ihrer Parameter, einschließlich 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

Hinweis: Dieses Produkt ist nicht für macOS-, Mac Catalyst-, App Clip- oder watchOS-Ziele verfügbar.

In der Referenz für den Objective-C-Display-Delegierten finden Sie eine Liste der implementierbaren Callback-Methoden und ihrer Parameter, einschließlich 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;

In-App-Nachrichten programmatisch auslösen

Mit Firebase In-App Messaging können Sie standardmäßig In-App-Mitteilungen mit Google Analytics for Firebase-Ereignissen auslösen, ohne dass eine zusätzliche Integration erforderlich ist. Mit den programmatischen Triggern des Firebase In-App Messaging SDK können Sie Ereignisse auch manuell auslösen.

Erstellen Sie im Editor für In-App-Messaging-Kampagnen eine neue Kampagne oder wählen Sie eine vorhandene Kampagne aus. Notieren Sie sich im Planungsschritt des Composer-Workflows die Ereignis-ID eines neu erstellten oder vorhandenen Messaging-Ereignisses. Instrumentieren Sie dann Ihre App so, dass das Ereignis anhand seiner ID ausgelöst wird.

Swift

Hinweis: Dieses Produkt ist nicht für macOS-, Mac Catalyst-, App Clip- oder watchOS-Ziele verfügbar.

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

Objective-C

Hinweis: Dieses Produkt ist nicht für macOS-, Mac Catalyst-, App Clip- oder watchOS-Ziele verfügbar.

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

Benutzerdefinierte Kampagnenmetadaten verwenden

In Ihren Kampagnen können Sie benutzerdefinierte Daten in einer Reihe von Schlüssel/Wert-Paaren angeben. Wenn Nutzer mit Nachrichten interagieren, können Sie diese Daten beispielsweise verwenden, um einen Gutscheincode anzuzeigen.

Swift

Hinweis: Dieses Produkt ist nicht für macOS-, Mac Catalyst-, App Clip- oder watchOS-Ziele verfügbar.
class CardActionFiamDelegate : NSObject, InAppMessagingDisplayDelegate {

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

Objective-C

Hinweis:Dieses Produkt ist nicht für macOS-, Mac-Catayst-, App Clip- oder watchOS-Ziele verfügbar.
@implementation CardActionFiamDelegate

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

@end

In-App-Nachrichten vorübergehend deaktivieren

Standardmäßig rendert Firebase In-App Messaging Nachrichten, wenn eine Trigger-Bedingung erfüllt ist, unabhängig vom aktuellen Status der Anwendung. Wenn Sie die Anzeige von Nachrichten aus irgendeinem Grund unterdrücken möchten, z. B. um eine Abfolge von Bildschirmen zur Zahlungsabwicklung nicht zu unterbrechen, verwenden Sie das Attribut messageDisplaySuppressed des SDKs, wie hier in Objective-C dargestellt:

  [FIRInAppMessaging inAppMessaging].messageDisplaySuppressed = YES;

Wenn Sie die Property auf YES festlegen, werden in Firebase In-App Messaging keine Nachrichten angezeigt. Mit NO wird die Nachrichtenanzeige wieder aktiviert. Das SDK setzt das Attribut beim Neustart der App auf NO zurück. Unterdrückte Nachrichten werden vom SDK ignoriert. Die Triggerbedingungen müssen wieder erfüllt sein, während die Unterdrückung deaktiviert ist, damit Firebase In-App Messaging sie anzeigen kann.

Opt-out-Nachrichtenzustellung aktivieren

Standardmäßig werden mit Firebase In-App Messaging automatisch Nachrichten an alle App-Nutzer gesendet, auf die Sie in Messaging-Kampagnen ausgerichtet sind. Zum Senden dieser Nachrichten verwendet das Firebase In-App Messaging SDK Firebase-Installations-IDs, um die App jedes Nutzers zu identifizieren. Das bedeutet, dass In-App Messaging mit der Installations-ID verknüpfte Kundendaten an Firebase-Server senden muss. Wenn Sie Nutzern mehr Kontrolle über die gesendeten Daten geben möchten, deaktivieren Sie die automatische Datenerfassung und geben Sie ihnen die Möglichkeit, die Datenfreigabe zu genehmigen.

Dazu müssen Sie die automatische Initialisierung für Firebase In-App Messaging deaktivieren und den Dienst für Nutzer, die die Funktion aktiviert haben, manuell initialisieren:

  1. Deaktivieren Sie die automatische Initialisierung mit einem neuen Schlüssel in der Datei Info.plist:

    • Schlüssel: FirebaseInAppMessagingAutomaticDataCollectionEnabled
    • Wert: NO
  2. Initialisieren Sie Firebase In-App Messaging manuell für ausgewählte Nutzer:

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

    Wenn Sie automaticDataCollectionEnabled auf YES festlegen, bleibt der Wert bei App-Neustarts erhalten und überschreibt den Wert in Info.plist. Wenn Sie die Initialisierung wieder deaktivieren möchten, z. B. wenn ein Nutzer später die Erfassung deaktiviert, legen Sie das Attribut auf NO fest.