Firebase In-App Messaging позволяет создавать, настраивать и таргетировать интерактивные сообщения для пользователей, используя возможности Google Analytics. Для этого не требуется много времени и усилий на написание кода. Вы сможете связывать события обмена сообщениями с характеристиками, действиями и выбором пользователей. Если вы интегрируете в приложение дополнительные Firebase In-App Messaging SDK, то сможете ещё точнее настраивать поведение сообщений в приложении, реагировать на действия пользователей, связанные с сообщениями, запускать события сообщений за пределами Analytics, а также позволить пользователям контролировать передачу своих персональных данных, связанных с взаимодействием с сообщениями.
Как реагировать на действия пользователей в сообщениях в приложении
С помощью действий вы можете направлять пользователей из сообщений в приложении на сайт или определенный экран приложения.
Ваш код может реагировать на основные взаимодействия (нажатия и закрытия), показы (подтвержденные просмотры ваших сообщений) и ошибки, зарегистрированные и подтвержденные SDK. Например, если ваше сообщение представлено в виде модального окна с карточкой, вы можете отслеживать, на какой из двух URL-адресов на карточке нажал пользователь, и выполнять последующие действия.
Реализуйте DisplayDelegate для обработки взаимодействий с карточками
Вы можете зарегистрировать делегата показа сообщений в приложении, который будет вызываться при любом взаимодействии с таким сообщением. Для этого реализуйте класс в соответствии с протоколом InAppMessagingDisplayDelegate и задайте его в качестве свойства делегата для экземпляра InAppMessaging.
Предположим, вы хотите отслеживать, на какую ссылку нажал пользователь в сообщении в виде карточки. Определите класс, который реализует метод messageClicked в соответствии с протоколом DisplayDelegate. Это позволит вам получить доступ к ссылке, на которую нажал пользователь.
Swift
В справочнике по делегату показа 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
В справочнике по делегату показа для 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 Аналитики для Firebase без дополнительной интеграции. Вы также можете вручную активировать события программным способом с помощью программных триггеров SDK Firebase In-App Messaging.
В конструкторе кампаний для сообщений в приложении создайте новую кампанию или выберите существующую. На этапе планирования в рабочем процессе конструктора запишите идентификатор события для нового или существующего события сообщений. После этого настройте приложение так, чтобы событие активировалось по идентификатору.
Swift
…
// somewhere in the app's code
InAppMessaging.inAppMessaging().triggerEvent("exampleTrigger");
Objective-C
…
// somewhere in the app's code
[[FIRInAppMessaging inAppMessaging] triggerEvent:@"exampleTrigger"];
Как использовать специальные метаданные кампании
В кампаниях можно указывать специальные данные в виде пар "ключ-значение". Когда пользователи взаимодействуют с сообщениями, эти данные становятся доступны, например, для показа промокода.
Swift
class CardActionDelegate : NSObject, InAppMessagingDisplayDelegate {
func messageClicked(_ inAppMessage: InAppMessagingDisplayMessage) {
// Get data bundle from the inapp message
let appData = inAppMessage.appData
// ...
}
}
Objective-C
@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 автоматически доставляет сообщения всем пользователям приложения, на которых вы настроили таргетинг в кампаниях для обмена сообщениями. Для этого Firebase In-App Messaging SDK использует Firebase идентификаторы установки, чтобы определить приложение каждого пользователя. Это означает , что In-App Messaging должен отправлять клиентские данные, связанные с идентификатором установки, на серверы Firebase. Если вы хотите, чтобы пользователи могли контролировать, какие данные отправляются, отключите автоматический сбор данных и предоставьте им возможность одобрять передачу данных.
Для этого нужно отключить автоматическую инициализацию для Firebase In-App Messaging и инициализировать сервис вручную для пользователей, которые согласились на использование сервиса:
Чтобы отключить автоматическую инициализацию, добавьте в файл
Info.plistследующую строку:- Клавиша:
FirebaseInAppMessagingAutomaticDataCollectionEnabled - Значение:
NO
- Клавиша:
Чтобы инициализировать Firebase In-App Messaging для выбранных пользователей вручную:
// Only needed if FirebaseInAppMessagingAutomaticDataCollectionEnabled is set to NO // in Info.plist [FIRInAppMessaging inAppMessaging].automaticDataCollectionEnabled = YES;Если вы зададите для параметра
automaticDataCollectionEnabledзначениеYES, оно будет сохраняться при перезапуске приложения и переопределять значение в файлеInfo.plist. Если вы хотите снова отключить инициализацию, например если пользователь позже откажется от сбора данных, задайте для свойства значениеNO.