Изменить поведение сообщений Firebase In-App Messaging


С минимальными усилиями по программированию, Firebase In-App Messaging позволяет создавать, настраивать и таргетировать интерактивные сообщения для пользователей, используя возможности Google Analytics «из коробки» для привязки событий обмена сообщениями к реальным характеристикам, действиям и выборам пользователей. Благодаря дополнительной интеграции с SDK Firebase In-App Messaging , вы можете еще больше настроить поведение внутриприложенийных сообщений, реагируя на взаимодействие пользователей с сообщениями, запуская события сообщений вне платформы Analytics и позволяя пользователям контролировать обмен своими личными данными, связанными с обменом сообщениями.

Реагировать на взаимодействие пользователей с сообщениями в приложении.

С помощью действий вы можете использовать внутриприложные сообщения, чтобы направлять пользователей на веб-сайт или на определенный экран в вашем приложении.

Ваш код может реагировать на базовые взаимодействия (клики и закрытия), на показы (подтвержденные просмотры ваших сообщений) и отображать ошибки, зарегистрированные и подтвержденные SDK. Например, когда ваше сообщение представлено в виде модального окна-карточки, вы можете отслеживать и уточнять, по какой из двух URL-адресов пользователь перешел по ссылке на карточке.

Реализуйте DisplayDelegate для обработки взаимодействия с карточками.

Вы можете зарегистрировать делегат для отображения сообщений в приложении, который будет вызываться при каждом взаимодействии с сообщением в приложении. Для этого реализуйте класс в соответствии с протоколом InAppMessagingDisplayDelegate и установите его в качестве свойства делегата в экземпляре InAppMessaging .

Предположим, вы хотите отслеживать, по какой ссылке пользователь перешел в сообщении в формате карточки. В этом случае определите класс, реализующий метод messageClicked в соответствии с протоколом DisplayDelegate , что предоставит вам доступ к ссылке, по которой перешел пользователь.

Быстрый

Примечание: Этот продукт недоступен для операционных систем macOS, Mac Catalyst, App Clip и watchOS.

Для получения информации о наборе методов обратного вызова, которые можно реализовать, и их параметрах, включая InAppMessagingAction, обратитесь к справочнику делегатов отображения 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

Примечание: Этот продукт недоступен для операционных систем macOS, Mac Catalyst, App Clip и watchOS.

Для получения информации о наборе методов обратного вызова, которые можно реализовать, и их параметрах, включая FIRInAppMessagingDisplayMessage, обратитесь к справочнику делегатов отображения 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;

Программная отправка сообщений внутри приложения.

По умолчанию Firebase In-App Messaging позволяет запускать внутриприложные сообщения на основе событий Google Analytics для Firebase без дополнительной интеграции. Вы также можете вручную запускать события программно с помощью программных триггеров SDK Firebase In-App Messaging .

В редакторе кампаний внутри приложения создайте новую кампанию или выберите существующую, а на этапе планирования рабочего процесса редактора запишите идентификатор события (ID) для нового или существующего события обмена сообщениями. После этого настройте приложение так, чтобы оно запускало событие по его ID.

Быстрый

Примечание: Этот продукт недоступен для операционных систем macOS, Mac Catalyst, App Clip и watchOS.

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

Objective-C

Примечание: Этот продукт недоступен для операционных систем macOS, Mac Catalyst, App Clip и watchOS.

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

Используйте пользовательские метаданные кампании

В своих кампаниях вы можете указывать пользовательские данные в виде пар ключ/значение. Когда пользователи взаимодействуют с сообщениями, эти данные становятся доступны вам, например, для отображения промокода.

Быстрый

Примечание: Этот продукт недоступен для операционных систем macOS, Mac Catalyst, App Clip и watchOS.
class CardActionDelegate : NSObject, InAppMessagingDisplayDelegate {

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

Objective-C

Примечание: Этот продукт недоступен для операционных систем macOS, Mac Catalyst, App Clip и watchOS.
@implementation ExampleCardActionDelegate

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

@end

Временно отключить сообщения внутри приложения.

По умолчанию Firebase In-App Messaging отображает сообщения всякий раз, когда выполняется условие запуска, независимо от текущего состояния приложения. Если вы хотите отключить отображение сообщений по какой-либо причине, например, чтобы избежать прерывания последовательности экранов обработки платежей, используйте свойство messageDisplaySuppressed из SDK, как показано здесь на примере Objective-C:

  [FIRInAppMessaging inAppMessaging].messageDisplaySuppressed = YES;

Установка свойства в значение YES предотвращает отображение сообщений Firebase In-App Messaging , а значение NO снова включает отображение сообщений. SDK сбрасывает свойство в значение NO при перезапуске приложения. Подавленные сообщения игнорируются SDK. Условия их срабатывания должны быть выполнены снова, когда подавление отключено, прежде чем Firebase In-App Messaging сможет их отобразить.

Включить доставку сообщений об отказе от подписки

По умолчанию Firebase In-App Messaging автоматически доставляет сообщения всем пользователям приложения, на которых вы ориентируетесь в кампаниях обмена сообщениями. Для доставки этих сообщений SDK Firebase In-App Messaging использует идентификаторы установки Firebase для идентификации приложения каждого пользователя. Это означает, что In-App Messaging должен отправлять клиентские данные, связанные с идентификатором установки, на серверы Firebase. Если вы хотите предоставить пользователям больше контроля над отправляемыми ими данными, отключите автоматический сбор данных и дайте им возможность разрешить обмен данными.

Для этого необходимо отключить автоматическую инициализацию Firebase In-App Messaging и инициализировать сервис вручную для пользователей, давших на это согласие:

  1. Отключите автоматическую инициализацию, добавив новый ключ в файл Info.plist :

    • Ключ: FirebaseInAppMessagingAutomaticDataCollectionEnabled
    • Значение: NO
  2. Выполните инициализацию функции Firebase In-App Messaging для выбранных пользователей вручную:

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

    После установки automaticDataCollectionEnabled в YES , это значение сохраняется при перезапуске приложения, переопределяя значение в вашем Info.plist . Если вы хотите снова отключить инициализацию, например, если пользователь позже откажется от сбора данных, установите для этого свойства значение NO .