Skip to content

Enregistrer les analyses

Si vous souhaitez afficher les cartes de contenu de manière totalement personnalisée, vous pouvez mettre en place votre propre interface utilisateur de présentation des cartes de contenu. Cependant, les données telles que les impressions, les clics et les rejets ne sont traitées automatiquement que lorsque vous utilisez les modèles de carte par défaut. Lors de la mise en œuvre d’une interface utilisateur entièrement personnalisée, vous devrez gérer ces données manuellement. Pour ce faire, alimentez votre interface utilisateur personnalisée avec des données issues des modèles de données de Braze et enregistrez manuellement des analyses/analytiques telles que les impressions et les clics. Une fois que vous avez compris comment enregistrer les analyses/analytiques, vous pouvez voir les façons courantes dont les clients de Braze créent des cartes de contenu personnalisées.

Écouter les mises à jour de la carte

Lorsque vous implémentez vos cartes de contenu personnalisées, vous pouvez analyser les objets des cartes de contenu et extraire leurs données utiles, telles que title, cardDescription et imageUrl. Vous pouvez ensuite utiliser les données du modèle résultant pour alimenter votre interface utilisateur personnalisée.

Pour obtenir les modèles de données des cartes de contenu, abonnez-vous aux mises à jour des cartes de contenu. Deux propriétés doivent faire l’objet d’une attention particulière :

  • id: Conseille la chaîne de caractères de l’ID de la carte de contenu. Il s’agit de l’identifiant unique utilisé pour enregistrer les analyses des cartes de contenu personnalisées.
  • extras: englobe toutes les paires clé-valeur du tableau de bord de Braze.

Toutes les propriétés autres que id et extras sont facultatives pour analyser les cartes de contenu personnalisées. Pour plus d’informations sur le modèle de données, consultez l’article sur l’intégration de chaque plateforme : Android, iOS, Web.

Étape 1 : Créez une variable privée pour l’utilisateur abonné

Pour vous abonner aux mises à jour des cartes, commencez par déclarer une variable privée dans votre classe personnalisée, qui contiendra votre abonné :

1
2
// subscriber variable
private IEventSubscriber<ContentCardsUpdatedEvent> mContentCardsUpdatedSubscriber;

Étape 2 : S’abonner aux mises à jour

Ensuite, ajoutez le code suivant pour vous abonner aux mises à jour de cartes de contenu de Braze, généralement à l’intérieur de vos activités personnalisées de carte de contenu Activity.onCreate() :

1
2
3
4
5
6
7
8
9
10
11
12
13
// Remove the previous subscriber before rebuilding a new one with our new activity.
Braze.getInstance(context).removeSingleSubscription(mContentCardsUpdatedSubscriber, ContentCardsUpdatedEvent.class);
mContentCardsUpdatedSubscriber = new IEventSubscriber<ContentCardsUpdatedEvent>() {
    @Override
    public void trigger(ContentCardsUpdatedEvent event) {
        // List of all Content Cards
        List<Card> allCards = event.getAllCards();

        // Your logic below
    }
};
Braze.getInstance(context).subscribeToContentCardsUpdates(mContentCardsUpdatedSubscriber);
Braze.getInstance(context).requestContentCardsRefresh();

Étape 3 : Se désabonner

Nous vous recommandons également de vous désabonner lorsque votre activité personnalisée n’est plus visible. Ajoutez le code suivant à la méthode de cycle de vie onDestroy() de votre activité :

1
Braze.getInstance(context).removeSingleSubscription(mContentCardsUpdatedSubscriber, ContentCardsUpdatedEvent.class);

Étape 1 : Créez une variable privée pour l’utilisateur abonné

Pour vous abonner aux mises à jour des cartes, commencez par déclarer une variable privée dans votre classe personnalisée, qui contiendra votre abonné :

1
private var contentCardsUpdatedSubscriber: IEventSubscriber<ContentCardsUpdatedEvent>? = null

Étape 2 : S’abonner aux mises à jour

Ensuite, ajoutez le code suivant pour vous abonner aux mises à jour de cartes de contenu de Braze, généralement à l’intérieur de vos activités personnalisées de carte de contenu Activity.onCreate() :

1
2
3
4
5
6
7
8
9
10
// Remove the previous subscriber before rebuilding a new one with our new activity.
Braze.getInstance(context).subscribeToContentCardsUpdates(contentCardsUpdatedSubscriber)
Braze.getInstance(context).requestContentCardsRefresh()
  // List of all Content Cards
  val allCards = event.allCards

  // Your logic below
}
Braze.getInstance(context).subscribeToContentCardsUpdates(mContentCardsUpdatedSubscriber)
Braze.getInstance(context).requestContentCardsRefresh(true)

Étape 3 : Se désabonner

Nous vous recommandons également de vous désabonner lorsque votre activité personnalisée n’est plus visible. Ajoutez le code suivant à la méthode de cycle de vie onDestroy() de votre activité :

1
Braze.getInstance(context).removeSingleSubscription(contentCardsUpdatedSubscriber, ContentCardsUpdatedEvent::class.java)

Pour accéder au modèle de données des cartes de contenu, appelez contentCards.cards sur votre instance braze.

1
let cards: [Braze.ContentCard] = AppDelegate.braze?.contentCards.cards

En outre, vous pouvez également gérer un abonnement pour observer les changements dans vos cartes de contenu. Vous pouvez le faire de deux manières :

  1. Gestion d’une possibilité d’annulation ou
  2. Gestion d’un AsyncStream.

Annulable

