Modifier le comportement des messages de messagerie dans l'application Firebase


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 enrichies. Vous pouvez ainsi exploiter les fonctionnalités de Google Analytics prêtes à l'emploi pour associer les événements de messagerie aux caractéristiques, aux activités et aux choix réels des utilisateurs. En intégrant le SDK Firebase In-App Messaging, vous pouvez personnaliser davantage le comportement des messages dans l'application. Vous pouvez ainsi répondre lorsque les utilisateurs interagissent avec les messages, déclencher des événements de message en dehors du Analytics framework 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 dans l'application

Grâce aux actions, vous pouvez utiliser vos messages dans 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 suppressions), aux impressions (vues validées de vos messages) et aux erreurs d'affichage enregistrées et confirmées par le SDK. Par exemple, lorsque votre message est composé sous forme de fiche modale, vous pouvez suivre et analyser l'URL sur laquelle l'utilisateur a cliqué sur la fiche.

Implémenter un DisplayDelegate pour gérer les interactions avec les fiches

Vous pouvez enregistrer un délégué d'affichage de messagerie dans l'application qui sera appelé chaque fois qu'il y aura une interaction avec un message dans l'application. Pour ce faire, implémentez une classe conformément au protocole InAppMessagingDisplayDelegate et définissez-la comme propriété déléguée sur l'instance InAppMessaging.

En supposant à nouveau que vous souhaitez suivre le lien sur lequel un utilisateur a cliqué dans un message de type fiche, 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

Remarque : Ce produit n'est pas disponible sur les cibles macOS, Mac Catalyst, App Clip ni watchOS.

Reportez-vous à la documentation de référence du 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

Remarque : Ce produit n'est pas disponible sur les cibles macOS, Mac Catalyst, App Clip ni watchOS.

Reportez-vous à la documentation de référence du délégué d'affichage Objective-C pour connaître l'ensemble des méthodes de rappel qui peuvent ê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 par programmation

Firebase In-App Messaging par défaut vous permet 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 l'éditeur de campagnes In-App Messaging, créez une campagne ou sélectionnez-en une, puis, à l'étape "Planification" du workflow de l'éditeur, notez l'ID d'événement d'un événement de messagerie nouveau ou existant. Une fois que vous l'avez noté, instrumentez votre application pour déclencher l'événement par son ID.

Swift

Remarque : Ce produit n'est pas disponible sur les cibles macOS, Mac Catalyst, App Clip ni watchOS.

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

Objective-C

Remarque : Ce produit n'est pas disponible sur les cibles macOS, Mac Catalyst, App Clip ni watchOS.

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

Utiliser des métadonnées personnalisées pour les campagnes

Dans vos campagnes, vous pouvez spécifier des données personnalisées dans une série 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

Remarque : Ce produit n'est pas disponible sur les cibles macOS, Mac Catalyst, App Clip ni watchOS.
class CardActionDelegate : NSObject, InAppMessagingDisplayDelegate {

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

Objective-C

Remarque : Ce produit n'est pas disponible sur les cibles macOS, Mac Catalyst, App Clip ni watchOS.
@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 quelque raison que ce soit, 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;

Si vous définissez la propriété sur YES, Firebase In-App Messaging n'affiche pas les 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 la diffusion des messages de désactivation

Par défaut, Firebase In-App Messaging diffuse automatiquement les messages à tous les utilisateurs de l'application que vous ciblez dans les campagnes de messagerie. Pour diffuser ces messages, le Firebase In-App Messaging SDK utilise Firebase ID d'installation pour identifier l'application de chaque utilisateur. Cela signifie que In-App Messaging doit envoyer des données client, lié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 manuellement le service pour les utilisateurs qui ont accepté de participer :

  1. Désactivez l'initialisation automatique avec une nouvelle clé dans votre fichier Info.plist :

    • Clé : FirebaseInAppMessagingAutomaticDataCollectionEnabled
    • Valeur : NO
  2. 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 sur YES, la valeur est conservée lors des redémarrages de l'application, ce qui remplace la valeur de votre fichier Info.plist. Si vous souhaitez désactiver à nouveau l'initialisation, par exemple si un utilisateur se désinscrit de la collecte ultérieurement, définissez la propriété sur NO.