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

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

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

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

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

Внедрите DisplayDelegate для обработки взаимодействий с картами.

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

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

Быстрый

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

Обратитесь к справочнику по делегату отображения Swift, чтобы узнать о наборе методов обратного вызова, которые можно реализовать, и их параметрах, включая InAppMessagingAction.


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

Цель-C

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

Обратитесь к справочнику по делегату отображения Objective-C, чтобы узнать о наборе методов обратного вызова, которые можно реализовать, и их параметрах, включая FIRInAppMessagingDisplayMessage.


// 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 без дополнительной интеграции. Вы также можете программно запускать события вручную с помощью программных триггеров Firebase In-App Messaging SDK.

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

Быстрый

Примечание. Этот продукт недоступен для macOS, Mac Catalyst, App Clip или watchOS.
…
// somewhere in the app's code
InAppMessaging.inAppMessaging().triggerEvent("exampleTrigger");

Цель-C

Примечание. Этот продукт недоступен для macOS, Mac Catalyst, App Clip или watchOS.
…
// somewhere in the app's code
[[FIRInAppMessaging inAppMessaging] triggerEvent:@"exampleTrigger"];

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

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

Быстрый

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

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

Цель-C

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

- (void)messageClicked:(nonnull FIRInAppMessagingDisplayMessage *)inAppMessage {
	appData = inAppMessage.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 SDK использует идентификаторы установки Firebase для идентификации приложения каждого пользователя. Это означает, что In-App Messaging должен отправлять данные клиента, связанные с идентификатором установки, на серверы Firebase. Если вы хотите предоставить пользователям больше контроля над отправляемыми ими данными, отключите автоматический сбор данных и дайте им возможность одобрить обмен данными.

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

  1. Отключите автоматическую инициализацию с помощью нового ключа в файле Info.plist :

    • Ключ: FirebaseInAppMessagingAutomaticDataCollectionEnabled
    • Значение: NO
  2. Инициализируйте обмен сообщениями внутри приложения Firebase для выбранных пользователей вручную:

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

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