Modyfikowanie działania wiadomości Firebase w aplikacji


Firebase In-App Messaging umożliwia tworzenie, konfigurowanie i kierowanie bogatych interakcji z użytkownikami przy niewielkim lub zerowym nakładzie pracy związanym z kodowaniem. Wykorzystuje on możliwości Google Analytics, aby powiązać zdarzenia związane z wiadomościami z rzeczywistymi cechami, aktywnością i wyborami użytkowników. Dzięki dodatkowej Firebase In-App Messagingintegracji pakietu SDK możesz jeszcze bardziej dostosować działanie wiadomości w aplikacji, reagując na interakcje użytkowników z wiadomościami, wywołując zdarzenia związane z wiadomościami poza Analytics platformą i umożliwiając użytkownikom kontrolowanie udostępniania danych osobowych związanych z interakcjami z wiadomościami.

Reagowanie na interakcje użytkowników z wiadomościami w aplikacji

Dzięki działaniom możesz używać wiadomości w aplikacji, aby kierować użytkowników do witryny lub na konkretny ekran w aplikacji.

Kod może reagować na podstawowe interakcje (kliknięcia i zamknięcia), wyświetlenia (zweryfikowane wyświetlenia wiadomości) oraz błędy wyświetlania rejestrowane i potwierdzane przez pakiet SDK. Jeśli na przykład wiadomość jest wyświetlana w formie karty, możesz śledzić, który z 2 adresów URL użytkownik kliknął na karcie, i podejmować odpowiednie działania.

Zaimplementuj DisplayDelegate, aby obsługiwać interakcje z kartą

Możesz zarejestrować delegata wyświetlania wiadomości w aplikacji, który będzie wywoływany za każdym razem, gdy nastąpi interakcja z wiadomością w aplikacji. Aby to zrobić, zaimplementuj klasę zgodnie z protokołem InAppMessagingDisplayDelegate i ustaw ją jako właściwość delegata w instancji InAppMessaging.

Załóżmy, że chcesz śledzić, który link użytkownik kliknął w wiadomości w stylu karty. Zdefiniuj klasę, która implementuje metodę messageClicked zgodnie z protokołem DisplayDelegate, aby uzyskać dostęp do linku klikniętego przez użytkownika.

Swift

Uwaga: ten produkt nie jest dostępny w przypadku platform macOS, Mac Catalyst, App Clip ani watchOS.

Listę metod wywołania zwrotnego, które można zaimplementować, oraz ich parametrów, w tym InAppMessagingAction, znajdziesz w dokumentacji delegata wyświetlania w języku Swift.


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

Uwaga: ten produkt nie jest dostępny w przypadku platform macOS, Mac Catalyst, App Clip ani watchOS.

Zestaw metod wywołania zwrotnego, które można zaimplementować, oraz ich parametry, w tym FIRInAppMessagingDisplayMessage, znajdziesz w dokumentacji delegata wyświetlania w języku Objective-C.


// 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;

Programowe wywoływanie wiadomości w aplikacji

Firebase In-App Messaging domyślnie umożliwia wywoływanie wiadomości w aplikacji za pomocą zdarzeń Google Analytics dla Firebase bez konieczności dodatkowej integracji. Możesz też ręcznie wywoływać zdarzenia programowo za pomocą wywołań programowych Firebase In-App Messaging pakietu SDK.

W kompozytorze kampanii wiadomości w aplikacji utwórz nową kampanię lub wybierz istniejącą. W kroku planowania w przepływie pracy kompozytora zanotuj identyfikator zdarzenia nowo utworzonego lub istniejącego zdarzenia wiadomości. Po zanotowaniu tego identyfikatora skonfiguruj aplikację tak, aby wywoływała zdarzenie za pomocą tego identyfikatora.

Swift

Uwaga: ten produkt nie jest dostępny w przypadku platform macOS, Mac Catalyst, App Clip ani watchOS.

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

