Modyfikowanie działania wiadomości Firebase w aplikacji


Wiadomości w aplikacji Firebase pozwalają tworzyć, konfigurować i kierować rozbudowane interakcje z użytkownikami przy minimalnym nakładzie pracy nad kodem. Wykorzystują one gotowe funkcje Google Analytics, aby powiązać zdarzenia związane z wiadomościami z rzeczywistymi cechami, działaniami i wyborami użytkowników. Dzięki dodatkowej integracji z pakietem SDK Firebase In-App Messaging możesz jeszcze bardziej dostosować zachowanie wiadomości w aplikacji, reagując na interakcje użytkowników z wiadomościami, wywołując zdarzenia wiadomości poza platformą Analytics i umożliwiając użytkownikom kontrolowanie udostępniania ich 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 konkretnego ekranu 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 zarejestrowane i potwierdzone przez pakiet SDK. Jeśli na przykład wiadomość jest utworzona jako karta modalna, możesz śledzić, który z 2 adresów URL na karcie został kliknięty przez użytkownika, i podjąć odpowiednie działania.

Implementowanie DisplayDelegate do obsługi interakcji z kartami

Możesz zarejestrować obiekt delegowany 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ść delegowaną w instancji InAppMessaging.

Załóżmy, że chcesz śledzić, który link kliknął użytkownik w wiadomości w stylu 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 urządzeniach z systemem macOS, Mac Catalyst, App Clip ani watchOS.

W dokumentacji dotyczącej wyświetlania w Swift znajdziesz zestaw metod wywołania zwrotnego, które można zaimplementować, oraz ich parametry, w tym 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

Uwaga: ta usługa nie jest dostępna na urządzeniach z systemem 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 klasy Display Delegate 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;

Wywoływanie wiadomości w aplikacji w sposób zautomatyzowany

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 za pomocą wyzwalaczy automatycznych pakietu SDK Firebase In-App Messaging.

W kreatorze kampanii wiadomości w aplikacji utwórz nową kampanię lub wybierz istniejącą, a następnie w kroku Harmonogram w procesie kreatora zanotuj identyfikator nowo utworzonego lub istniejącego zdarzenia związanego z wiadomościami. Po jego zapisaniu dodaj do aplikacji kod, który będzie wywoływać zdarzenie na podstawie jego identyfikatora.

Swift

Uwaga: ta usługa nie jest dostępna na urządzeniach z systemem 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 urządzeniach z systemem 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, aby można było np. wyświetlić kod promocyjny.

Swift

Uwaga: ta usługa nie jest dostępna na urządzeniach z systemem 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 urządzeniach z systemem 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 spełniony jest warunek aktywujący, niezależnie od bieżącego stanu aplikacji. Jeśli z jakiegoś powodu chcesz wyłączyć wyświetlanie wiadomości, na przykład aby nie przerywać sekwencji ekranów obsługi płatności, użyj właściwości messageDisplaySuppressed pakietu SDK, jak pokazano w tym przykładzie w języku Objective-C:

  [FIRInAppMessaging inAppMessaging].messageDisplaySuppressed = YES;

Ustawienie właściwości na YES uniemożliwia wyświetlanie wiadomości przez Firebase In-App Messaging, a ustawienie NO ponownie włącza wyświetlanie wiadomości. Pakiet SDK resetuje właściwość do wartości NO po ponownym uruchomieniu aplikacji. Wiadomości pominięte są ignorowane przez pakiet SDK. Aby Firebase In-App Messaging mogła je wyświetlić, warunki ich aktywacji muszą zostać ponownie spełnione, gdy pomijanie jest wyłączone.

Włącz dostarczanie wiadomości o rezygnacji

Domyślnie Firebase In-App Messaging automatycznie dostarcza wiadomości do wszystkich użytkowników aplikacji, do których kierujesz kampanie z wiadomościami. Aby dostarczać te wiadomości, pakiet SDK Firebase In-App Messaging używa identyfikatorów instalacji Firebase 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 zapewnić użytkownikom większą kontrolę nad wysyłanymi danymi, wyłącz automatyczne zbieranie danych i daj im możliwość zatwierdzania udostępniania danych.

Aby to zrobić, musisz wyłączyć automatyczną inicjalizację Firebase In-App Messaging i ręcznie zainicjować usługę dla 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. Ręcznie zainicjuj 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 parametr automaticDataCollectionEnabled na YES, wartość będzie zachowywana po ponownym uruchomieniu aplikacji, zastępując wartość w pliku Info.plist. Jeśli chcesz ponownie wyłączyć inicjowanie, na przykład gdy użytkownik później zrezygnuje ze zbierania danych, ustaw właściwość na NO.