Avec peu ou pas d'effort de codage, Firebase In-App Messaging vous permet de créer, de configurer et de cibler des interactions utilisateur riches, en tirant parti des capacités de Google Analytics prêtes à l'emploi pour associer les événements de messagerie aux caractéristiques, activités et choix réels des utilisateurs. En intégrant le SDK Firebase In-App Messaging, vous pouvez personnaliser davantage le comportement des messages intégrés à l'application. Vous pouvez ainsi répondre lorsque les utilisateurs interagissent avec les messages, déclencher des événements de message en dehors du framework Analytics et permettre aux utilisateurs de contrôler le partage de leurs données personnelles liées aux interactions de messagerie.
Répondre lorsque les utilisateurs interagissent avec les messages intégrés
Grâce aux actions, vous pouvez utiliser vos messages intégrés à l'application pour rediriger les utilisateurs vers un site Web ou un écran spécifique de votre application.
Votre code peut répondre aux interactions de base (clics et fermetures), aux impressions (vues validées de vos messages) et aux erreurs affichées et confirmées par le SDK. Par exemple, lorsque votre message est composé sous forme de modal de carte, vous pouvez suivre et vérifier sur laquelle des deux URL l'utilisateur a cliqué sur la carte.
Implémenter un DisplayDelegate pour gérer les interactions avec les cartes
Vous pouvez enregistrer un délégué d'affichage des messages intégrés à l'application qui sera appelé chaque fois qu'il y aura une interaction avec un message intégré à l'application. Pour ce faire, implémentez une classe par protocole InAppMessagingDisplayDelegate
et définissez-la comme propriété déléguée sur l'instance InAppMessaging
.
En supposant à nouveau que vous souhaitiez suivre le lien sur lequel un utilisateur a cliqué dans un message de style carte, définissez une classe qui implémente la méthode messageClicked
conformément au protocole DisplayDelegate
. Vous aurez ainsi accès au lien sur lequel l'utilisateur a cliqué.
Swift
Consultez la documentation de référence sur le délégué d'affichage Swift pour connaître l'ensemble des méthodes de rappel qui peuvent être implémentées et leurs paramètres, y compris 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
Consultez la documentation de référence sur le délégué d'affichage Objective-C pour connaître l'ensemble des méthodes de rappel pouvant être implémentées et leurs paramètres, y compris 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;
Déclencher des messages dans l'application de manière programmatique
Firebase In-App Messaging vous permet par défaut de déclencher des messages dans l'application avec des événements Google Analytics pour Firebase, sans intégration supplémentaire. Vous pouvez également déclencher manuellement des événements par programmation à l'aide des déclencheurs programmatiques du SDK Firebase In-App Messaging.
Dans le composeur de campagne de messagerie intégrée à l'application, créez une campagne ou sélectionnez-en une existante. À l'étape de planification du workflow du composeur, notez l'ID d'événement d'un événement de messagerie nouvellement créé ou existant. Une fois l'événement noté, instrumentez votre application pour le déclencher par son ID.
Swift
…
// somewhere in the app's code
InAppMessaging.inAppMessaging().triggerEvent("exampleTrigger");
Objective-C
…
// somewhere in the app's code
[[FIRInAppMessaging inAppMessaging] triggerEvent:@"exampleTrigger"];
Utiliser des métadonnées personnalisées de campagne
Dans vos campagnes, vous pouvez spécifier des données personnalisées sous forme de paires clé/valeur. Lorsque les utilisateurs interagissent avec les messages, ces données sont disponibles pour vous permettre, par exemple, d'afficher un code promotionnel.
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
Désactiver temporairement les messages dans l'application
Par défaut, Firebase In-App Messaging affiche les messages chaque fois qu'une condition de déclenchement est remplie, quel que soit l'état actuel d'une application. Si vous souhaitez supprimer l'affichage des messages pour une raison quelconque, par exemple pour éviter d'interrompre une séquence d'écrans de traitement des paiements, utilisez la propriété messageDisplaySuppressed
du SDK, comme illustré ici en Objective-C :
[FIRInAppMessaging inAppMessaging].messageDisplaySuppressed = YES;
Définir la propriété sur YES
empêche Firebase In-App Messaging d'afficher des messages, tandis que NO
réactive l'affichage des messages. Le SDK réinitialise la propriété sur NO
au redémarrage de l'application. Les messages supprimés sont ignorés par le SDK. Leurs conditions de déclenchement doivent être à nouveau remplies lorsque la suppression est désactivée pour que Firebase In-App Messaging puisse les afficher.
Activer l'envoi de messages de désactivation
Par défaut, Firebase In-App Messaging distribue automatiquement les messages à tous les utilisateurs de l'application que vous ciblez dans les campagnes de messagerie. Pour envoyer ces messages, le SDK Firebase In-App Messaging utilise les ID d'installation Firebase pour identifier l'application de chaque utilisateur. Cela signifie que In-App Messaging doit envoyer les données client associées à l'ID d'installation aux serveurs Firebase. Si vous souhaitez donner aux utilisateurs plus de contrôle sur les données qu'ils envoient, désactivez la collecte automatique des données et donnez-leur la possibilité d'approuver le partage des données.
Pour ce faire, vous devez désactiver l'initialisation automatique pour Firebase In-App Messaging et initialiser le service manuellement pour les utilisateurs qui ont activé l'option :
Désactivez l'initialisation automatique avec une nouvelle clé dans votre fichier
Info.plist
:- Clé :
FirebaseInAppMessagingAutomaticDataCollectionEnabled
- Valeur :
NO
- Clé :
Initialisez manuellement Firebase In-App Messaging pour les utilisateurs sélectionnés :
// Only needed if FirebaseInAppMessagingAutomaticDataCollectionEnabled is set to NO // in Info.plist [FIRInAppMessaging inAppMessaging].automaticDataCollectionEnabled = YES;
Une fois que vous avez défini
automaticDataCollectionEnabled
surYES
, la valeur persiste lors des redémarrages de l'application, en remplaçant la valeur de votreInfo.plist
. Si vous souhaitez désactiver à nouveau l'initialisation, par exemple si un utilisateur refuse la collecte ultérieurement, définissez la propriété surNO
.