Objective-C

Uwaga: ten produkt nie jest dostępny w przypadku platform macOS, Mac Catalyst, App Clip ani watchOS.

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

Używanie niestandardowych metadanych kampanii

W kampaniach możesz określać dane niestandardowe w postaci serii par klucz/wartość. Gdy użytkownicy wchodzą w interakcję z wiadomościami, te dane są dostępne, np. do wyświetlania kodu promocyjnego.

Swift

Uwaga: ten produkt nie jest dostępny w przypadku platform macOS, Mac Catalyst, App Clip ani watchOS.
class CardActionDelegate : NSObject, InAppMessagingDisplayDelegate {

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

Objective-C

Uwaga: ten produkt nie jest dostępny w przypadku platform macOS, Mac Catalyst, App Clip ani watchOS.
@implementation ExampleCardActionDelegate

- (void)messageClicked:(nonnull FIRInAppMessagingDisplayMessage *)inAppMessage {
    NSDictionary *appData = inAppMessage.appData;
    NSLog(@"Message data: %@", appData);
	// ...
}

@end

Tymczasowe wyłączanie wiadomości w aplikacji

Domyślnie Firebase In-App Messaging renderuje wiadomości, gdy tylko zostanie spełniony warunek wyzwalający, niezależnie od bieżącego stanu aplikacji. Jeśli z jakiegokolwiek powodu chcesz wstrzymać wyświetlanie komunikatów, np. aby nie przerywać sekwencji ekranów przetwarzania płatności, użyj właściwości messageDisplaySuppressed pakietu SDK, jak pokazano poniżej w języku Objective-C:

  [FIRInAppMessaging inAppMessaging].messageDisplaySuppressed = YES;

Ustawienie wartości YES uniemożliwia wyświetlanie wiadomości przez Firebase In-App Messaging, a NO ponownie włącza wyświetlanie wiadomości. Po ponownym uruchomieniu aplikacji pakiet SDK resetuje tę właściwość do wartości NO. Wyciszone wiadomości są ignorowane przez pakiet SDK. Gdy wyciszanie jest wyłączone, warunki wywołania muszą zostać ponownie spełnione, zanim Firebase In-App Messaging będzie mogło wyświetlić te reklamy.

Włączanie dostarczania wiadomości z prośbą o rezygnację

Domyślnie Firebase In-App Messaging automatycznie dostarcza wiadomości do wszystkich użytkowników aplikacji, na których kierujesz kampanie informacyjne. Aby dostarczać te wiadomości, pakiet SDK Firebase In-App MessagingużywaFirebase identyfikatorów instalacji do identyfikowania aplikacji każdego użytkownika. Oznacza to, że In-App Messaging musi wysyłać dane klienta powiązane z identyfikatorem instalacji na serwery Firebase. Jeśli chcesz dać użytkownikom większą kontrolę nad wysyłanymi przez nich danymi, wyłącz automatyczne zbieranie danych i pozwól im zatwierdzać udostępnianie danych.

Aby to zrobić, musisz wyłączyć automatyczną inicjację dla Firebase In-App Messaging i ręcznie zainicjować usługę dla użytkowników, którzy wyrazili na to zgodę:

  1. Wyłącz automatyczną inicjację za pomocą nowego klucza w pliku Info.plist:

    • Klucz: FirebaseInAppMessagingAutomaticDataCollectionEnabled
    • Wartość: NO
  2. Ręczne inicjowanie Firebase In-App Messaging w przypadku wybranych użytkowników:

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

    Gdy ustawisz wartość automaticDataCollectionEnabled na YES, będzie ona obowiązywać po ponownym uruchomieniu aplikacji, zastępując wartość w pliku Info.plist. Jeśli chcesz ponownie wyłączyć inicjowanie, np. gdy użytkownik później zrezygnuje z zbierania danych, ustaw wartość właściwości na NO.