Modyfikowanie działania wiadomości Firebase w aplikacji


Wysyłanie wiadomości w aplikacji Firebase pozwala tworzyć, konfigurować i kierować bogate interakcje z użytkownikami przy minimalnym nakładzie pracy związanej z kodowaniem. Wykorzystuje ono 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 integracji pakietu 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 związane z przesyłaniem wiadomości poza platformą Analytics i umożliwiając użytkownikom kontrolowanie udostępniania swoich 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 określony ekran w aplikacji.

Twój kod może reagować na podstawowe interakcje (kliknięcia i odrzucenia), 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 wyświetlana jako modalna karta, możesz śledzić, który z 2 adresów URL użytkownik kliknął na karcie, i odpowiednio reagować.

Implementowanie DisplayDelegate do obsługi interakcji z kartami

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.

Zakładając ponownie, ż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, dzięki czemu uzyskasz dostęp do linku klikniętego przez użytkownika.

Swift

Uwaga: ten produkt nie jest dostępny na platformach macOS, Mac Catalyst, App Clip ani watchOS.

Informacje o zbiorze metod wywołania zwrotnego, które można zaimplementować, oraz ich parametrach, w tym InAppMessagingAction, znajdziesz w dokumentacji delegata wyświetlania w 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 na platformach macOS, Mac Catalyst, App Clip ani watchOS.

Informacje o zbiorze metod wywołania zwrotnego, które można zaimplementować, oraz ich parametrach, w tym FIRInAppMessagingDisplayMessage, znajdziesz w dokumentacji delegata wyświetlania w 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 dodatkowej integracji. Możesz też ręcznie wywoływać zdarzenia programowo za pomocą programowych wyzwalaczy pakietu SDK Firebase In-App Messaging.

W edytorze kampanii Wysyłanie wiadomości w aplikacji utwórz nową kampanię lub wybierz istniejącą, a w kroku Planowanie w przepływie pracy edytora zanotuj identyfikator zdarzenia nowo utworzonego lub istniejącego zdarzenia związanego z wiadomościami. Po zanotowaniu skonfiguruj aplikację tak, aby wywoływała zdarzenie za pomocą jego identyfikatora.

Swift

Uwaga: ten produkt nie jest dostępny na platformach 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 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 określić dane niestandardowe w postaci serii par klucz-wartość. Gdy użytkownicy wchodzą w interakcje z wiadomościami, te dane są dostępne, aby na przykład wyświetlić kod promocyjny.

Swift

Uwaga: ten produkt nie jest dostępny 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: ten produkt nie jest dostępny 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łą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 jakiegoś powodu chcesz wstrzymać wyświetlanie wiadomości, na przykład aby uniknąć przerywania sekwencji ekranów przetwarzania płatności, użyj właściwości messageDisplaySuppressed pakietu SDK, jak pokazano tutaj w 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 wartość NO ponownie włącza wyświetlanie wiadomości. Pakiet SDK resetuje właściwość do wartości NO po ponownym uruchomieniu aplikacji. Wstrzymane wiadomości są ignorowane przez pakiet SDK. Aby funkcja Firebase In-App Messaging mogła je wyświetlić, po wyłączeniu wstrzymywania muszą zostać ponownie spełnione warunki wyzwalające.

Włączanie dostarczania wiadomości z rezygnacją

Domyślnie funkcja Firebase In-App Messaging automatycznie dostarcza wiadomości do wszystkich użytkowników aplikacji, do których kierujesz kampanie związane z wiadomościami. Aby dostarczać te wiadomości, pakiet SDK Firebase In-App Messaging używa Firebase 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 daj im możliwość zatwierdzenia udostępniania danych.

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

  1. Wyłącz automatyczną inicjację 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 wartość automaticDataCollectionEnabled na YES, wartość będzie się utrzymywać po ponownym uruchomieniu aplikacji, zastępując wartość w pliku Info.plist. Jeśli chcesz ponownie wyłączyć inicjację, na przykład gdy użytkownik później zrezygnuje ze zbierania danych, ustaw właściwość na NO.