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 (weryfikowane wyświetlenia Twoich wiadomości) oraz 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.

Załóżmy, że chcesz śledzić, który link użytkownik kliknął w wiadomości w formie karty. Zdefiniuj klasę, która implementuje metodę messageClicked zgodnie z protokołem DisplayDelegate, co zapewni Ci 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: 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: 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;

Uruchamianie wiadomości w aplikacji za pomocą kodu

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

W komponencie kampanii z wiadomościami w aplikacji utwórz nową kampanię lub wybierz już istniejącą, a na etapie harmonogramowania w komponencie zapisz 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"];

Używanie niestandardowych metadanych kampanii

W kampaniach możesz podawać dane niestandardowe w serii par klucz-wartość. Gdy użytkownicy wchodzą w interakcję z wiadomościami, dane te są dostępne, aby na przykład wyświetlić kod promocyjny.

Swift

Uwaga: ta usługa nie jest dostępna na platformach 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: ta usługa nie jest dostępna na platformach 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łą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 zablokować wyświetlanie wiadomości, np. aby nie przerywać sekwencji ekranów przetwarzania płatności, użyj właściwości messageDisplaySuppressed pakietu SDK, jak pokazano tutaj w języku 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. Aby Firebase In-App Messaging mogła je wyświetlać, warunki ich aktywacji muszą zostać spełnione ponownie, gdy blokada jest wyłączona.

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

Domyślnie Firebase In-App Messaging automatycznie wysyła wiadomości do wszystkich użytkowników aplikacji, na których jest ona kierowana. Aby wysyłać te wiadomości, pakiet SDK Firebase In-App Messaging używa identyfikatorów instalacji Firebase, aby zidentyfikować aplikację 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, aby użytkownicy mieli większą kontrolę nad przesyłanymi danymi, wyłącz automatyczne zbieranie danych i pozwalaj im na zatwierdzanie udostępniania danych.

Aby to zrobić, musisz wyłączyć automatyczną inicjalizację w przypadku usługi Firebase In-App Messaging i ręcznie zainicjować usługę w przypadku użytkowników, którzy wyrazili 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 wartość automaticDataCollectionEnabled na YES, będzie ona zachowywana po ponownym uruchomieniu aplikacji, zastępując wartość w sekcji Info.plist. Jeśli chcesz ponownie wyłączyć inicjalizację, na przykład jeśli użytkownik zrezygnuje z zbierania danych, ustaw tę właściwość na NO.