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


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

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

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

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

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

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

Предположим еще раз, что вы хотите отслеживать, по какой ссылке щелкнул пользователь в сообщении в стиле карточки, определите класс, реализующий метод 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: 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.

Обратитесь к справочнику по делегатам отображения 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.

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

Быстрый

Примечание: этот продукт недоступен на устройствах с 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 отображает сообщения при выполнении условия срабатывания, независимо от текущего состояния приложения. Если вы хотите отключить отображение сообщений по какой-либо причине, например, чтобы не прерывать последовательность экранов обработки платежей, используйте свойство SDK messageDisplaySuppressed , как показано здесь на Objective-C:

  [FIRInAppMessaging inAppMessaging].messageDisplaySuppressed = YES;

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

Включить возможность отказа от отправки сообщений

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