Skip to content

Cartes de contenu

Découvrez les cartes de contenu pour le SDK de Braze, notamment les différents modèles de données et les propriétés spécifiques aux cartes disponibles pour votre application.

Conditions préalables

Avant de pouvoir utiliser les Content Cards, vous devez intégrer le SDK Web de Braze dans votre application. Cependant, aucune configuration supplémentaire n’est requise. Pour créer votre propre interface utilisateur, consultez le guide de personnalisation des Content Cards.

IU de flux standard

Pour utiliser l’IU de Content Cards incluse, vous devez spécifier où afficher le flux sur votre site web.

Dans cet exemple, nous avons un <div id="feed"></div> dans lequel nous voulons placer le flux de Content Cards. Nous utiliserons trois boutons pour masquer, afficher ou basculer le flux (masquer ou afficher en fonction de son état actuel).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<button id="toggle" type="button">Toggle Cards Feed</button>
<button id="hide" type="button">Hide Cards Feed</button>
<button id="show" type="button">Show Cards Feed</button>

<nav>
    <h1>Your Personalized Feed</h1>
    <div id="feed"></div>
</nav>

<script>
   const toggle = document.getElementById("toggle");
   const hide = document.getElementById("hide");
   const show = document.getElementById("show");
   const feed = document.getElementById("feed");

   toggle.onclick = function(){
      braze.toggleContentCards(feed);
   }

   hide.onclick = function(){
      braze.hideContentCards();
   }

   show.onclick = function(){
      braze.showContentCards(feed);
   }
</script>

Lorsque vous utilisez les méthodes toggleContentCards(parentNode, filterFunction) et showContentCards(parentNode, filterFunction), si aucun argument n’est fourni, toutes les Content Cards seront affichées dans une barre latérale à position fixe sur le côté droit de la page. Sinon, le flux sera placé dans l’option parentNode spécifiée.

Paramètres Description
parentNode Le nœud HTML dans lequel afficher les Content Cards. Si le nœud parent possède déjà une vue de Content Cards Braze comme descendant direct, les Content Cards existantes seront remplacées. Par exemple, vous devriez transmettre document.querySelector(".my-container").
filterFunction Un filtre ou une fonction de tri pour les cartes affichées dans cette vue. Invoquée avec le tableau d’objets Card, triés selon {pinned, date}. Doit retourner un tableau d’objets Card triés à afficher pour cet utilisateur. Si omis, toutes les cartes seront affichées.

Consultez la documentation de référence du SDK pour plus d’informations sur le basculement des Content Cards.

Tester les Content Cards sur le web

Vous pouvez tester votre intégration de Content Cards à l’aide des outils de développement de votre navigateur.

  1. Créez une campagne de Content Cards et ciblez votre utilisateur test.
  2. Connectez-vous au site web qui intègre votre SDK Web.
  3. Ouvrez la console de votre navigateur. Pour Chrome, faites un clic droit sur la page, sélectionnez Inspect, puis sélectionnez l’onglet Console.
  4. Exécutez ces commandes dans la console :
    • window.braze.getCachedContentCards()
    • window.braze.toggleContentCards()

Types de cartes et propriétés

Le modèle de données des Content Cards est disponible dans le SDK Web et propose les types de Content Cards suivants : ImageOnly, CaptionedImage et ClassicCard. Chaque type hérite des propriétés communes d’un modèle de base Card et possède les propriétés supplémentaires suivantes.

Modèle de carte de base

Toutes les Content Cards partagent ces propriétés :

Propriété Description
expiresAt L’horodatage UNIX du moment d’expiration de la carte.
extras (Facultatif) Données de paires clé-valeur formatées en tant qu’objet chaîne de caractères avec une valeur chaîne de caractères.
id (Facultatif) L’ID de la carte. Celui-ci sera transmis à Braze avec les événements à des fins d’analyse.
pinned Cette propriété indique si la carte a été définie comme « épinglée » dans le tableau de bord.
updated L’horodatage UNIX de la dernière modification de cette carte.
viewed Cette propriété indique si l’utilisateur a vu la carte ou non.
isControl Cette propriété vaut true lorsqu’une carte est un groupe de « contrôle » dans un test A/B.

Image uniquement

Les cartes ImageOnly sont des images cliquables en taille réelle.

Propriété Description
aspectRatio Le rapport hauteur/largeur de l’image de la carte, servant d’indication avant le chargement complet de l’image. Notez que cette propriété peut ne pas être fournie dans certaines circonstances.
categories Cette propriété est destinée uniquement à l’organisation dans votre implémentation personnalisée ; ces catégories peuvent être définies dans le compositeur du tableau de bord.
clicked Cette propriété indique si cette carte a déjà été cliquée sur cet appareil.
created L’horodatage UNIX du moment de création de la carte depuis Braze.
dismissed Cette propriété indique si cette carte a été rejetée.
dismissible Cette propriété indique si l’utilisateur peut rejeter la carte, la supprimant de la vue.
imageUrl L’URL de l’image de la carte.
linkText Le texte d’affichage de l’URL.
url L’URL qui sera ouverte après un clic sur la carte.

Image avec légende

Les cartes CaptionedImage sont des images cliquables en taille réelle accompagnées d’un texte descriptif.

Propriété Description
aspectRatio Le rapport hauteur/largeur de l’image de la carte, servant d’indication avant le chargement complet de l’image. Notez que cette propriété peut ne pas être fournie dans certaines circonstances.
categories Cette propriété est destinée uniquement à l’organisation dans votre implémentation personnalisée ; ces catégories peuvent être définies dans le compositeur du tableau de bord.
clicked Cette propriété indique si cette carte a déjà été cliquée sur cet appareil.
created L’horodatage UNIX du moment de création de la carte depuis Braze.
dismissed Cette propriété indique si cette carte a été rejetée.
dismissible Cette propriété indique si l’utilisateur peut rejeter la carte, la supprimant de la vue.
imageUrl L’URL de l’image de la carte.
linkText Le texte d’affichage de l’URL.
title Le texte du titre de cette carte.
url L’URL qui sera ouverte après un clic sur la carte.

Classique

Le modèle ClassicCard peut contenir une image sans texte ou un texte avec image.