1
2
3
4
5
6
// This subscription is maintained through a Braze cancellable, which will observe for changes until the subscription is cancelled.
// You must keep a strong reference to the cancellable to keep the subscription active.
// The subscription is canceled either when the cancellable is deinitialized or when you call its `.cancel()` method.
let cancellable = AppDelegate.braze?.contentCards.subscribeToUpdates { [weak self] contentCards in
  // Implement your completion handler to respond to updates in `contentCards`.
}

AsyncStream

1
let stream: AsyncStream<[Braze.ContentCard]> = AppDelegate.braze?.contentCards.cardsStream
1
NSArray<BRZContentCardRaw *> *contentCards = AppDelegate.braze.contentCards.cards;

En outre, si vous souhaitez gérer un abonnement à vos cartes de contenu, vous pouvez appeler subscribeToUpdates :

1
2
3
4
// This subscription is maintained through Braze cancellable, which will continue to observe for changes until the subscription is cancelled.
BRZCancellable *cancellable = [self.braze.contentCards subscribeToUpdates:^(NSArray<BRZContentCardRaw *> *contentCards) {
  // Implement your completion handler to respond to updates in `contentCards`.
}];

Enregistrez une fonction de rappel pour vous abonner aux mises à jour lorsque les cartes sont actualisées.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import * as braze from "@braze/web-sdk";

braze.subscribeToContentCardsUpdates((updates) => {
  const cards = updates.cards;
// For example:
  cards.forEach(card => {
    if (card.isControl) {
      // Do not display the control card, but remember to call `logContentCardImpressions([card])`
    }
    else if (card instanceof braze.ClassicCard || card instanceof braze.CaptionedImage) {
      // Use `card.title`, `card.imageUrl`, etc.
    }
    else if (card instanceof braze.ImageOnly) {
      // Use `card.imageUrl`, etc.
    }
  })
});

braze.openSession();

Enregistrer les événements

L’enregistrement d’indicateurs utiles, tels que les impressions, les clics et les rejets, est simple et rapide. Définissez un écouteur de clic personnalisé pour traiter manuellement ces analyses.

Le BrazeManager peut faire référence aux dépendances du SDK Braze, telles que la liste du tableau d’objets de cartes de contenu, afin que Card puisse appeler les méthodes d’enregistrement de Braze. Utilisez la classe de base ContentCardable pour référencer et fournir facilement des données à BrazeManager.

Pour enregistrer une impression ou cliquer sur une carte, appelez le Card.logClick() ou Card.logImpression() respectivement.

Vous pouvez enregistrer manuellement une carte de contenu ou la définir comme “fermée” à Braze pour une carte particulière avec isDismissed. Si une carte est déjà marquée comme étant rejetée, elle ne peut pas être marquée comme étant de nouveau rejetée.

Pour créer un récepteur de clic personnalisé, créez une classe qui met en œuvre la fonction IContentCardsActionListener et enregistrez-la sur BrazeContentCardsManager. Implémentez la méthode onContentCardClicked() qui sera appelée lorsque l’utilisateur cliquera sur une carte de contenu. Ensuite, demandez à Braze d’utiliser votre carte de contenu en tant qu’auditeur de clics.

Par exemple :

1
2
3
4
5
6
7
8
9
10
11
BrazeContentCardsManager.getInstance().setContentCardsActionListener(new IContentCardsActionListener() {
  @Override
  public boolean onContentCardClicked(Context context, Card card, IAction cardAction) {
    return false;
  }

  @Override
  public void onContentCardDismissed(Context context, Card card) {

  }
});

Par exemple :

1
2
3
4
5
6
7
8
9
BrazeContentCardsManager.getInstance().contentCardsActionListener = object : IContentCardsActionListener {
  override fun onContentCardClicked(context: Context, card: Card, cardAction: IAction): Boolean {
    return false
  }

  override fun onContentCardDismissed(context: Context, card: Card) {

  }
}

Implémentez le protocole BrazeContentCardUIViewControllerDelegate et définissez votre objet délégué comme la propriété delegate de votre BrazeContentCardUI.ViewController. Ce délégué se chargera de transmettre les données de votre objet personnalisé à Braze pour qu’elles soient enregistrées. Pour un exemple, voir le tutoriel sur l’interface utilisateur des cartes de contenu.

1
2
3
4
5
6
7
8
9
10
11
12
// Set the delegate when creating the Content Cards controller
contentCardsController.delegate = delegate

// Method to implement in delegate
func contentCard(
    _ controller: BrazeContentCardUI.ViewController,
    shouldProcess clickAction: Braze.ContentCard.ClickAction,
    card: Braze.ContentCard
  ) -> Bool {
  // Intercept the content card click action here.
  return true
}
1
2
3
4
5
6
7
8
9
10
// Set the delegate when creating the Content Cards controller
contentCardsController.delegate = delegate;

// Method to implement in delegate
- (BOOL)contentCardController:(BRZContentCardUIViewController *)controller
                shouldProcess:(NSURL *)url
                         card:(BRZContentCardRaw *)card {
  // Intercept the content card click action here.
  return YES;
}

Enregistrer les événements d’impression lorsque les cartes sont vues par des utilisateurs avec logContentCardImpressions :

1
2
3
import * as braze from "@braze/web-sdk";

braze.logContentCardImpressions([card1, card2, card3]);

Enregistrer les événements de clic sur la carte lorsque les utilisateurs interagissent avec une carte avec logContentCardClick :

1
2
3
import * as braze from "@braze/web-sdk";

braze.logContentCardClick(card);
CETTE PAGE A-T-ELLE ÉTÉ UTILE?
New Stuff!