Modyfikowanie działania wiadomości Firebase w aplikacji


Bez konieczności kodowania możesz tworzyć, konfigurować i kierować interakcje z użytkownikami za pomocą funkcji Firebase In-App Messaging, korzystając z domyślnych możliwości usługi Google Analytics do łączenia zdarzeń związanych z wiadomościami z rzeczywistymi cechami, działaniami i wyborami użytkowników. Dzięki dodatkowej integracji pakietu SDK Firebase In-App Messaging możesz jeszcze lepiej dostosować działanie wiadomości w aplikacji, reagując na interakcje użytkowników z wiadomościami, wywołując zdarzenia wiadomości poza frameworkiem Analytics oraz umożliwiając użytkownikom kontrolowanie udostępniania ich danych osobowych związanych z interakcjami z wiadomościami.

Odpowiadanie 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 konkretnego ekranu w aplikacji.

Twój kod może reagować na podstawowe interakcje (kliknięcia i odrzucenia), wyświetlenia (zweryfikowane wyświetlenia wiadomości) i wyświetlać błędy zarejestrowane i potwierdzone przez pakiet SDK. Jeśli na przykład wiadomość jest sformatowana jako modalna karta, możesz śledzić i przetwarzać informacje o tym, który z 2 adresów URL użytkownik kliknął na karcie.

Implementowanie klasy DisplayDelegate do obsługi interakcji z kartą

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

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

Swift

Uwaga: ta usługa nie jest dostępna na platformach macOS, Mac Catalyst, App Clip ani watchOS.

Informacje o dostępnych metodach wywołania i ich parametrach, w tym o metodzie InAppMessagingAction, znajdziesz w artykule display delegate reference (w języku Swift).


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

Uwaga: ta usługa nie jest dostępna na platformach macOS, Mac Catalyst, App Clip ani watchOS.

Informacje o zestawie metod wywołania, które można zaimplementować, oraz ich parametrach, w tym FIRInAppMessagingDisplayMessage, znajdziesz w dokumentacji Objective-C DISPLAY_DELEGATE_REFERENCE.


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

Automatyczne wywoływanie wiadomości w aplikacji

Firebase In-App Messaging domyślnie pozwala na aktywowanie wiadomości w aplikacji ze zdarzeniami Google Analytics dla Firebase bez konieczności dodatkowej integracji. Zdarzenia możesz też uruchamiać ręcznie za pomocą wywołań programowych w pakiecie SDK Firebase In-App Messaging.

W narzędziu do tworzenia wiadomości w aplikacji utwórz nową kampanię lub wybierz już istniejącą. Następnie w kroku Planowanie w procesie tworzenia wiadomości zanotuj identyfikator zdarzenia nowo utworzonego lub istniejącego zdarzenia wiadomości. Gdy to zrobisz, zintegruj swoją aplikację z usługą, aby wywołać zdarzenie za pomocą jego identyfikatora.

Swift

Uwaga: ta usługa nie jest dostępna na platformach macOS, Mac Catalyst, App Clip ani watchOS.

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

Objective-C

Uwaga: ta usługa nie jest dostępna na platformach macOS, Mac Catalyst, App Clip ani watchOS.

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

Korzystanie z niestandardowych metadanych kampanii

W kampaniach możesz podawać dane niestandardowe w serii par klucz-wartość. Gdy użytkownicy wchodzą w interakcje z wiadomościami, możesz udostępniać te dane, np. wyświetlać kod promocyjny.

Swift

Uwaga: ta usługa nie jest dostępna na platformach macOS, Mac Catalyst, App Clip ani watchOS.
class CardActionFiamDelegate : NSObject, InAppMessagingDisplayDelegate {

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

Objective-C

Uwaga: ta usługa nie jest dostępna na platformach macOS, Mac Catalyst, App Clip ani watchOS.
@implementation CardActionFiamDelegate

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

@end

Tymczasowe wyłączenie wiadomości w aplikacji

Domyślnie Firebase In-App Messaging wyświetla wiadomości, gdy warunek jest spełniony, niezależnie od bieżącego stanu aplikacji. Jeśli z jakiegokolwiek powodu chcesz z jakiegokolwiek powodu wyłączyć wyświetlanie komunikatów, na przykład aby nie przerywać sekwencji ekranów przetwarzania płatności, użyj właściwości messageDisplaySuppressed pakietu SDK, jak pokazano w tym przykładzie w Objective-C:

  [FIRInAppMessaging inAppMessaging].messageDisplaySuppressed = YES;

Ustawienie tej właściwości na YES spowoduje, że Firebase In-App Messaging nie będzie wyświetlać wiadomości, natomiast ustawienie jej na NO ponownie włączy wyświetlanie wiadomości. Po ponownym uruchomieniu aplikacji pakiet SDK resetuje tę właściwość do wartości NO. Pakiet SDK ignoruje wiadomości z wyłączonym powiadomieniem. Gdy pomijanie jest wyłączone, ich warunki aktywatora muszą zostać ponownie spełnione, zanim Firebase In-App Messaging będzie mógł je wyświetlić.

Włączanie wysyłania wiadomości z możliwością rezygnacji

Domyślnie Firebase In-App Messaging automatycznie dostarcza wiadomości do wszystkich użytkowników aplikacji, na których kierujesz kampanie z opcją przesyłania wiadomości. Aby dostarczyć te komunikaty, pakiet SDK Firebase In-App Messaging korzysta z identyfikatorów instalacji aplikacji Firebase, aby zidentyfikować aplikację każdego użytkownika. Oznacza to, że In-App Messaging musi wysyłać dane klienta połączone z identyfikatorem instalacji na serwery Firebase. Jeśli chcesz, aby użytkownicy mieli większą kontrolę nad przesyłanymi przez siebie danymi, wyłącz automatyczne gromadzenie danych i pozwalaj im na zatwierdzanie udostępniania danych.

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

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

    • Klucz: FirebaseInAppMessagingAutomaticDataCollectionEnabled
    • Wartość: NO
  2. Aby ręcznie zainicjować Firebase In-App Messaging dla wybranych użytkowników:

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

    Gdy ustawisz automaticDataCollectionEnabled na YES, wartość będzie się utrzymywała po ponownym uruchomieniu aplikacji i zastąpi wartość z Info.plist. Jeśli chcesz ponownie wyłączyć inicjowanie, na przykład jeśli użytkownik zrezygnuje z zbierania danych, ustaw tę właściwość na NO.