Propriété Description
aspectRatio Le rapport hauteur/largeur de l’image de la carte, servant d’indication avant le chargement complet de l’image. Notez que cette propriété peut ne pas être fournie dans certaines circonstances.
categories Cette propriété est destinée uniquement à l’organisation dans votre implémentation personnalisée ; ces catégories peuvent être définies dans le compositeur du tableau de bord.
clicked Cette propriété indique si cette carte a déjà été cliquée sur cet appareil.
created L’horodatage UNIX du moment de création de la carte depuis Braze.
description Le texte du corps de cette carte.
dismissed Cette propriété indique si cette carte a été rejetée.
dismissible Cette propriété indique si l’utilisateur peut rejeter la carte, la supprimant de la vue.
imageUrl L’URL de l’image de la carte.
linkText Le texte d’affichage de l’URL.
title Le texte du titre de cette carte.
url L’URL qui sera ouverte après un clic sur la carte.

Groupe de contrôle

Si vous utilisez le flux par défaut des Content Cards, les impressions et les clics sont automatiquement suivis.

Si vous utilisez une intégration personnalisée pour les Content Cards, vous devez enregistrer les impressions lorsqu’une carte de contrôle aurait été vue. Dans ce cadre, veillez à gérer les cartes de contrôle lorsque vous enregistrez des impressions dans un test A/B. Ces cartes sont vierges et, bien qu’elles ne soient pas vues par les utilisateurs, vous devez tout de même enregistrer les impressions afin de comparer leurs performances à celles des cartes hors contrôle.

Pour déterminer si une Content Card se trouve dans le groupe de contrôle d’un test A/B, vérifiez la propriété card.isControl (SDK Web v4.5.0+) ou vérifiez si la carte est une instance de ControlCard (card instanceof braze.ControlCard).

Méthodes de carte

Méthodes de flux par défaut

Utilisez ces méthodes lorsque vous affichez les Content Cards avec l’IU par défaut de Braze :

Méthode Description
showContentCards Affiche le flux par défaut des Content Cards. Rend les cartes dans un élément HTML parentNode fourni, ou sous forme de barre latérale à position fixe sur le côté droit de la page si aucun élément n’est spécifié. Accepte une filterFunction facultative pour trier ou filtrer les cartes avant l’affichage.
hideContentCards Masque le flux par défaut des Content Cards s’il est actuellement affiché.
toggleContentCards Affiche le flux par défaut des Content Cards s’il est masqué, ou le masque s’il est visible. Si vous devez afficher plusieurs flux de Content Cards simultanément, utilisez plutôt showContentCards et hideContentCards.

Méthodes de flux personnalisé

Utilisez ces méthodes lorsque vous créez votre propre IU de Content Cards :

Méthode Description
subscribeToContentCardsUpdates Enregistre une fonction de rappel invoquée chaque fois que les Content Cards sont mises à jour pour l’utilisateur actuel, par exemple au démarrage de la session. Utilisez cette méthode comme moyen principal de recevoir les données de cartes pour votre flux personnalisé. Elle doit être appelée avant openSession() pour recevoir les mises à jour de la session initiale.
getCachedContentCards Retourne toutes les cartes actuellement disponibles depuis le dernier rafraîchissement des Content Cards. Utilisez cette méthode pour afficher immédiatement les cartes au chargement de la page sans attendre une nouvelle requête serveur, par exemple lorsque l’utilisateur revient sur une page pendant une session active.
requestContentCardsRefresh Demande un rafraîchissement immédiat des Content Cards depuis les serveurs Braze. Par défaut, les cartes sont rafraîchies au démarrage de la session et lorsque le flux par défaut est rouvert. Utilisez cette méthode pour forcer un rafraîchissement à d’autres moments, par exemple après une action spécifique de l’utilisateur. Tenez compte des limites de débit.
logContentCardImpressions Enregistre des événements d’impression pour un tableau de cartes. Appelez cette méthode lorsque les cartes sont rendues et visibles par l’utilisateur. Nécessaire pour un reporting de Campaign précis lors de l’utilisation d’une IU personnalisée, car les impressions ne sont pas suivies automatiquement en dehors du flux par défaut.
logContentCardClick Enregistre un événement de clic pour une carte unique. Appelez cette méthode lorsqu’un utilisateur interagit avec une carte dans votre IU personnalisée. Nécessaire pour un reporting de Campaign précis, car les clics ne sont pas suivis automatiquement en dehors du flux par défaut.
handleBrazeAction Traite l’URL d’une carte et exécute l’action au clic configurée, y compris les actions Braze (URL brazeActions://) et la navigation URL standard. Appelez cette méthode dans votre gestionnaire de clic de carte pour vous assurer que les comportements au clic configurés dans le tableau de bord de Braze sont exécutés.
dismissCard Rejette une carte de manière programmatique, la supprimant du flux de l’utilisateur. Utilisez cette méthode pour permettre aux utilisateurs de rejeter des cartes dans votre IU personnalisée.

Pour plus de détails, reportez-vous à la documentation de référence du SDK.

Bonnes pratiques

Appeler les méthodes dans le bon ordre

Pour les flux personnalisés, les Content Cards ne sont rafraîchies au démarrage de la session que si subscribeToContentCardsUpdates() est appelée avant openSession(). Appelez vos méthodes Braze dans cet ordre :

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

// Step 1: Initialize the SDK
braze.initialize("YOUR-API-KEY", { baseUrl: "YOUR-SDK-ENDPOINT" });

// Step 2: Subscribe to card updates
braze.subscribeToContentCardsUpdates((updates) => {
  const cards = updates.cards;
  renderCards(cards);
});

// Step 3: Identify the user
braze.changeUser("USER_ID");

// Step 4: Start the session
braze.openSession();

Utiliser les cartes en cache pour conserver le contenu entre les chargements de page

Étant donné que subscribeToContentCardsUpdates() n’invoque son rappel que lorsqu’il y a de nouvelles mises à jour (par exemple au démarrage de la session), les cartes peuvent disparaître de votre flux personnalisé si un utilisateur actualise la page en cours de session. Pour éviter cela, utilisez getCachedContentCards() pour afficher immédiatement les cartes depuis le cache local, en complément de votre abonnement aux nouvelles mises à jour :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import * as braze from "@braze/web-sdk";

function renderCards(cards) {
  const container = document.getElementById("content-cards");
  container.textContent = "";
  const displayedCards = [];

  cards.forEach(card => {
    if (card instanceof braze.ClassicCard || card instanceof braze.CaptionedImage) {
      const cardElement = document.createElement("div");

      const h3 = document.createElement("h3");
      h3.textContent = card.title || "";
      cardElement.appendChild(h3);

      const p = document.createElement("p");
      p.textContent = card.description || "";
      cardElement.appendChild(p);

      if (card.imageUrl) {
        const img = document.createElement("img");
        img.src = card.imageUrl;
        img.alt = card.title || "";
        cardElement.appendChild(img);
      }

      if (card.url) {
        cardElement.addEventListener("click", () => {
          braze.logContentCardClick(card);
          braze.handleBrazeAction(card.url);
        });
      }

      container.appendChild(cardElement);
      displayedCards.push(card);
    }
  });

  if (displayedCards.length > 0) {
    braze.logContentCardImpressions(displayedCards);
  }
}

// Display cached cards immediately
const cached = braze.getCachedContentCards();
if (cached && cached.cards.length > 0) {
  renderCards(cached.cards);
}

// Subscribe to future updates
braze.subscribeToContentCardsUpdates((updates) => {
  renderCards(updates.cards);
});

Enregistrer les analyses pour les flux personnalisés

Lorsque vous utilisez une IU personnalisée, les impressions, les clics et les rejets ne sont pas suivis automatiquement. Vous devez enregistrer chaque événement manuellement :

  • Impressions : Appelez logContentCardImpressions([card1, card2, ...]) avec un tableau d’objets carte lorsque les cartes deviennent visibles pour l’utilisateur.
  • Clics : Appelez logContentCardClick(card) lorsqu’un utilisateur interagit avec une carte.
  • Comportement au clic : Appelez handleBrazeAction(card.url) pour exécuter l’action au clic configurée de la carte (comme naviguer vers une URL ou enregistrer un événement personnalisé).

Utilisation de Google Tag Manager

Google Tag Manager fonctionne en injectant le CDN de Braze (une version de notre SDK Web) directement dans le code de votre site web, ce qui signifie que toutes les méthodes du SDK sont disponibles comme si vous aviez intégré le SDK sans Google Tag Manager, sauf lors de l’implémentation des Content Cards.

Mise en place des Content Cards

Pour une intégration standard du flux de Content Cards, vous pouvez utiliser une balise Custom HTML dans Google Tag Manager. Ajoutez ce qui suit à votre balise Custom HTML, ce qui activera le flux standard de Content Cards :

1
2
3
<script>
   window.braze.showContentCards();
</script>

Configuration de balise dans Google Tag Manager d'une balise Custom HTML montrant le flux de Content Cards.

Pour plus de liberté dans la personnalisation de l’apparence de vos Content Cards et de leur flux, vous pouvez intégrer directement les Content Cards dans votre site web natif. Deux approches s’offrent à vous : utiliser l’IU de flux standard ou créer une IU de flux personnalisée.

Lors de l’implémentation de l’IU de flux standard, les méthodes Braze doivent être précédées de window.. Par exemple, braze.showContentCards doit être remplacé par window.braze.showContentCards.

Pour l’habillage du flux personnalisé, les étapes sont les mêmes que si vous aviez intégré le SDK sans GTM. Par exemple, si vous souhaitez personnaliser la largeur de votre flux de Content Cards, vous pouvez coller ce qui suit dans votre fichier CSS :

1
2
3
body .ab-feed {
    width: 800px;
}

Mise à jour des modèles

Pour obtenir la dernière version du SDK Web de Braze, effectuez les trois étapes suivantes dans votre tableau de bord Google Tag Manager :

  1. Mise à jour du modèle de balise
    Accédez à la page Templates de votre espace de travail. Vous devriez y voir une icône indiquant qu’une mise à jour est disponible.

    Page des modèles indiquant qu'une mise à jour est disponible

    Cliquez sur cette icône et, après avoir examiné la modification, cliquez sur Accept Update.

    Un écran comparant l'ancien et le nouveau modèle de balise avec un bouton « Accept Update »

  2. Mise à jour du numéro de version
    Une fois votre modèle de balise mis à jour, modifiez la balise d’initialisation Braze et mettez à jour la version du SDK avec la version major.minor la plus récente. Par exemple, si la dernière version est 4.1.2, saisissez 4.1. Vous pouvez consulter la liste des versions du SDK dans notre journal des modifications.

    Modèle d'initialisation Braze avec un champ de saisie permettant de modifier la version du SDK

  3. AQ et publication
    Vérifiez que la nouvelle version du SDK fonctionne à l’aide de l’outil de débogage de Google Tag Manager avant de publier une mise à jour de votre conteneur de balises.

Résolution des problèmes

Activer le débogage de balise

Chaque modèle de balise Braze dispose d’une case à cocher facultative GTM Tag Debugging qui peut être utilisée pour enregistrer les messages de débogage dans la console JavaScript de votre page web.

Outil de débogage de Google Tag Manager

Passer en mode débogage

Un autre moyen de déboguer votre intégration Google Tag Manager est d’utiliser la fonctionnalité de prévisualisation de Google.

Cela permet d’identifier les valeurs envoyées par la couche de données de votre page web à chaque balise Braze déclenchée et d’expliquer quelles balises ont été déclenchées ou non.

La page de résumé de la balise d'initialisation Braze fournit un aperçu de la balise, y compris des informations sur les balises déclenchées.

Vérifier le séquencement des balises pour les événements personnalisés

Si les événements personnalisés ou d’autres actions ne sont pas enregistrés dans Braze, une cause fréquente est une condition de concurrence où une balise d’action (comme Custom Event ou Purchase) se déclenche avant que la balise Braze Initialization ne soit terminée. Pour corriger cela, configurez le séquencement des balises dans GTM :

  1. Ouvrez la balise d’action qui ne s’enregistre pas correctement.
  2. Sous Advanced Settings > Tag Sequencing, sélectionnez A tag that fires before [this tag].
  3. Choisissez votre balise Braze Initialization comme balise de configuration.

Cela garantit que le SDK est entièrement initialisé avant que les balises d’action ne tentent d’envoyer des données à Braze.

Activer la journalisation détaillée

Pour capturer des journaux détaillés à des fins de résolution des problèmes, vous pouvez activer la journalisation détaillée sur votre intégration Google Tag Manager. Ces journaux apparaîtront dans l’onglet Console des outils de développement de votre navigateur.

Dans votre intégration Google Tag Manager, accédez à votre balise d’initialisation Braze et sélectionnez Enable Web SDK Logging.

La page de résumé de la balise d'initialisation Braze avec l'option Enable Web SDK Logging activée.

Conditions préalables

Avant de pouvoir utiliser les Content Cards de Braze, vous devez intégrer le SDK Android de Braze dans votre application. Cependant, aucune configuration supplémentaire n’est requise.

Fragments Google

Dans Android, le flux de Content Cards est implémenté en tant que fragment disponible dans le projet d’interface utilisateur Braze pour Android. La classe ContentCardsFragment actualise et affiche automatiquement le contenu des Content Cards et enregistre les données d’analyse d’utilisation. Les cartes qui peuvent apparaître dans le ContentCards d’un utilisateur sont créées sur le tableau de bord de Braze.

Pour savoir comment ajouter un fragment à une activité, consultez la documentation de Google sur les fragments.

Types et propriétés des cartes

Le modèle de données des Content Cards est disponible dans le SDK Android et propose les types de Content Cards uniques suivants. Chaque type partage un modèle de base, ce qui leur permet d’hériter des propriétés communes du modèle de base, en plus de posséder leurs propres propriétés uniques. Pour la documentation de référence complète, consultez com.braze.models.cards.

Modèle de carte de base

Le modèle de carte de base fournit le comportement fondamental pour toutes les cartes.

Propriété Description
getId() Renvoie l’ID de la carte défini par Braze.
getViewed() Renvoie un booléen indiquant si la carte a été lue ou non par l’utilisateur.
getExtras() Renvoie un mappage des compléments clé-valeur de cette carte.
getCreated() Renvoie le timestamp unix de l’heure de création de la carte depuis Braze.
isPinned Renvoie un booléen indiquant si la carte est épinglée.
getOpenUriInWebView() Renvoie un booléen indiquant si les URI de cette carte doivent être ouverts
dans la WebView de Braze ou non.
getExpiredAt() Récupère la date d’expiration de la carte.
isRemoved() Renvoie un booléen indiquant si l’utilisateur final a rejeté cette carte.
isDismissibleByUser() Renvoie un booléen indiquant si la carte peut être fermée par l’utilisateur.
isClicked() Renvoie un booléen indiquant si cette carte a été cliquée.
isDismissed Renvoie un booléen indiquant si la carte a été rejetée. Définissez sur true pour marquer la carte comme rejetée. Si une carte est déjà marquée comme rejetée, elle ne peut pas être marquée comme rejetée à nouveau.
isControl() Renvoie un booléen indiquant si cette carte est une carte de contrôle et ne doit pas être affichée.

Image uniquement

Les cartes avec image uniquement sont des images cliquables en taille réelle.

Propriété Description
getImageUrl() Renvoie l’URL de l’image de la carte.
getUrl() Renvoie l’URL qui sera ouverte après un clic sur la carte. Il peut s’agir d’une URL HTTP(s) ou d’une URL de protocole.
getDomain() Renvoie le texte de lien pour l’URL de propriété.

Image légendée

Les cartes d’images légendées sont des images cliquables en taille réelle accompagnées d’un texte descriptif.

Propriété Description
getImageUrl() Renvoie l’URL de l’image de la carte.
getTitle() Renvoie le texte du titre de la carte.
getDescription() Renvoie le texte du corps de la carte.
getUrl() Renvoie l’URL qui sera ouverte après un clic sur la carte. Il peut s’agir d’une URL HTTP(s) ou d’une URL de protocole.
getDomain() Renvoie le texte de lien pour l’URL de propriété.

Classique

Une carte classique sans image donnera lieu à une carte d’annonce textuelle. Si une image est incluse, vous obtiendrez une carte d’actualités brèves.

Propriété Description
getTitle() Renvoie le texte du titre de la carte.
getDescription() Renvoie le texte du corps de la carte.
getUrl() Renvoie l’URL qui sera ouverte après un clic sur la carte. Il peut s’agir d’une URL HTTP(s) ou d’une URL de protocole.
getDomain() Renvoie le texte de lien pour l’URL de propriété.
getImageUrl() Renvoie l’URL de l’image de la carte. S’applique uniquement à la carte classique d’actualités brèves.
isDismissed Renvoie un booléen indiquant si la carte a été rejetée. Définissez sur true pour marquer la carte comme rejetée. Si une carte est déjà marquée comme rejetée, elle ne peut pas être marquée comme rejetée à nouveau.

Méthodes de carte

Tous les objets de modèle de données Card proposent les méthodes d’analyse suivantes pour enregistrer les événements utilisateur sur les serveurs Braze.

Méthode Description
logImpression() Enregistre manuellement une impression sur Braze pour une carte donnée.
logClick() Enregistre manuellement un clic sur Braze pour une carte donnée.

Conditions préalables

Avant de pouvoir utiliser les Content Cards, vous devez intégrer le SDK Swift de Braze dans votre application. Cependant, aucune configuration supplémentaire n’est nécessaire.

Contextes du contrôleur de vue

L’interface utilisateur par défaut des Content Cards peut être intégrée à partir de la bibliothèque BrazeUI du SDK Braze. Créez le contrôleur de vue des Content Cards en utilisant l’instance braze. Si vous souhaitez intercepter le cycle de vie de l’interface utilisateur des Content Cards et y réagir, implémentez BrazeContentCardUIViewControllerDelegate en tant que délégué pour votre BrazeContentCardUI.ViewController.

La bibliothèque BrazeUI du SDK Swift propose deux contextes de contrôleur de vue par défaut : navigation ou modale. Cela signifie que vous pouvez intégrer les Content Cards dans ces contextes en ajoutant quelques lignes de code à votre application ou site. Les deux vues offrent des options de personnalisation et de style décrites dans le guide de personnalisation. Vous pouvez également créer un contrôleur de vue de Content Cards personnalisé au lieu d’utiliser le contrôleur standard de Braze pour bénéficier d’encore plus d’options de personnalisation — reportez-vous au tutoriel sur l’interface utilisateur des Content Cards pour voir un exemple.

Navigation

Un contrôleur de navigation est un contrôleur de vue qui gère un ou plusieurs contrôleurs de vue enfants dans une interface de navigation. Voici un exemple d’ajout d’une instance de BrazeContentCardUI.ViewController dans un contrôleur de navigation :

1
2
3
4
5
6
7
func pushViewController() {
  guard let braze = AppDelegate.braze else { return }
  let contentCardsController = BrazeContentCardUI.ViewController(braze: braze)
  // Implement and set `BrazeContentCardUIViewControllerDelegate` if you wish to intercept click actions.
  contentCardsController.delegate = self
  self.navigationController?.pushViewController(contentCardsController, animated: true)
}
1
2
3
4
5
6
- (void)pushViewController {
  BRZContentCardUIViewController *contentCardsController = [[BRZContentCardUIViewController alloc] initWithBraze:self.braze];
  // Implement and set `BrazeContentCardUIViewControllerDelegate` if you wish to intercept click actions.
  [contentCardsController setDelegate:self];
  [self.navigationController pushViewController:contentCardsController animated:YES];
}

Modale

Utilisez les présentations modales pour créer des interruptions temporaires dans le flux de travail de votre application, par exemple en demandant à l’utilisateur de fournir des informations importantes. Cette vue comporte une barre de navigation en haut et un bouton Done sur le côté de la barre. Voici un exemple d’insertion d’une instance de BrazeContentCard.ViewController dans un contrôleur modal :

1
2
3
4
5
6
7
func presentModalViewController() {
  guard let braze = AppDelegate.braze else { return }
  let contentCardsModal = BrazeContentCardUI.ModalViewController(braze: braze)
  // Implement and set `BrazeContentCardUIViewControllerDelegate` if you wish to intercept click actions.
  contentCardsModal.viewController.delegate = self
  self.navigationController?.present(contentCardsModal, animated: true, completion: nil)
}
1
2
3
4
5
6
- (void)presentModalViewController {
  BRZContentCardUIModalViewController *contentCardsModal = [[BRZContentCardUIModalViewController alloc] initWithBraze:AppDelegate.braze];
  // Implement and set `BrazeContentCardUIViewControllerDelegate` if you wish to intercept click actions.
  [contentCardsModal.viewController setDelegate:self];
  [self.navigationController presentViewController:contentCardsModal animated:YES completion:nil];
}

Pour un exemple d’utilisation des contrôleurs de vue BrazeUI, consultez les exemples d’interface utilisateur des Content Cards correspondants dans notre application Exemples.

Modèle de carte de base

Le modèle de données des Content Cards est disponible dans le module BrazeKit du SDK Swift de Braze. Ce module contient les types de Content Cards suivants, qui sont une implémentation du type Braze.ContentCard. Pour une liste complète des propriétés des Content Cards et de leur utilisation, voir la classe ContentCard.

  • Image uniquement
  • Image avec légende
  • Classique
  • Image classique
  • Contrôle

Pour accéder au modèle de données des Content Cards, appelez contentCards.cards sur votre instance braze. Voir Enregistrer les analyses pour plus d’informations sur l’abonnement aux données de cartes.

Méthodes de carte

Chaque carte est initialisée avec un objet Context, qui contient diverses méthodes pour gérer l’état de votre carte. Appelez ces méthodes lorsque vous souhaitez modifier la propriété d’état correspondante d’un objet de carte particulier.

Méthode Description
card.context?.logImpression() Enregistre l’événement d’impression de la carte de contenu.
card.context?.logClick() Enregistre l’événement de clic sur la carte de contenu.
card.context?.processClickAction() Traite une entrée ClickAction donnée.
card.context?.logDismissed() Enregistre l’événement de rejet de la carte de contenu.
card.context?.logError() Enregistre une erreur liée à la carte de contenu.
card.context?.loadImage() Charge une image de carte de contenu à partir d’une URL. Cette méthode peut être nulle si la carte de contenu n’a pas d’image.

Pour plus de détails, reportez-vous à la documentation de la classe Context

Conditions préalables

Avant de pouvoir utiliser cette fonctionnalité, vous devez intégrer le SDK Braze de Cordova.

Flux de cartes

Le SDK Braze comprend un flux de cartes par défaut. Pour afficher le flux de cartes par défaut, vous pouvez utiliser la méthode launchContentCards(). Cette méthode gère l’ensemble du suivi analytique, des rejets et du rendu des Content Cards d’un utilisateur.

Content Cards

Vous pouvez utiliser ces méthodes supplémentaires pour créer un flux de Content Cards personnalisé dans votre application :

Méthode Description
requestContentCardsRefresh() Envoie une requête en arrière-plan pour demander les dernières Content Cards au serveur du SDK Braze.
getContentCardsFromServer(successCallback, errorCallback) Récupère les Content Cards du SDK Braze. Cette fonction demande les dernières Content Cards au serveur et renvoie la liste des cartes une fois l’opération terminée.
getContentCardsFromCache(successCallback, errorCallback) Récupère les Content Cards du SDK Braze. Cette fonction renvoie la dernière liste de cartes depuis le cache local, qui a été mis à jour lors de la dernière actualisation.
logContentCardClicked(cardId) Enregistre un clic pour l’ID de carte de contenu donné.
logContentCardImpression(cardId) Enregistre une impression pour l’ID de carte de contenu donné.
logContentCardDismissed(cardId) Enregistre un rejet pour l’ID de carte de contenu donné.

À propos des cartes de contenu Flutter

Le SDK Braze comprend un flux de cartes par défaut pour vous permettre de démarrer avec les Content Cards. Pour afficher ce flux, utilisez la méthode braze.launchContentCards(). Le flux de cartes par défaut inclus avec le SDK Braze gère l’ensemble du suivi analytique, des masquages et du rendu des Content Cards d’un utilisateur.

Conditions préalables

Avant de pouvoir utiliser cette fonctionnalité, vous devrez intégrer le SDK de Flutter Braze.

Méthodes de carte

Vous pouvez utiliser ces méthodes supplémentaires pour créer un flux de Content Cards personnalisé dans votre application, disponibles sur l’interface publique du plugin :

Méthode Description
braze.requestContentCardsRefresh() Demande les dernières Content Cards au serveur du SDK Braze.
braze.logContentCardClicked(contentCard) Enregistre un clic pour l’objet Content Card donné.
braze.logContentCardImpression(contentCard) Enregistre une impression pour l’objet Content Card donné.
braze.logContentCardDismissed(contentCard) Enregistre un masquage pour l’objet Content Card donné.

Réception des données de Content Cards

Pour recevoir des données de Content Cards dans votre application Flutter, le BrazePlugin prend en charge l’envoi de données de Content Cards à l’aide de Dart Streams.

L’objet BrazeContentCard prend en charge un sous-ensemble de champs disponibles dans les objets du modèle natif, notamment description, title, image, url, extras, et plus encore.

Écouter les données de Content Cards dans la couche Dart

Pour recevoir les données de Content Cards dans la couche Dart, utilisez le code ci-dessous pour créer un StreamSubscription et appeler braze.subscribeToContentCards(). N’oubliez pas d’appeler cancel() sur l’abonnement au flux lorsqu’il n’est plus nécessaire.

1
2
3
4
5
6
7
8
9
// Create stream subscription
StreamSubscription contentCardsStreamSubscription;

contentCardsStreamSubscription = braze.subscribeToContentCards((List<BrazeContentCard> contentCards) {
  // Handle Content Cards
}

// Cancel stream subscription
contentCardsStreamSubscription.cancel();

Pour un exemple, consultez main.dart dans l’application exemple du SDK Flutter de Braze.

Transférer les données de Content Cards depuis la couche native iOS

Les données de Content Cards sont automatiquement transférées depuis les couches natives Android et iOS. Aucune configuration supplémentaire n’est requise.

Si vous utilisez le SDK Flutter 17.1.0 ou une version antérieure, le transfert des données de Content Cards depuis la couche native iOS nécessite une configuration manuelle. Votre application contient probablement un rappel contentCards.subscribeToUpdates qui appelle BrazePlugin.processContentCards(contentCards). Pour migrer vers le SDK Flutter 18.0.0, supprimez l’appel à BrazePlugin.processContentCards(_:) — le transfert des données est désormais géré automatiquement.

Pour un exemple, consultez AppDelegate.swift dans l’application exemple du SDK Flutter de Braze.

Rejouer le rappel pour les Content Cards

Pour stocker les Content Cards déclenchées avant que le rappel soit disponible et les rejouer une fois celui-ci défini, ajoutez l’entrée suivante à la map customConfigs lors de l’initialisation du BrazePlugin :

1
BrazePlugin braze = new BrazePlugin(customConfigs: {replayCallbacksConfigKey: true});

À propos des Content Cards React Native

Les SDK Braze incluent un flux de cartes par défaut pour vous permettre de démarrer avec les Content Cards. Pour afficher le flux de cartes, vous pouvez utiliser la méthode Braze.launchContentCards(). Le flux de cartes par défaut inclus avec le SDK Braze gère l’ensemble du suivi analytique, des masquages et du rendu des Content Cards d’un utilisateur.

Conditions préalables

Avant de pouvoir utiliser cette fonctionnalité, vous devrez intégrer le SDK React Native Braze.

Méthodes pour les cartes

Pour créer votre propre interface utilisateur, vous pouvez obtenir une liste des cartes disponibles et écouter les mises à jour des cartes :

1
2
3
4
5
6
7
8
9
10
11
// Set initial cards
const [cards, setCards] = useState([]);

// Listen for updates as a result of card refreshes, such as:
// a new session, a manual refresh with `requestContentCardsRefresh()`, or after the timeout period
Braze.addListener(Braze.Events.CONTENT_CARDS_UPDATED, async (update) => {
    setCards(update.cards);
});

// Manually trigger a refresh of cards
Braze.requestContentCardsRefresh();

Vous pouvez utiliser ces méthodes supplémentaires pour créer un flux de Content Cards personnalisé dans votre application :

Méthode Description
launchContentCards() Lance l’élément d’interface utilisateur Content Cards.
requestContentCardsRefresh() Demande les dernières Content Cards au serveur du SDK Braze. La liste de cartes qui en résulte est transmise à chacun des récepteurs d’événements de carte de contenu précédemment enregistrés.
getContentCards() Récupère les Content Cards du SDK Braze. Ceci renvoie une promesse qui se résout avec la dernière liste de cartes du serveur.
getCachedContentCards() Renvoie le tableau de Content Cards le plus récent du cache.
logContentCardClicked(cardId) Enregistre un clic pour l’ID de carte de contenu donné. Cette méthode est uniquement utilisée pour les analyses. Pour exécuter l’action de clic, appelez processContentCardClickAction(cardId) en plus.
logContentCardImpression(cardId) Enregistre une impression pour l’ID de carte de contenu donné.
logContentCardDismissed(cardId) Enregistre un rejet pour l’ID de carte de contenu donné.
processContentCardClickAction(cardId) Effectue l’action d’une carte particulière.

Types de cartes et propriétés

Le modèle de données Content Cards est disponible dans le SDK React Native et propose les types de cartes Content Cards suivants : Image seule, Image légendée et Classique. Il existe également un type de carte spécial Contrôle, qui est renvoyé aux utilisateurs faisant partie du groupe de contrôle pour une carte donnée. Chaque type hérite des propriétés communes d’un modèle de base en plus de ses propres propriétés uniques.

Modèle de carte de base

Le modèle de carte de base fournit un comportement fondamental pour toutes les cartes.

Propriété Description
id L’ID de la carte défini par Braze.
created L’horodatage UNIX du moment de création de la carte depuis Braze.
expiresAt L’horodatage UNIX du moment d’expiration de la carte. Lorsque la valeur est inférieure à 0, cela signifie que la carte n’expire jamais.
viewed Indique si la carte est lue ou non par l’utilisateur. Ceci n’enregistre pas les analyses.
clicked Indique si la carte a été cliquée par l’utilisateur.
pinned Indique si la carte est épinglée.
dismissed Indique si l’utilisateur a fermé cette carte. Marquer comme rejetée une carte qui l’a déjà été n’aura aucun effet.
dismissible Détermine si la carte peut être rejetée par l’utilisateur.
url (Facultatif) La chaîne de caractères de l’URL associée à l’action de clic sur la carte.
openURLInWebView Indique si les URL de cette carte doivent être ouvertes dans le WebView de Braze ou non.
isControl Indique si cette carte est une carte de contrôle. Les cartes de contrôle ne doivent pas être affichées à l’utilisateur.
extras Le mappage des suppléments clé-valeur pour cette carte.

Pour une référence complète de la carte de base, consultez la documentation Android et iOS.

Image seule

Les cartes image seule sont des images cliquables en taille réelle.

Propriété Description
type Le type de Content Card, IMAGE_ONLY.
image L’URL de l’image de la carte.
imageAspectRatio Le rapport hauteur/largeur de l’image de la carte. Il sert d’indication avant que le chargement de l’image ne soit terminé. Veuillez noter que la propriété peut ne pas être fournie dans certaines circonstances.

Pour une référence complète de la carte image seule, consultez la documentation Android et iOS.

Image légendée

Les cartes d’images légendées sont des images cliquables en taille réelle accompagnées d’un texte descriptif.

Propriété Description
type Le type de Content Card, CAPTIONED.
image L’URL de l’image de la carte.
imageAspectRatio Le rapport hauteur/largeur de l’image de la carte. Il sert d’indication avant que le chargement de l’image ne soit terminé. Veuillez noter que la propriété peut ne pas être fournie dans certaines circonstances.
title Le texte du titre de la carte.
cardDescription Le texte de description de la carte.
domain (Facultatif) Le texte du lien pour l’URL de propriété, par exemple, "braze.com/resources/". Il peut être affiché sur l’interface utilisateur de la carte pour indiquer l’action ou la direction du clic sur la carte.

Pour une référence complète de la carte d’image légendée, consultez la documentation Android et iOS.

Classique

Les cartes classiques comportent un titre, une description et une image facultative à gauche du texte.

Propriété Description
type Le type de Content Card, CLASSIC.
image (Facultatif) L’URL de l’image de la carte.
title Le texte du titre de la carte.
cardDescription Le texte de description de la carte.
domain (Facultatif) Le texte du lien pour l’URL de propriété, par exemple, "braze.com/resources/". Il peut être affiché sur l’interface utilisateur de la carte pour indiquer l’action ou la direction du clic sur la carte.

Pour une référence complète de la Content Card classique (annonce textuelle), consultez la documentation Android et iOS. Pour la carte image classique (nouvelles brèves), consultez la documentation Android et iOS.

Contrôle

Les cartes de contrôle incluent toutes les propriétés de base, avec quelques différences importantes. Et surtout :

  • La propriété isControl est garantie à true.
  • La propriété extras est garantie vide.

Pour une référence complète de la carte de contrôle, consultez la documentation Android et iOS.

Conditions préalables

Avant de pouvoir utiliser les cartes de contenu, vous devez intégrer le SDK Swift de Braze dans votre application. Vous devrez ensuite suivre les étapes de configuration de votre application tvOS.

Configurer votre application tvOS

Étape 1 : Créer une nouvelle application iOS

Dans Braze, sélectionnez Paramètres > Paramètres des applications, puis Ajouter une application. Saisissez un nom pour votre application tvOS, sélectionnez iOS, et non tvOS, puis sélectionnez Ajouter une application.

ALT_TEXT.

Étape 2 : Obtenir la clé API de votre application

Dans les paramètres de votre application, sélectionnez votre nouvelle appli tvOS, puis prenez note de la clé API de votre appli. Vous utiliserez cette clé pour configurer votre application dans Xcode.

ALT_TEXT

Étape 3 : Intégrer BrazeKit

Utilisez la clé API de votre application pour intégrer le SDK Braze Swift à votre projet tvOS dans Xcode. Il vous suffit d’intégrer BrazeKit à partir du SDK Swift de Braze.

Étape 4 : Créez votre interface utilisateur personnalisée

Braze ne proposant pas d’interface utilisateur par défaut pour les cartes de contenu sur tvOS, vous devrez la personnaliser vous-même. Pour une description complète, consultez notre tutoriel étape par étape : Personnalisation des cartes de contenu pour tvOS. Pour obtenir un exemple de projet, consultez les exemples du SDK Swift de Braze.

Conditions préalables

Avant de pouvoir utiliser cette fonctionnalité, vous devez intégrer le SDK d’Unity Braze.

Affichage natif des cartes de contenu

Vous pouvez afficher l’interface utilisateur par défaut pour les cartes de contenu à l’aide de l’appel suivant :

1
Appboy.AppboyBinding.DisplayContentCards();

Réception des données de carte de contenu dans Unity

Vous pouvez lister des objets de jeu Unity pour être avertis des cartes de contenu entrantes. Nous recommandons de définir des auditeurs d’objets de jeu à partir de l’éditeur de configuration Braze.

Si vous devez configurer votre auditeur d’objet de jeu lors de l’exécution, utilisez AppboyBinding.ConfigureListener() et spécifiez BrazeUnityMessageType.CONTENT_CARDS_UPDATED.

Notez que vous devrez également appeler AppboyBinding.RequestContentCardsRefresh() pour commencer à recevoir des données dans votre auditeur d’objet de jeu sur iOS.

Analyse des cartes de contenu

Les messages de type string entrants reçus dans votre rappel d’objet de jeu de cartes de contenu peuvent être analysés dans notre objet de modèle ContentCard pré-fourni pour plus de commodité.

L’analyse des cartes de contenu nécessite une analyse JSON, voir l’exemple suivant pour plus de détails :

Exemple de fonction de rappel des cartes de contenu
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
void ExampleCallback(string message) {
  try {
    JSONClass json = (JSONClass)JSON.Parse(message);

    // Content Card data is contained in the `mContentCards` field of the top level object.
    if (json["mContentCards"] != null) {
      JSONArray jsonArray = (JSONArray)JSON.Parse(json["mContentCards"].ToString());
      Debug.Log(String.Format("Parsed content cards array with {0} cards", jsonArray.Count));

      // Iterate over the card array to parse individual cards.
      for (int i = 0; i < jsonArray.Count; i++) {
        JSONClass cardJson = jsonArray[i].AsObject;
        try {
          ContentCard card = new ContentCard(cardJson);
          Debug.Log(String.Format("Created card object for card: {0}", card));

          // Example of logging Content Card analytics on the ContentCard object 
          card.LogImpression();
          card.LogClick();
        } catch {
          Debug.Log(String.Format("Unable to create and log analytics for card {0}", cardJson));
        }
      }
    }
  } catch {
    throw new ArgumentException("Could not parse content card JSON message.");
  }
}

Rafraîchir les cartes de contenu

Pour actualiser les cartes de contenu de Braze, appelez l’une des méthodes suivantes :

1
2
3
4
// results in a network request to Braze
AppboyBinding.RequestContentCardsRefresh()

AppboyBinding.RequestContentCardsRefreshFromCache()

Analyse

Les clics et les impressions doivent être enregistrés manuellement pour les cartes de contenu non affichées directement par Braze.

Utilisez LogClick() et LogImpression() sur Contentcardable pour enregistrer les clics et les impressions pour des cartes spécifiques.

À propos des Content Cards .NET MAUI

Le SDK Braze .NET MAUI (anciennement Xamarin) comprend un flux de cartes par défaut pour vous aider à démarrer avec les Content Cards. Le flux de cartes par défaut inclus avec le SDK Braze gère l’ensemble du suivi analytique, des rejets et du rendu des Content Cards d’un utilisateur.

Conditions préalables

Avant de pouvoir utiliser cette fonctionnalité, il est nécessaire d’intégrer le SDK .NET MAUI Braze.

Types et propriétés des cartes

Le SDK Braze .NET MAUI propose trois types de Content Cards uniques qui partagent un modèle de base : Bannière, Image avec légende et Classique. Chaque type hérite des propriétés communes d’un modèle de base et possède les propriétés supplémentaires suivantes.

Modèle de carte de base

Propriété Description
idString L’ID de la carte défini par Braze.
created L’horodatage UNIX du moment de création de la carte depuis Braze.
expiresAt L’horodatage UNIX du moment d’expiration de la carte. Lorsque la valeur est inférieure à 0, cela signifie que la carte n’expire jamais.
viewed Indique si la carte est lue ou non par l’utilisateur. Ceci n’enregistre pas d’analyse.
clicked Indique si la carte a été cliquée par l’utilisateur.
pinned Indique si la carte est épinglée.
dismissed Indique si l’utilisateur a rejeté cette carte. Marquer comme rejetée une carte qui l’a déjà été sera sans effet.
dismissible Indique si la carte peut être rejetée par l’utilisateur.
urlString (Facultatif) La chaîne de caractères d’URL associée à l’action de clic sur la carte.
openUrlInWebView Indique si les URL de cette carte doivent être ouvertes dans la WebView Braze ou non.
isControlCard Indique si cette carte est une carte de contrôle. Les cartes de contrôle ne doivent pas être affichées à l’utilisateur.
extras Le mappage des suppléments clé-valeur pour cette carte.
isTest Indique si cette carte est une carte de test.

Pour une référence complète de la carte de base, consultez la documentation Android et iOS.

Bannière

Les cartes de type bannière sont des images cliquables en taille réelle.

Propriété Description
image L’URL de l’image de la carte.
imageAspectRatio Le rapport hauteur/largeur de l’image de la carte. Il sert d’indication avant que le chargement de l’image ne soit terminé. Notez que cette propriété peut ne pas être fournie dans certaines circonstances.

Pour une référence complète de la carte bannière, consultez la documentation Android et iOS (désormais renommée en image uniquement).

Image avec légende

Les cartes d’image avec légende sont des images cliquables en taille réelle accompagnées d’un texte descriptif.

Propriété Description
image L’URL de l’image de la carte.
imageAspectRatio Le rapport hauteur/largeur de l’image de la carte. Il sert d’indication avant que le chargement de l’image ne soit terminé. Notez que cette propriété peut ne pas être fournie dans certaines circonstances.
title Le texte du titre de la carte.
cardDescription Le texte de description de la carte.
domain (Facultatif) Le texte du lien pour l’URL de propriété, par exemple, "braze.com/resources/". Il peut être affiché sur l’interface utilisateur de la carte pour indiquer l’action ou la direction du clic sur la carte.

Pour une référence complète de la carte d’image avec légende, consultez la documentation Android et iOS.

Classique

Les cartes classiques comportent un titre, une description et une image facultative à gauche du texte.

Propriété Description
image (Facultatif) L’URL de l’image de la carte.
title Le texte du titre de la carte.
cardDescription Le texte de description de la carte.
domain (Facultatif) Le texte du lien pour l’URL de propriété, par exemple, "braze.com/resources/". Il peut être affiché sur l’interface utilisateur de la carte pour indiquer l’action ou la direction du clic sur la carte.

Pour une référence complète de la Content Card classique (annonce textuelle), consultez la documentation Android et iOS. Pour une référence complète de la carte d’image classique (courte nouvelle), consultez la documentation Android et iOS.

Méthodes de carte

Vous pouvez utiliser ces méthodes supplémentaires pour créer un flux de Content Cards personnalisé dans votre application :

Méthode Description
requestContentCardsRefresh() Demande les dernières Content Cards au serveur du SDK Braze.
getContentCards() Récupère les Content Cards depuis le SDK Braze. Cela renverra la dernière liste de cartes du serveur.
logContentCardClicked(cardId) Enregistre un clic pour l’ID de Content Card donné. Cette méthode est uniquement utilisée pour l’analytique.
logContentCardImpression(cardId) Enregistre une impression pour l’ID de Content Card donné.
logContentCardDismissed(cardId) Enregistre un rejet pour l’ID de Content Card donné.
New Stuff!