Skip to content

Logo BrazeIntégrer le SDK Braze

Découvrez comment intégrer le SDK de Braze. Chaque SDK est hébergé dans son propre dépôt public GitHub, qui comprend des exemples d’applications entièrement compilables que vous pouvez utiliser pour tester les fonctionnalités de Braze ou implémenter parallèlement à vos propres applications. Pour en savoir plus, consultez Références, dépôts et exemples d’applications. Pour plus d’informations générales sur le SDK, consultez Premiers pas : aperçu de l’intégration.

Pour consulter le contenu des fichiers README du SDK reproduit dans la documentation, voir Guides des dépôts.

À propos du SDK Web de Braze

Le SDK Web de Braze vous permet de collecter des données analytiques et d’afficher des messages in-app enrichis, des notifications push et des messages Content Cards à vos utilisateurs web. Pour en savoir plus, consultez la documentation de référence JavaScript de Braze.

Intégrer le SDK Web

Vous pouvez intégrer le SDK Web de Braze à l’aide des méthodes suivantes. Pour des options supplémentaires, consultez autres méthodes d’intégration.

  • Intégration basée sur le code : Intégrez le SDK Web de Braze directement dans votre base de code à l’aide de votre gestionnaire de paquets préféré ou du CDN de Braze. Cela vous donne un contrôle total sur la manière dont le SDK est chargé et configuré.
  • Google Tag gestionnaire : Une solution sans code qui vous permet d’intégrer le SDK Web de Braze sans modifier le code de votre site. Pour en savoir plus, consultez Google Tag gestionnaire avec le SDK de Braze.

Étape 1 : Installer la bibliothèque Braze

Vous pouvez installer la bibliothèque Braze à l’aide de l’une des méthodes suivantes. Toutefois, si votre site web utilise une Content-Security-Policy, consultez la section Content Security Policy avant de continuer.

Si votre site utilise les gestionnaires de paquets NPM ou Yarn, vous pouvez ajouter le paquet NPM de Braze comme dépendance.

Les définitions Typescript sont incluses depuis la version 3.0.0. Pour les notes de mise à niveau de la version 2.x vers la version 3.x, consultez notre journal des modifications.

1
2
3
npm install --save @braze/web-sdk
# or, using yarn:
# yarn add @braze/web-sdk

Une fois installée, vous pouvez utiliser import ou require de la manière habituelle :

1
2
3
import * as braze from "@braze/web-sdk";
// or, using `require`
const braze = require("@braze/web-sdk");

Ajoutez le SDK Web de Braze directement à votre HTML en référençant notre script hébergé sur le CDN, qui charge la bibliothèque de manière asynchrone.

Étape 2 : Initialiser le SDK

Une fois le SDK Web de Braze ajouté à votre site web, initialisez la bibliothèque avec la clé API et l’URL de l’endpoint du SDK disponibles dans Paramètres > Paramètres de l’application dans votre tableau de bord de Braze. Pour une liste complète des options pour braze.initialize(), ainsi que nos autres méthodes JavaScript, consultez la documentation JavaScript de Braze.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// initialize the SDK
braze.initialize('YOUR-API-KEY-HERE', {
    baseUrl: "YOUR-SDK-ENDPOINT-HERE",
    enableLogging: false, // set to `true` for debugging
    allowUserSuppliedJavascript: false, // set to `true` to support custom HTML messages
});

// Enable automatic display of in-app messages
// Required if you want in-app messages to display automatically when triggered
braze.automaticallyShowInAppMessages();

// if you use Content Cards
braze.subscribeToContentCardsUpdates(function(cards){
    // cards have been updated
});

// optionally set the current user's external ID before starting a new session
// you can also call `changeUser` later in the session after the user logs in
if (isLoggedIn){
    braze.changeUser(userIdentifier);
}

// `openSession` should be called last - after `changeUser` and `automaticallyShowInAppMessages`
braze.openSession();

Résolution des problèmes de sessions manquantes pour les utilisateurs anonymes

Si vous constatez un comportement de type « session manquante » ou si vous n’êtes pas en mesure de suivre la session des utilisateurs qui restent anonymes sur le web, assurez-vous que votre intégration appelle braze.openSession() lors de l’initialisation.

  • Scénario : Les utilisateurs anonymes peuvent renvoyer un ID Braze, mais les données de session sont vides ou manquantes.
  • Cause : L’implémentation n’appelle pas braze.openSession().
  • Résolution : Appelez toujours braze.openSession() après l’initialisation (et après braze.changeUser() si vous définissez un ID externe).

Pour en savoir plus, consultez Étape 2 : Initialiser le SDK.

Conditions préalables

Avant de pouvoir utiliser cette méthode d’intégration, vous devez créer un compte et un conteneur pour Google Tag gestionnaire.

Dans Google Tag gestionnaire, sélectionnez votre espace de travail, puis choisissez Templates. Dans le volet Tag Template, sélectionnez Search Gallery.

La page des modèles pour un exemple d'espace de travail dans Google Tag Manager.

Étape 2 : Ajouter le modèle de balise d’initialisation

Dans la galerie de modèles, recherchez braze-inc, puis sélectionnez Braze Initialization Tag.

La galerie de modèles présentant les différents modèles « braze-inc ».

Sélectionnez Add to workspace > Add.

La page « Braze Initialization Tag » dans Google Tag Manager.

Étape 3 : Configurer la balise

Dans la section Templates, sélectionnez le modèle que vous venez d’ajouter.

La page « Templates » dans Google Tag Manager affichant le modèle Braze Initialization Tag.

Sélectionnez l’icône en forme de crayon pour ouvrir le menu déroulant Tag Configuration.

La vignette Tag Configuration avec l'icône « crayon » affichée.

Saisissez les informations minimales requises :

Champ Description
API Key Votre clé API Braze, disponible dans le tableau de bord de Braze sous Settings > App Settings.
API Endpoint L’URL de votre endpoint REST. Votre endpoint dépend de l’URL de Braze pour votre instance.
SDK Version La version MAJOR.MINOR la plus récente du SDK Web Braze indiquée dans le journal des modifications. Par exemple, si la dernière version est 4.1.2, saisissez 4.1. Pour en savoir plus, consultez À propos de la gestion des versions du SDK.

Pour accéder à des paramètres d’initialisation supplémentaires, sélectionnez Braze Initialization Options et choisissez les options dont vous avez besoin.

La liste des options d'initialisation Braze sous « Tag Configuration ».

Étape 4 : Choisir les options d’initialisation

La balise d’initialisation Braze propose les options suivantes. La plupart correspondent directement aux InitializationOptions du SDK Web, et certaines correspondent à des méthodes du SDK Web que la balise appellera lors de l’initialisation. Sélectionnez les options qui correspondent à vos besoins d’intégration :

Option GTM Configuration ou méthode du SDK Web Description
Allow HTML In-App Messages allowUserSuppliedJavascript Active les messages in-app HTML, les bannières et les actions de clic JavaScript fournies par l’utilisateur. Nécessaire pour les messages in-app HTML et les bannières utilisant du HTML personnalisé. Activez cette option uniquement si vous faites confiance au contenu HTML et JavaScript, car elle autorise l’exécution de JavaScript fourni par l’utilisateur.
App Version Number appVersion, appVersionNumber Version de l’application pour la segmentation (par exemple, 1.2.3.4).
Automatically Open New Session braze.openSession() Ouvre une nouvelle session après l’initialisation du SDK en appelant cette méthode automatiquement.
Automatically show new in app messages braze.automaticallyShowInAppMessages() Affiche automatiquement les nouveaux messages in-app lorsqu’ils arrivent du serveur, en appelant cette méthode après l’initialisation.
Disable Automatic Push Token Maintenance disablePushTokenMaintenance Empêche le SDK de synchroniser les jetons de notification push avec le backend de Braze lors des nouvelles sessions.
Disable Automatic Service Worker Registration manageServiceWorkerExternally À utiliser si vous enregistrez et gérez vous-même le service de traitement.
Disable Cookies noCookies Utilise localStorage à la place des cookies pour les données utilisateur/session. Empêche la reconnaissance entre sous-domaines.
Disable Font Awesome doNotLoadFontAwesome Empêche le SDK de charger Font Awesome depuis le CDN. À utiliser si votre site dispose déjà de Font Awesome.
Enable SDK Authentication enableSdkAuthentication Active l’authentification SDK.
Enable Web SDK Logging enableLogging Active la journalisation dans la console à des fins de débogage. À retirer avant la mise en production.
Minimum Interval Between Triggered Messages minimumIntervalBetweenTriggerActionsInSeconds Nombre minimum de secondes entre les actions de déclenchement (valeur par défaut : 30).
Open Cards in New Tab openCardsInNewTab Ouvre les liens des Content Cards dans un nouvel onglet lorsque l’interface par défaut du flux est utilisée.
Service Worker Location serviceWorkerLocation Chemin personnalisé pour le fichier du service de traitement (par défaut : /service-worker.js).
Session Timeout (seconds) sessionTimeoutInSeconds Délai d’expiration de la session en secondes (valeur par défaut : 1 800).

Pour les options non exposées dans le modèle GTM (telles que contentSecurityNonce, localization ou devicePropertyAllowlist), utilisez plutôt l’initialisation à l’exécution.

Étape 5 : Configurer le déclenchement sur toutes les pages

La balise d’initialisation doit être exécutée sur toutes les pages de votre site. Cela vous permet d’utiliser les méthodes du SDK Braze et d’enregistrer les analyses des notifications push Web.

Étape 6 : Vérifier votre intégration

Vous pouvez vérifier votre intégration en utilisant l’une des options suivantes :

  • Option 1 : À l’aide de l’outil de débogage de Google Tag gestionnaire, vérifiez que la balise d’initialisation Braze se déclenche correctement sur les pages ou événements configurés.
  • Option 2 : Vérifiez les requêtes réseau envoyées à Braze depuis votre page Web. De plus, la bibliothèque globale window.braze devrait maintenant être définie.

Filtrage du trafic des robots

Le nombre de MAU peut inclure un pourcentage d’utilisateurs robots, ce qui gonfle votre nombre d’utilisateurs actifs par mois. Bien que le SDK Web Braze intègre une détection de certains robots d’indexation courants (tels que les robots des moteurs de recherche et les robots de prévisualisation des réseaux sociaux), il est particulièrement important de rester proactif en mettant en place des solutions robustes pour détecter les robots, car les mises à jour du SDK ne permettent pas à elles seules de détecter systématiquement tous les nouveaux robots.

Limites de la détection des robots côté SDK

Le SDK Web comprend une détection de base des robots fondée sur l’agent utilisateur, qui filtre les robots d’indexation connus. Cependant, cette approche présente certaines limites :

  • De nouveaux robots apparaissent constamment : Les entreprises spécialisées dans l’intelligence artificielle et d’autres acteurs développent régulièrement de nouveaux robots qui peuvent se dissimuler afin d’échapper à la détection.
  • Usurpation de l’agent utilisateur : Les robots sophistiqués peuvent imiter les agents utilisateurs légitimes des navigateurs.
  • Robots personnalisés : Les utilisateurs non techniciens peuvent désormais créer facilement des robots à l’aide de grands modèles de langage (LLM), rendant le comportement des robots imprévisible.

Mise en œuvre du filtrage des robots

La solution la plus robuste consiste à mettre en œuvre votre propre logique de filtrage des robots avant d’initialiser le SDK Braze. Les approches courantes comprennent :

Exiger une interaction de l’utilisateur

Envisagez de retarder l’initialisation du SDK jusqu’à ce qu’un utilisateur effectue une interaction significative, telle que l’acceptation d’une bannière de consentement aux cookies, le défilement ou un clic. Cette approche est souvent plus facile à mettre en œuvre et peut s’avérer très efficace pour filtrer le trafic des robots.

Détection personnalisée des robots

Mettez en place une détection personnalisée en fonction des modèles de trafic spécifiques de vos robots, par exemple :

  • Analyse des chaînes de caractères des agents utilisateurs pour identifier les modèles que vous avez détectés dans votre trafic
  • Vérification des indicateurs de navigateur sans interface graphique
  • Utilisation de services tiers de détection des robots
  • Surveillance des signaux comportementaux spécifiques à votre site

Exemple d’initialisation conditionnelle :

1
2
3
4
5
6
7
8
// Only initialize Braze if your custom bot detection determines this is not a bot
if (!isLikelyBot()) {
  braze.initialize('YOUR-API-KEY-HERE', {
    baseUrl: "YOUR-SDK-ENDPOINT-HERE"
  });
  braze.automaticallyShowInAppMessages();
  braze.openSession();
}

Bonnes pratiques

  • Analysez régulièrement vos données MAU et les tendances de trafic web afin d’identifier tout nouveau comportement de robot.
  • Effectuez des tests approfondis pour vous assurer que votre filtrage des robots n’empêche pas le suivi des utilisateurs légitimes.
  • Mettez à jour votre logique de filtrage en fonction des modèles de trafic des robots que vous observez dans votre environnement.

Configurations optionnelles

Journalisation

Pour activer rapidement la journalisation, vous pouvez ajouter ?brazeLogging=true comme paramètre à l’URL de votre site web. Vous pouvez également activer la journalisation basique ou personnalisée. Pour un aperçu centralisé sur toutes les plateformes, consultez Journalisation détaillée.

Journalisation basique

Utilisez enableLogging pour journaliser les messages de débogage basiques dans la console JavaScript avant l’initialisation du SDK.

1
enableLogging: true

Votre méthode devrait ressembler à ce qui suit :

1
2
3
4
5
braze.initialize('API-KEY', {
    baseUrl: 'API-ENDPOINT',
    enableLogging: true
});
braze.openSession();

Utilisez braze.toggleLogging() pour journaliser les messages de débogage basiques dans la console JavaScript après l’initialisation du SDK. Votre méthode devrait ressembler à ce qui suit :

1
2
3
4
5
6
braze.initialize('API-KEY', {
    baseUrl: 'API-ENDPOINT',
});
braze.openSession();
...
braze.toggleLogging();

Journalisation personnalisée

Utilisez setLogger pour journaliser des messages de débogage personnalisés dans la console JavaScript. Contrairement aux journaux basiques, ces journaux ne sont pas visibles par les utilisateurs.

1
setLogger(loggerFunction: (message: STRING) => void): void

Remplacez STRING par votre message sous la forme d’un paramètre de chaîne de caractères unique. Votre méthode devrait ressembler à ce qui suit :

1
2
3
4
5
braze.initialize('API-KEY');
braze.setLogger(function(message) {
    console.log("Braze Custom Logger: " + message);
});
braze.openSession();

Mise à jour du SDK

Lorsque vous référencez le SDK Web de Braze depuis notre réseau de diffusion de contenu, par exemple https://js.appboycdn.com/web-sdk/a.a/braze.min.js (comme recommandé par nos instructions d’intégration par défaut), vos utilisateurs reçoivent automatiquement les mises à jour mineures (corrections de bugs et fonctionnalités rétrocompatibles, versions a.a.a à a.a.z dans cet exemple) lorsqu’ils actualisent votre site.

Cependant, lorsque nous publions des changements majeurs, nous vous demandons de mettre à jour manuellement le SDK Web de Braze afin de vous assurer que les changements non rétrocompatibles n’impactent pas votre intégration. De plus, si vous téléchargez notre SDK et l’hébergez vous-même, vous ne recevez aucune mise à jour de version automatiquement et devez effectuer la mise à jour manuellement pour bénéficier des dernières fonctionnalités et corrections de bugs.

Vous pouvez rester informé de nos dernières versions en suivant notre flux de versions avec le lecteur RSS ou le service de votre choix, et consulter notre journal des modifications pour un historique complet des versions de notre SDK Web. Pour mettre à jour le SDK Web de Braze :

  • Mettez à jour la version de la bibliothèque Braze en modifiant le numéro de version de https://js.appboycdn.com/web-sdk/[OLD VERSION NUMBER]/braze.min.js, ou dans les dépendances de votre gestionnaire de paquets.
  • Si vous avez intégré les notifications push Web, mettez à jour le fichier du service de traitement sur votre site. Par défaut, celui-ci se trouve à l’emplacement /service-worker.js dans le répertoire racine de votre site, mais cet emplacement peut être personnalisé dans certaines intégrations. Vous devez accéder au répertoire racine pour héberger un fichier de service de traitement.

Vous devez mettre à jour ces deux fichiers de manière coordonnée pour garantir un fonctionnement correct.

Autres méthodes d’intégration

Pages mobiles accélérées (AMP)

Voir plus

Étape 1 : Inclure le script AMP web push

Ajoutez la balise de script asynchrone suivante dans votre en-tête :

1
<script async custom-element="amp-web-push" src="https://cdn.ampproject.org/v0/amp-web-push-0.1.js"></script>

Étape 2 : Ajouter les widgets d’abonnement

Ajoutez un widget dans le corps de votre HTML permettant aux utilisateurs de s’abonner et de se désabonner des notifications push.

1
2
3
4
5
6
7
8
9
<!-- A subscription widget -->
<amp-web-push-widget visibility="unsubscribed" layout="fixed" width="250" height="80">
  <button on="tap:amp-web-push.subscribe">Subscribe to Notifications</button>
</amp-web-push-widget>

<!-- An unsubscription widget -->
<amp-web-push-widget visibility="subscribed" layout="fixed" width="250" height="80">
  <button on="tap:amp-web-push.unsubscribe">Unsubscribe from Notifications</button>
</amp-web-push-widget>

Étape 3 : Ajouter helper-iframe et permission-dialog

Le composant AMP Web Push crée une fenêtre contextuelle pour gérer les abonnements push. Vous devez donc ajouter les fichiers d’aide suivants à votre projet pour activer cette fonctionnalité :

Étape 4 : Créer un fichier de service de traitement

Créez un fichier service-worker.js dans le répertoire racine de votre site web et ajoutez l’extrait de code suivant :

Étape 5 : Configurer l’élément HTML AMP web push

Ajoutez l’élément HTML amp-web-push suivant dans le corps de votre HTML. Gardez à l’esprit que vous devez ajouter votre apiKey et baseUrl en tant que paramètres de requête à service-worker-URL.

1
2
3
4
5
6
7
<amp-web-push
layout="nodisplay"
id="amp-web-push"
helper-iframe-url="FILE_PATH_TO_YOUR_HELPER_IFRAME"
permission-dialog-url="FILE_PATH_TO_YOUR_PERMISSION_DIALOG"
service-worker-url="FILE_PATH_TO_YOUR_SERVICE_WORKER?apiKey={YOUR_API_KEY}&baseUrl={YOUR_BASE_URL}"
>

Asynchronous Module Definition (AMD)

Désactiver la prise en charge

Si votre site utilise RequireJS ou un autre chargeur de modules AMD, mais que vous préférez charger le SDK Web de Braze via l’une des autres options de cette liste, vous pouvez charger une version de la bibliothèque qui n’inclut pas la prise en charge d’AMD. Cette version de la bibliothèque peut être chargée depuis l’emplacement CDN suivant :

Chargeur de modules

Si vous utilisez RequireJS ou d’autres chargeurs de modules AMD, nous vous recommandons d’héberger vous-même une copie de notre bibliothèque et de la référencer comme vous le feriez avec d’autres ressources :

1
2
3
4
5
6
require(['path/to/braze.min.js'], function(braze) {
  braze.initialize('YOUR-API-KEY-HERE', { baseUrl: 'YOUR-SDK-ENDPOINT' });
  // Required if you want in-app messages to display automatically
  braze.automaticallyShowInAppMessages();
  braze.openSession();
});

Electron

Electron ne prend pas officiellement en charge les notifications push Web (voir : ce ticket GitHub). Il existe d’autres solutions open source que vous pouvez essayer, mais qui n’ont pas été testées par Braze.

Framework Jest

Lorsque vous utilisez Jest, vous pouvez voir une erreur similaire à SyntaxError: Unexpected token 'export'. Pour résoudre ce problème, ajustez votre configuration dans package.json pour ignorer le SDK Braze :

1
2
3
4
5
"jest": {
  "transformIgnorePatterns": [
    "/node_modules/(?!@braze)"
  ]
}

Frameworks SSR

Le SDK Web s’exécute dans un environnement de navigateur. Dans les frameworks SSR, initialisez Braze dans un composant côté client uniquement afin que votre serveur n’exécute jamais le code du SDK.

Import dynamique indépendant du framework

Si votre framework n’est pas répertorié dans cette section, vous pouvez importer dynamiquement Braze depuis un hook de cycle de vie côté client uniquement.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// MyComponent/braze-exports.js
// Export the parts of the SDK that you need.
export { initialize, openSession } from "@braze/web-sdk";

// MyComponent/MyComponent.js
useEffect(() => {
    import("./braze-exports.js").then(({ initialize, openSession }) => {
        initialize("YOUR-API-KEY-HERE", {
            baseUrl: "YOUR-SDK-ENDPOINT",
            enableLogging: true,
        });
        openSession();
    });
}, []);

Si vous utilisez webpack, vous pouvez importer dynamiquement uniquement les exports spécifiques du SDK.

1
2
3
4
5
6
7
8
9
10
11
12
13
// MyComponent.js
useEffect(() => {
    import(
        /* webpackExports: ["initialize", "openSession"] */
        "@braze/web-sdk"
    ).then(({ initialize, openSession }) => {
        initialize("YOUR-API-KEY-HERE", {
            baseUrl: "YOUR-SDK-ENDPOINT",
            enableLogging: true,
        });
        openSession();
    });
}, []);

Hook partagé pour Next.js et Remix

Créez un hook réutilisable useBraze et appelez-le à proximité de la racine de votre application.

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
// hooks/useBraze.ts
import { useEffect, useRef } from "react";

export function useBraze() {
  const didInit = useRef(false);

  useEffect(() => {
    if (didInit.current) {
      return;
    }
    didInit.current = true;

    import("@braze/web-sdk")
      .then((braze) => {
        const initialized = braze.initialize("YOUR-API-KEY-HERE", {
          // Use your Braze Web SDK endpoint, such as sdk.iad-01.braze.com.
          baseUrl: "YOUR-SDK-ENDPOINT",
          enableLogging: false,
        });
        if (!initialized) {
          return;
        }

        // Optional: Identify signed-in users before opening a session.
        // braze.changeUser("external-id");

        // Optional: Automatically display in-app messages.
        // braze.automaticallyShowInAppMessages();
        braze.openSession();
      })
      .catch((error) => {
        console.error("Unable to load Braze SDK:", error);
      });
  }, []);
}

Next.js (App Router)

Appelez useBraze dans un composant client qui encapsule votre application.

1
2
3
4
5
6
7
8
9
10
// app/components/AppRoot.tsx
"use client";

import type { ReactNode } from "react";
import { useBraze } from "../hooks/useBraze";

export function AppRoot({ children }: { children: ReactNode }) {
  useBraze();
  return <>{children}</>;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// app/layout.tsx
import type { ReactNode } from "react";
import { AppRoot } from "./components/AppRoot";

export default function RootLayout({
  children,
}: {
  children: ReactNode;
}) {
  return (
    <html lang="en">
      <body>
        <AppRoot>{children}</AppRoot>
      </body>
    </html>
  );
}

Next.js (Pages Router)

Appelez useBraze en haut de votre composant d’application personnalisé.

1
2
3
4
5
6
7
8
9
10
11
// pages/_app.tsx
import type { AppProps } from "next/app";
import { useBraze } from "../hooks/useBraze";

export default function App({ Component, pageProps }: AppProps) {
  useBraze();

  return (
    <Component {...pageProps} />
  );
}

Remix

Appelez useBraze en haut du composant de votre route racine.

Pour les exemples de validation Remix en local, exécutez PORT=4013 npm run dev.

1
2
3
4
5
6
7
8
9
// app/root.tsx
import { Outlet } from "@remix-run/react";
import { useBraze } from "./hooks/useBraze";

export default function App() {
  useBraze();

  return <Outlet />;
}

Journaliser des événements et mettre à jour les utilisateurs

Après que useBraze a initialisé le SDK à la racine de votre application, d’autres composants client peuvent appeler les méthodes Braze. Un schéma courant consiste à les appeler dans des actions utilisateur, telles que onClick ou onSubmit. Dans cet exemple, les méthodes du SDK sont chargées dans le gestionnaire de clic plutôt qu’en haut du fichier. Cela permet de garder le SDK Web hors du code serveur et de ne charger que ce dont cette action a besoin. Le commentaire webpackExports indique à webpack quelles méthodes inclure, ce qui maintient un bundle plus léger.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// app/components/BuyButton.tsx
"use client";

export function BuyButton() {
  const handleClick = async () => {
    const { logCustomEvent, logPurchase, getUser } = await import(
      /* webpackExports: ["logCustomEvent", "logPurchase", "getUser"] */
      "@braze/web-sdk"
    );

    getUser()?.setCustomUserAttribute("last_purchase_date", "2026-05-04");
    logCustomEvent("clicked_buy", { source: "product_page" });
    logPurchase("sku_123", 19.99, "USD");
  };

  return <button onClick={handleClick}>Buy</button>;
}

Cet exemple montre un composant BuyButton qui journalise l’activité lorsqu’un utilisateur clique sur Buy. Premièrement, il importe uniquement logCustomEvent, logPurchase et getUser au moment du clic. Ensuite, il met à jour un attribut utilisateur, journalise un événement personnalisé et journalise un achat. Ce schéma vous permet de centraliser l’initialisation dans useBraze, tout en suivant les actions significatives depuis n’importe quel composant client.

Si vous utilisez Remix avec Vite et que les imports depuis la racine du paquet échouent au moment de l’exécution, utilisez la solution de contournement Vite existante. Pour plus d’informations, consultez Vite.

Pour une liste complète des méthodes disponibles, consultez la documentation de référence JavaScript de Braze.

Tealium iQ

Tealium iQ offre une intégration Braze clé en main. Pour configurer l’intégration, recherchez Braze dans l’interface de gestion des balises Tealium, puis fournissez la clé API du SDK Web depuis votre tableau de bord.

Pour plus de détails ou pour une assistance approfondie sur la configuration Tealium, consultez notre documentation d’intégration ou contactez votre gestionnaire de compte Tealium.

Vite

Si vous utilisez Vite et que vous voyez un avertissement concernant des dépendances circulaires ou Uncaught TypeError: Class extends value undefined is not a constructor or null, vous devrez peut-être exclure le SDK Braze de sa découverte de dépendances :

1
2
3
optimizeDeps: {
    exclude: ['@braze/web-sdk']
},

Autres gestionnaires de balises

Braze peut également être compatible avec d’autres solutions de gestion de balises en suivant nos instructions d’intégration au sein d’une balise HTML personnalisée. Contactez un conseiller Braze si vous avez besoin d’aide pour évaluer ces solutions.

Intégrer le SDK Android

Étape 1 : Mettre à jour la configuration de votre build Gradle

Dans la configuration du dépôt de votre projet (par exemple, settings.gradle, settings.gradle.kts ou le fichier build.gradle de niveau supérieur), ajoutez mavenCentral() à votre liste de dépôts. Cette syntaxe est identique pour Groovy et Kotlin DSL.

1
2
3
repositories {
  mavenCentral()
}

Ensuite, ajoutez Braze à vos dépendances. Dans les exemples suivants, remplacez SDK_VERSION par la version actuelle de votre SDK Android Braze. Pour la liste complète des versions, consultez le journal des modifications.

Si vous ne prévoyez pas d’utiliser les composants d’interface utilisateur Braze, ajoutez ce qui suit à vos dépendances.

1
2
3
4
dependencies {
    implementation 'com.braze:android-sdk-base:SDK_VERSION' // (Required) Adds dependencies for the base Braze SDK.
    implementation 'com.braze:android-sdk-location:SDK_VERSION' // (Optional) Adds dependencies for Braze location services.
}
1
2
3
4
dependencies {
    implementation("com.braze:android-sdk-base:SDK_VERSION") // (Required) Adds dependencies for the base Braze SDK.
    implementation("com.braze:android-sdk-location:SDK_VERSION") // (Optional) Adds dependencies for Braze location services.
}

Dans votre fichier gradle/libs.versions.toml :

1
2
3
4
5
6
[versions]
braze = "SDK_VERSION"

[libraries]
braze-android-sdk-base = { group = "com.braze", name = "android-sdk-base", version.ref = "braze" }
braze-android-sdk-location = { group = "com.braze", name = "android-sdk-location", version.ref = "braze" }

Ensuite, dans votre fichier build.gradle ou build.gradle.kts, ajoutez les dépendances suivantes. Cette syntaxe est identique pour Groovy et Kotlin DSL.

1
2
3
4
dependencies {
    implementation(libs.braze.android.sdk.base) // (Required) Adds dependencies for the base Braze SDK.
    implementation(libs.braze.android.sdk.location) // (Optional) Adds dependencies for Braze location services.
}

Si vous prévoyez d’utiliser les composants d’interface utilisateur Braze, ajoutez ce qui suit à vos dépendances.

1
2
3
4
dependencies {
    implementation 'com.braze:android-sdk-ui:SDK_VERSION' // (Required) Adds dependencies for the Braze SDK and Braze UI components.
    implementation 'com.braze:android-sdk-location:SDK_VERSION' // (Optional) Adds dependencies for Braze location services.
}
1
2
3
4
dependencies {
    implementation("com.braze:android-sdk-ui:SDK_VERSION") // (Required) Adds dependencies for the Braze SDK and Braze UI components.
    implementation("com.braze:android-sdk-location:SDK_VERSION") // (Optional) Adds dependencies for Braze location services.
}

Dans votre fichier gradle/libs.versions.toml :

1
2
3
4
5
6
[versions]
braze = "SDK_VERSION"

[libraries]
braze-android-sdk-ui = { group = "com.braze", name = "android-sdk-ui", version.ref = "braze" }
braze-android-sdk-location = { group = "com.braze", name = "android-sdk-location", version.ref = "braze" }

Ensuite, dans votre fichier build.gradle ou build.gradle.kts, ajoutez les dépendances suivantes. Cette syntaxe est identique pour Groovy et Kotlin DSL.

1
2
3
4
dependencies {
    implementation(libs.braze.android.sdk.ui) // (Required) Adds dependencies for the Braze SDK and Braze UI components.
    implementation(libs.braze.android.sdk.location) // (Optional) Adds dependencies for Braze location services.
}

Étape 2 : Configurer votre fichier braze.xml

Créez un fichier braze.xml dans le dossier res/values de votre projet. Si vous utilisez un cluster de données spécifique ou si vous disposez d’un endpoint personnalisé préexistant, vous devez également spécifier l’endpoint dans votre fichier braze.xml.

Le contenu de ce fichier doit ressembler à l’extrait de code suivant. Assurez-vous de remplacer YOUR_APP_IDENTIFIER_API_KEY par l’identifiant figurant sur la page Manage Settings du tableau de bord de Braze. Connectez-vous sur dashboard.braze.com pour trouver l’adresse de votre cluster.

1
2
3
4
5
<?xml version="1.0" encoding="utf-8"?>
<resources>
  <string translatable="false" name="com_braze_api_key">YOUR_APP_IDENTIFIER_API_KEY</string>
  <string translatable="false" name="com_braze_custom_endpoint">YOUR_CUSTOM_ENDPOINT_OR_CLUSTER</string>
</resources>

Étape 3 : Ajouter les permissions à AndroidManifest.xml

Ensuite, ajoutez les permissions suivantes à votre fichier AndroidManifest.xml :

1
2
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

Étape 4 : Activer l’initialisation différée (optionnel)

Pour utiliser l’initialisation différée, la version minimale suivante du SDK Braze est requise :

Étape 4.1 : Mettre à jour votre fichier braze.xml

L’initialisation différée est désactivée par défaut. Pour l’activer, utilisez l’une des options suivantes :

Dans le fichier braze.xml de votre projet, définissez com_braze_enable_delayed_initialization sur true.

1
<bool name="com_braze_enable_delayed_initialization">true</bool>

Pour activer l’initialisation différée à l’exécution, utilisez la méthode suivante.

1
Braze.enableDelayedInitialization(context);
1
Braze.enableDelayedInitialization(context)

Étape 4.2 : Configurer l’analyse des notifications push (optionnel)

Lorsque l’initialisation différée est activée, les analyses des notifications push sont mises en file d’attente par défaut. Cependant, vous pouvez choisir de mettre explicitement en file d’attente ou d’ignorer les analyses des notifications push.

Mise en file d’attente explicite

Pour mettre explicitement en file d’attente les analyses des notifications push, choisissez l’une des options suivantes :

Dans votre fichier braze.xml, définissez com_braze_delayed_initialization_analytics_behavior sur QUEUE :

1
<string name="com_braze_delayed_initialization_analytics_behavior">QUEUE</string>

Ajoutez QUEUE à votre méthode Braze.enableDelayedInitialization() :

1
Braze.enableDelayedInitialization(context, DelayedInitializationAnalyticsBehavior.QUEUE);
1
Braze.enableDelayedInitialization(context, DelayedInitializationAnalyticsBehavior.QUEUE)
Ignorer

Pour ignorer les analyses des notifications push, choisissez l’une des options suivantes :

Dans votre fichier braze.xml, définissez com_braze_delayed_initialization_analytics_behavior sur DROP :

1
<string name="com_braze_delayed_initialization_analytics_behavior">DROP</string>

Ajoutez DROP à la méthode Braze.enableDelayedInitialization() :

1
Braze.enableDelayedInitialization(context, DelayedInitializationAnalyticsBehavior.DROP);
1
Braze.enableDelayedInitialization(context, DelayedInitializationAnalyticsBehavior.DROP)

Étape 4.3 : Initialiser manuellement le SDK

Après la période de délai choisie, utilisez la méthode Braze.disableDelayedInitialization() pour initialiser manuellement le SDK.

1
Braze.disableDelayedInitialization(context);
1
Braze.disableDelayedInitialization(context)

Étape 5 : Activer le suivi des sessions utilisateur

Lorsque vous activez le suivi des sessions utilisateur, les appels à openSession(), closeSession(), ensureSubscribedToInAppMessageEvents() et l’enregistrement de InAppMessageManager peuvent être gérés automatiquement.

Pour enregistrer les rappels du cycle de vie des activités, ajoutez le code suivant à la méthode onCreate() de votre classe Application.

1
2
3
4
5
6
7
public class MyApplication extends Application {
  @Override
  public void onCreate() {
    super.onCreate();
    registerActivityLifecycleCallbacks(new BrazeActivityLifecycleCallbackListener());
  }
}
1
2
3
4
5
6
class MyApplication : Application() {
  override fun onCreate() {
    super.onCreate()
    registerActivityLifecycleCallbacks(BrazeActivityLifecycleCallbackListener())
  }
}

Pour la liste des paramètres disponibles, consultez BrazeActivityLifecycleCallbackListener.

Test du suivi des sessions

Si vous rencontrez des problèmes lors des tests, activez la journalisation détaillée, puis utilisez logcat pour détecter les appels openSession et closeSession manquants dans vos activités.

  1. Dans Braze, accédez à Overview, sélectionnez votre application, puis dans le menu déroulant Display Data For, choisissez Today. La page « Overview » dans Braze, avec le champ « Display Data For » défini sur « Today ».
  2. Ouvrez votre application, puis actualisez le tableau de bord de Braze. Vérifiez que vos indicateurs ont augmenté de 1.
  3. Naviguez dans votre application et vérifiez qu’une seule session a été enregistrée dans Braze.
  4. Envoyez l’application en arrière-plan pendant au moins 10 secondes, puis ramenez-la au premier plan. Vérifiez qu’une nouvelle session a été enregistrée.

Configurations optionnelles

Configuration au moment de l’exécution

Pour définir vos options Braze dans le code plutôt que dans votre fichier braze.xml, utilisez la configuration au moment de l’exécution. Si une valeur existe aux deux emplacements, la valeur définie au moment de l’exécution sera utilisée à la place. Une fois que tous les paramètres requis sont fournis au moment de l’exécution, vous pouvez supprimer votre fichier braze.xml.

Dans l’exemple suivant, un objet builder est créé puis transmis à Braze.configure(). Notez que seules certaines des options disponibles au moment de l’exécution sont présentées—consultez notre KDoc pour la liste complète.

1
2
3
4
5
6
7
8
BrazeConfig brazeConfig = new BrazeConfig.Builder()
        .setApiKey("api-key-here")
        .setCustomEndpoint("YOUR_CUSTOM_ENDPOINT_OR_CLUSTER")
        .setSessionTimeout(60)
        .setHandlePushDeepLinksAutomatically(true)
        .setGreatNetworkDataFlushInterval(10)
        .build();
Braze.configure(this, brazeConfig);
1
2
3
4
5
6
7
8
val brazeConfig = BrazeConfig.Builder()
        .setApiKey("api-key-here")
        .setCustomEndpoint("YOUR_CUSTOM_ENDPOINT_OR_CLUSTER")
        .setSessionTimeout(60)
        .setHandlePushDeepLinksAutomatically(true)
        .setGreatNetworkDataFlushInterval(10)
        .build()
Braze.configure(this, brazeConfig)

Identifiant publicitaire Google

L’identifiant publicitaire Google (GAID) est un identifiant utilisateur optionnel, anonyme, unique et réinitialisable destiné à la publicité, fourni par les services Google Play. Le GAID permet aux utilisateurs de réinitialiser leur identifiant, de refuser les publicités ciblées par centres d’intérêt dans les applications Google Play, et offre aux développeurs un système simple et standardisé pour continuer à monétiser leurs applications.

L’identifiant publicitaire Google n’est pas collecté automatiquement par le SDK Braze et doit être défini manuellement via la méthode Braze.setGoogleAdvertisingId().

1
2
3
4
5
6
7
8
9
10
11
new Thread(new Runnable() {
  @Override
  public void run() {
    try {
      AdvertisingIdClient.Info idInfo = AdvertisingIdClient.getAdvertisingIdInfo(getApplicationContext());
      Braze.getInstance(getApplicationContext()).setGoogleAdvertisingId(idInfo.getId(), idInfo.isLimitAdTrackingEnabled());
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}).start();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
suspend fun fetchAndSetAdvertisingId(
  context: Context,
  scope: CoroutineScope = GlobalScope
) {
  scope.launch(Dispatchers.IO) {
    try {
      val idInfo = AdvertisingIdClient.getAdvertisingIdInfo(context)
      Braze.getInstance(context).setGoogleAdvertisingId(
        idInfo.id,
        idInfo.isLimitAdTrackingEnabled
      )
    } catch (e: Exception) {
      e.printStackTrace()
    }
  }
}

Suivi de la localisation

Pour activer la collecte de la localisation par Braze, définissez com_braze_enable_location_collection sur true dans votre fichier braze.xml :

1
<bool name="com_braze_enable_location_collection">true</bool>

Journalisation

Par défaut, le niveau de journalisation du SDK Android de Braze est défini sur INFO. Vous pouvez supprimer ces journaux ou définir un niveau de journalisation différent, tel que VERBOSE, DEBUG ou WARN.

Activer les journaux

Pour vous aider à résoudre les problèmes dans votre application, ou pour réduire les délais de prise en charge par le support Braze, vous pouvez activer les journaux détaillés pour le SDK. Lorsque vous envoyez des journaux détaillés au support Braze, assurez-vous qu’ils commencent dès le lancement de votre application et se terminent bien après l’apparition de votre problème. Pour un aperçu centralisé, consultez Journalisation détaillée. Pour apprendre à interpréter la sortie des journaux, consultez Lire les journaux détaillés.

Gardez à l’esprit que les journaux détaillés sont uniquement destinés à votre environnement de développement, vous devrez donc les désactiver avant de publier votre application.

Pour activer les journaux directement dans votre application, ajoutez ce qui suit à la méthode onCreate() de votre application, avant toute autre méthode.

1
BrazeLogger.setLogLevel(Log.MIN_LOG_LEVEL);
1
BrazeLogger.logLevel = Log.MIN_LOG_LEVEL

Remplacez MIN_LOG_LEVEL par la constante du niveau de journalisation que vous souhaitez définir comme niveau minimum. Tous les journaux d’un niveau >= à votre MIN_LOG_LEVEL défini seront transmis à la méthode Log par défaut d’Android. Tous les journaux < à votre MIN_LOG_LEVEL défini seront ignorés.

Constante Valeur Description
VERBOSE 2 Journalise les messages les plus détaillés pour le débogage et le développement.
DEBUG 3 Journalise des messages descriptifs pour le débogage et le développement.
INFO 4 Journalise des messages informatifs pour les points importants généraux.
WARN 5 Journalise des messages d’avertissement pour identifier des situations potentiellement problématiques.
ERROR 6 Journalise des messages d’erreur indiquant une défaillance de l’application ou des problèmes graves.
ASSERT 7 Journalise des messages d’assertion lorsque des conditions sont fausses pendant le développement.

Par exemple, le code suivant transmettra les niveaux de journalisation 2, 3, 4, 5, 6 et 7 à la méthode Log.

1
BrazeLogger.setLogLevel(Log.VERBOSE);
1
BrazeLogger.logLevel = Log.VERBOSE

Pour activer les journaux dans le fichier braze.xml, ajoutez ce qui suit à votre fichier :

1
<integer name="com_braze_logger_initial_log_level">MIN_LOG_LEVEL</integer>

Remplacez MIN_LOG_LEVEL par la valeur du niveau de journalisation que vous souhaitez définir comme niveau minimum. Tous les journaux d’un niveau >= à votre MIN_LOG_LEVEL défini seront transmis à la méthode Log par défaut d’Android. Tous les journaux < à votre MIN_LOG_LEVEL défini seront ignorés.

Constante Valeur Description
VERBOSE 2 Journalise les messages les plus détaillés pour le débogage et le développement.
DEBUG 3 Journalise des messages descriptifs pour le débogage et le développement.
INFO 4 Journalise des messages informatifs pour les points importants généraux.
WARN 5 Journalise des messages d’avertissement pour identifier des situations potentiellement problématiques.
ERROR 6 Journalise des messages d’erreur indiquant une défaillance de l’application ou des problèmes graves.
ASSERT 7 Journalise des messages d’assertion lorsque des conditions sont fausses pendant le développement.

Par exemple, le code suivant transmettra les niveaux de journalisation 2, 3, 4, 5, 6 et 7 à la méthode Log.

1
<integer name="com_braze_logger_initial_log_level">2</integer>

Vérifier les journaux détaillés

Pour vérifier que vos journaux sont définis sur VERBOSE, regardez si V/Braze apparaît quelque part dans vos journaux. Si c’est le cas, les journaux détaillés ont été activés avec succès. Par exemple :

1
2077-11-19 16:22:49.591 ? V/Braze v9.0.01 .bo.app.d3: Request started

Supprimer les journaux

Pour supprimer tous les journaux du SDK Android de Braze, définissez le niveau de journalisation sur BrazeLogger.SUPPRESS dans la méthode onCreate() de votre application avant toute autre méthode.

1
BrazeLogger.setLogLevel(BrazeLogger.SUPPRESS);
1
BrazeLogger.setLogLevel(BrazeLogger.SUPPRESS)

Clés API multiples

Le cas d’usage le plus courant pour les clés API multiples est la séparation des clés API entre les variantes de build de débogage et de production.

Pour basculer facilement entre plusieurs clés API dans vos builds, nous recommandons de créer un fichier braze.xml distinct pour chaque variante de build concernée. Une variante de build est une combinaison de type de build et de variante de produit. Par défaut, les nouveaux projets Android sont configurés avec les types de build debug et release et sans variantes de produit.

Pour chaque variante de build concernée, créez un nouveau fichier braze.xml dans le répertoire src/<build variant name>/res/values/. Lorsque la variante de build est compilée, elle utilisera la nouvelle clé API.

1
2
3
4
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="com_braze_api_key">REPLACE_WITH_YOUR_BUILD_VARIANT_API_KEY</string>
</resources>

Mode exclusif TalkBack pour les messages in-app

Conformément aux directives d’accessibilité Android, le SDK Android de Braze propose Android TalkBack par défaut. Pour vous assurer que seul le contenu des messages in-app est lu à voix haute — sans inclure d’autres éléments de l’écran tels que la barre de titre de l’application ou la navigation — vous pouvez activer le mode exclusif pour TalkBack.

Pour activer le mode exclusif pour les messages in-app :

1
<bool name="com_braze_device_in_app_message_accessibility_exclusive_mode_enabled">true</bool>
1
2
3
val brazeConfigBuilder = BrazeConfig.Builder()
brazeConfigBuilder.setIsInAppMessageAccessibilityExclusiveModeEnabled(true)
Braze.configure(this, brazeConfigBuilder.build())
1
2
3
BrazeConfig.Builder brazeConfigBuilder = new BrazeConfig.Builder()
brazeConfigBuilder.setIsInAppMessageAccessibilityExclusiveModeEnabled(true);
Braze.configure(this, brazeConfigBuilder.build());

R8 et ProGuard

La configuration de la réduction de code est automatiquement incluse dans votre intégration Braze.

Les applications clientes qui obfusquent le code Braze doivent stocker les fichiers de mappage de version pour que Braze puisse interpréter les traces de pile. Si vous souhaitez conserver l’intégralité du code Braze, ajoutez ce qui suit à votre fichier ProGuard :

1
2
-keep class bo.app.** { *; }
-keep class com.braze.** { *; }

Intégration du SDK Swift

Vous pouvez intégrer et personnaliser le SDK Braze Swift à l’aide du gestionnaire de paquets Swift (SPM), de CocoaPods ou de méthodes d’intégration manuelles. Pour plus d’informations sur les différents symboles du SDK, consultez la documentation de référence Braze Swift.

Conditions préalables

Avant de commencer, vérifiez que votre environnement est pris en charge par la dernière version du SDK Braze Swift.

Étape 1 : Installer le SDK Braze Swift

Nous vous recommandons d’utiliser le gestionnaire de paquets Swift (SwiftPM) ou CocoaPods pour installer le SDK Braze Swift. Vous pouvez également installer le SDK manuellement.

Étape 1.1 : Importer la version du SDK

Ouvrez votre projet et accédez aux paramètres de votre projet. Sélectionnez l’onglet Swift Packages et cliquez sur le bouton d’ajout sous la liste des paquets.

Paramètres du projet Xcode avec l'onglet Swift Packages et le bouton d'ajout de paquet.

Saisissez l’URL de notre dépôt SDK Swift iOS https://github.com/braze-inc/braze-swift-sdk dans le champ de texte. Dans la section Dependency Rule, sélectionnez la version du SDK. Enfin, cliquez sur Add Package.

Boîte de dialogue Xcode d'ajout de paquet avec l'URL du dépôt du SDK Braze Swift saisie.

Étape 1.2 : Sélectionner vos paquets

Le SDK Swift de Braze sépare les fonctionnalités en bibliothèques autonomes pour offrir aux développeurs un meilleur contrôle sur les fonctionnalités à importer dans leurs projets.

Paquet Détails
BrazeKit Bibliothèque SDK principale avec prise en charge de l’analytique et des notifications push.
BrazeLocation Bibliothèque de localisation avec prise en charge de l’analytique de localisation et de la surveillance des géorepérages.
BrazeUI Bibliothèque d’interface utilisateur fournie par Braze pour les messages in-app, les Content Cards et les bannières. Importez cette bibliothèque si vous avez l’intention d’utiliser les composants d’interface utilisateur par défaut.
À propos des bibliothèques d’extension
Paquet Détails
BrazeNotificationService Bibliothèque d’extension du service de notification prenant en charge les notifications push enrichies.
BrazePushStory Bibliothèque d’extension de contenu de notification fournissant la prise en charge des Push Stories.

Sélectionnez le paquet qui correspond le mieux à vos besoins et cliquez sur Add Package. Veillez à sélectionner au minimum BrazeKit.

Liste des produits de paquets Xcode avec BrazeKit sélectionné avant l'ajout du paquet.

Étape 1.1 : Installer CocoaPods

Pour des instructions détaillées, consultez le guide de démarrage de CocoaPods. Sinon, vous pouvez exécuter la commande suivante pour démarrer rapidement :

1
$ sudo gem install cocoapods

Si vous rencontrez des difficultés, consultez le guide de résolution des problèmes de CocoaPods.

Étape 1.2 : Construire le Podfile

Ensuite, créez un fichier dans le répertoire de votre projet Xcode nommé Podfile.

Ajoutez la ligne suivante à votre Podfile :

1
2
3
target 'YourAppTarget' do
  pod 'BrazeKit'
end

BrazeKit contient la bibliothèque principale du SDK, avec la prise en charge de l’analytique et des notifications push.

Nous vous suggérons de versionner Braze afin que les mises à jour du pod récupèrent automatiquement tout ce qui est inférieur à une mise à jour mineure de version. Cela ressemble à pod 'BrazeKit' ~> Major.Minor.Build. Si vous souhaitez intégrer automatiquement la dernière version du SDK Braze, même avec des modifications majeures, vous pouvez utiliser pod 'BrazeKit' dans votre Podfile.

À propos des bibliothèques supplémentaires

Le SDK Swift de Braze sépare les fonctionnalités en bibliothèques autonomes pour offrir aux développeurs un meilleur contrôle sur les fonctionnalités à importer dans leurs projets. En plus de BrazeKit, vous pouvez ajouter les bibliothèques suivantes à votre Podfile :

Bibliothèque Détails
pod 'BrazeLocation' Bibliothèque de localisation avec prise en charge de l’analytique de localisation et de la surveillance des géorepérages.
pod 'BrazeUI' Bibliothèque d’interface utilisateur fournie par Braze pour les messages in-app, les Content Cards et les bannières. Importez cette bibliothèque si vous avez l’intention d’utiliser les composants d’interface utilisateur par défaut.
Bibliothèques d’extension

BrazeNotificationService et BrazePushStory sont des modules d’extension qui fournissent des fonctionnalités supplémentaires et ne doivent pas être ajoutés directement à la cible de votre application principale. Vous devrez créer des cibles d’extension distinctes pour chacun de ces modules et importer les modules Braze dans leurs cibles correspondantes.

Bibliothèque Détails
pod 'BrazeNotificationService' Bibliothèque d’extension du service de notification prenant en charge les notifications push enrichies.
pod 'BrazePushStory' Bibliothèque d’extension de contenu de notification fournissant la prise en charge des Push Stories.

Étape 1.3 : Installer le SDK

Pour installer le CocoaPod du SDK Braze, accédez au répertoire de votre projet d’application Xcode dans votre terminal et exécutez la commande suivante :

1
pod install

À ce stade, vous devriez pouvoir ouvrir le nouvel espace de travail du projet Xcode créé par CocoaPods. Assurez-vous d’utiliser cet espace de travail Xcode au lieu de votre projet Xcode.

Un dossier Braze Example décompressé pour afficher le nouveau fichier « BrazeExample.workspace ».

Mise à jour du SDK à l’aide de CocoaPods

Pour mettre à jour un CocoaPod, il vous suffit d’exécuter la commande suivante dans votre répertoire de projet :

1
pod update

Étape 1.1 : Télécharger le SDK Braze

Accédez à la page de publication du SDK Braze sur GitHub, puis téléchargez braze-swift-sdk-prebuilt.zip.

La page de publication du SDK Braze sur GitHub.

Étape 1.2 : Choisir vos frameworks

Le SDK Swift de Braze contient une variété de XCFrameworks autonomes, ce qui vous donne la liberté d’intégrer les fonctionnalités que vous souhaitez—sans avoir besoin de toutes les intégrer. Référez-vous au tableau suivant pour choisir vos XCFrameworks :

Paquet Requis ? Description
BrazeKit Oui Bibliothèque SDK principale avec prise en charge de l’analytique et des notifications push.
BrazeLocation Non Bibliothèque de localisation avec prise en charge de l’analytique de localisation et de la surveillance des géorepérages.
BrazeUI Non Bibliothèque d’interface utilisateur fournie par Braze pour les messages in-app, les Content Cards et les bannières. Importez cette bibliothèque si vous avez l’intention d’utiliser les composants d’interface utilisateur par défaut.
BrazeNotificationService Non Bibliothèque d’extension du service de notification prenant en charge les notifications push enrichies. N’ajoutez pas cette bibliothèque directement à la cible de votre application principale, mais ajoutez plutôt la bibliothèque BrazeNotificationService séparément.
BrazePushStory Non Bibliothèque d’extension de contenu de notification prenant en charge les Push Stories. N’ajoutez pas cette bibliothèque directement à la cible de votre application principale, mais ajoutez plutôt la bibliothèque BrazePushStory séparément.
BrazeKitCompat Non Bibliothèque de compatibilité contenant toutes les classes et méthodes Appboy et ABK* qui étaient disponibles dans le Appboy-iOS-SDK version 4.X.X. Pour plus de détails sur l’utilisation, reportez-vous au scénario de migration minimal dans le guide de migration.
BrazeUICompat Non Bibliothèque de compatibilité contenant toutes les classes et méthodes ABK* qui étaient disponibles dans la bibliothèque AppboyUI du Appboy-iOS-SDK version 4.X.X. Pour plus de détails sur l’utilisation, reportez-vous au scénario de migration minimal dans le guide de migration.
SDWebImage Non Dépendance utilisée uniquement par BrazeUICompat dans le scénario de migration minimal.

Étape 1.3 : Préparer vos fichiers

Décidez si vous souhaitez utiliser des XCFrameworks statiques ou dynamiques, puis préparez vos fichiers :

  1. Créez un répertoire temporaire pour vos XCFrameworks.
  2. Dans braze-swift-sdk-prebuilt, ouvrez le répertoire dynamic et déplacez BrazeKit.xcframework dans votre répertoire. Votre répertoire devrait ressembler à ceci :
    1
    2
    
     temp_dir
     └── BrazeKit.xcframework
    
  3. Déplacez chacun de vos XCFrameworks choisis dans votre répertoire temporaire. Votre répertoire devrait ressembler à ceci :
    1
    2
    3
    4
    5
    
     temp_dir
     ├── BrazeKit.xcframework
     ├── BrazeKitCompat.xcframework
     ├── BrazeLocation.xcframework
     └── SDWebImage.xcframework
    

Étape 1.4 : Intégrer vos frameworks

Ensuite, intégrez les XCFrameworks dynamiques ou statiques que vous avez préparés précédemment :

Dans votre projet Xcode, sélectionnez votre cible de build, puis General. Sous Frameworks, Libraries, and Embedded Content, glissez-déposez les fichiers que vous avez préparés précédemment.

Exemple de projet Xcode avec chaque bibliothèque Braze configurée sur « Embed & Sign ».

Erreurs courantes pour les projets Objective-C

Si votre projet Xcode ne contient que des fichiers Objective-C, il se peut que vous obteniez des erreurs de « symbole manquant » lorsque vous essayez de compiler votre projet. Pour corriger ces erreurs, ouvrez votre projet et ajoutez un fichier Swift vide à votre arborescence de fichiers. Cela forcera votre chaîne d’outils de compilation à intégrer le Swift Runtime et à lier les frameworks appropriés lors de la compilation.

1
FILE_NAME.swift

Remplacez FILE_NAME par n’importe quelle chaîne de caractères sans espace. Votre fichier devrait ressembler à ceci :

1
empty_swift_file.swift

Étape 2 : Configurer l’initialisation différée (facultatif)

Vous pouvez choisir de retarder l’initialisation du SDK Braze Swift, ce qui est utile si votre application doit charger une configuration ou attendre le consentement de l’utilisateur avant de démarrer le SDK. L’initialisation différée garantit que les notifications push Braze et les jetons push reçus avant l’initialisation du SDK sont mis en file d’attente et traités une fois le SDK initialisé.

Pour utiliser l’initialisation différée, la version minimale requise du SDK Braze est la suivante :

Étape 2.1 : Préparer l’initialisation différée

Appelez Braze.prepareForDelayedInitialization() le plus tôt possible dans le cycle de vie de votre application, idéalement dans ou avant application(_:didFinishLaunchingWithOptions:). Cela garantit que les notifications push reçues avant l’initialisation du SDK sont correctement capturées et traitées ultérieurement.

1
2
3
4
5
6
7
8
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
  // Prepare the SDK for delayed initialization
  Braze.prepareForDelayedInitialization()

  // ... Additional non-Braze setup code

  return true
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@main
struct MyApp: App {
  @UIApplicationDelegateAdaptor var appDelegate: AppDelegate

  var body: some Scene {
    WindowGroup {
      ContentView()
    }
  }
}

class AppDelegate: NSObject, UIApplicationDelegate {
  func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
    // Prepare the SDK for delayed initialization
    Braze.prepareForDelayedInitialization()

    // ... Additional non-Braze setup code

    return true
  }
}
1
2
3
4
5
6
7
8
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  // Prepare the SDK for delayed initialization
  [Braze prepareForDelayedInitialization];

  // ... Additional non-Braze setup code

  return YES;
}

Lorsque vous utilisez l’initialisation différée, l’automatisation des notifications push est implicitement activée. Vous pouvez personnaliser la configuration de l’automatisation des notifications push en transmettant un paramètre pushAutomation.

Étape 2.2 : Configurer le comportement de l’analytique push (facultatif)

Lorsque l’initialisation différée est activée, les données analytiques push sont mises en file d’attente par défaut. Cependant, vous pouvez choisir de mettre explicitement en file d’attente ou d’ignorer les données analytiques push.

Mettre explicitement en file d’attente

Pour mettre explicitement en file d’attente les données analytiques push (comportement par défaut), transmettez .queue au paramètre analyticsBehavior. Les événements analytiques push mis en file d’attente avant l’initialisation seront traités et envoyés au serveur lors de l’initialisation.

1
Braze.prepareForDelayedInitialization(analyticsBehavior: .queue)
1
[Braze prepareForDelayedInitializationWithAnalyticsBehavior:BRZPushEnqueueBehaviorQueue];
Ignorer

Pour ignorer les données analytiques push reçues avant l’initialisation du SDK, transmettez .drop au paramètre analyticsBehavior. Avec cette option, tout événement analytique push qui se produit alors que le SDK n’est pas initialisé sera ignoré.

1
Braze.prepareForDelayedInitialization(analyticsBehavior: .drop)
1
[Braze prepareForDelayedInitializationWithAnalyticsBehavior:BRZPushEnqueueBehaviorDrop];

Étape 2.3 : Personnaliser l’automatisation des notifications push (facultatif)

Vous pouvez personnaliser la configuration de l’automatisation des notifications push en transmettant un paramètre pushAutomation. Par défaut, toutes les fonctionnalités d’automatisation sont activées, à l’exception de requestAuthorizationAtLaunch.

1
2
3
4
5
6
7
8
// Enable all push automation
featuresBraze.prepareForDelayedInitialization(pushAutomation: true)

// Or customize specific automation options
let automation = Braze.Configuration.Push.Automation()
automation.automaticSetup = true
automation.requestAuthorizationAtLaunch = false
Braze.prepareForDelayedInitialization(pushAutomation: automation)
1
2
3
4
5
6
7
8
// Enable all push automation features
[Braze prepareForDelayedInitializationWithPushAutomation:[[BRZConfigurationPushAutomation alloc] initWithAutomationEnabled:YES]];

// Or customize specific automation options
BRZConfigurationPushAutomation *automation = [[BRZConfigurationPushAutomation alloc] init];
automation.automaticSetup = YES;
automation.requestAuthorizationAtLaunch = NO;
[Braze prepareForDelayedInitializationWithPushAutomation:automation analyticsBehavior:BRZPushEnqueueBehaviorQueue];

Étape 2.4 : Initialiser le SDK

Après la période de délai que vous avez choisie (par exemple, après avoir récupéré la configuration depuis un serveur ou après avoir obtenu le consentement de l’utilisateur), initialisez le SDK comme d’habitude :

1
2
3
4
5
6
7
8
9
10
func initializeBraze() {
  let configuration = Braze.Configuration(apiKey: "YOUR-API-KEY", endpoint: "YOUR-ENDPOINT")

  // Enable push automation to match the delayed initialization configuration
  configuration.push.automation = true
  let braze = Braze(configuration: configuration)

  // Store the Braze instance for later use
  AppDelegate.braze = braze
}
1
2
3
4
5
6
7
8
9
10
- (void)initializeBraze {
  BRZConfiguration *configuration = [[BRZConfiguration alloc] initWithApiKey:@"YOUR-API-KEY" endpoint:@"YOUR-ENDPOINT"];

  // Enable push automation to match the delayed initialization configuration
  configuration.push.automation = [[BRZConfigurationPushAutomation alloc] initWithAutomationEnabled:YES];
  Braze *braze = [[Braze alloc] initWithConfiguration:configuration];

  // Store the Braze instance for later use
  AppDelegate.braze = braze;
}

Étape 3 : Mettre à jour le délégué de votre application

Ajoutez la ligne de code suivante à votre fichier AppDelegate.swift pour importer les fonctionnalités incluses dans le SDK Swift de Braze :

1
import BrazeKit

Ensuite, ajoutez une propriété statique à votre classe AppDelegate afin de conserver une référence forte à l’instance de Braze pendant toute la durée de vie de votre application :

1
2
3
class AppDelegate: UIResponder, UIApplicationDelegate {
  static var braze: Braze? = nil
}

Le SDK nécessite que votre application conserve une référence forte à l’instance de Braze tout au long de son utilisation. Pour éviter tout effet secondaire inattendu, assurez-vous d’avoir entièrement capturé cette référence avant d’accéder à ou de modifier des propriétés ou méthodes de l’instance de Braze.

Enfin, dans AppDelegate.swift, ajoutez l’extrait de code suivant à votre méthode application:didFinishLaunchingWithOptions: :

1
2
3
4
5
6
let configuration = Braze.Configuration(
    apiKey: "YOUR-APP-IDENTIFIER-API-KEY",
    endpoint: "YOUR-BRAZE-ENDPOINT"
)
let braze = Braze(configuration: configuration)
AppDelegate.braze = braze

Mettez à jour YOUR-APP-IDENTIFIER-API-KEY et YOUR-BRAZE-ENDPOINT avec la valeur correcte depuis votre page App Settings. Consultez nos types d’identifiants API pour plus d’informations sur l’endroit où trouver la clé API de votre identifiant d’application.

Ajoutez la ligne de code suivante à votre fichier AppDelegate.m :

1
@import BrazeKit;

Ensuite, ajoutez une variable statique à votre fichier AppDelegate.m afin de conserver une référence à l’instance de Braze pendant toute la durée de vie de votre application :

1
2
3
4
5
6
7
8
9
10
11
static Braze *_braze;

@implementation AppDelegate
+ (Braze *)braze {
  return _braze;
}

+ (void)setBraze:(Braze *)braze {
  _braze = braze;
}
@end

Le SDK nécessite que votre application conserve une référence forte à l’instance de Braze tout au long de son utilisation. Pour éviter tout effet secondaire inattendu, assurez-vous d’avoir entièrement capturé cette référence avant d’accéder à ou de modifier des propriétés ou méthodes de l’instance de Braze.

Enfin, dans votre fichier AppDelegate.m, ajoutez l’extrait de code suivant dans votre méthode application:didFinishLaunchingWithOptions: :

1
2
3
4
BRZConfiguration *configuration = [[BRZConfiguration alloc] initWithApiKey:"YOUR-APP-IDENTIFIER-API-KEY"
                                                                  endpoint:"YOUR-BRAZE-ENDPOINT"];
Braze *braze = [[Braze alloc] initWithConfiguration:configuration];
AppDelegate.braze = braze;

Mettez à jour YOUR-APP-IDENTIFIER-API-KEY et YOUR-BRAZE-ENDPOINT avec la valeur correcte depuis votre page Manage Settings. Consultez notre documentation API pour plus d’informations sur l’endroit où trouver la clé API de votre identifiant d’application.

Configurations optionnelles

Journalisation

Pour obtenir un aperçu centralisé sur toutes les plateformes, consultez la section Journalisation détaillée. Pour apprendre à interpréter les résultats des journaux, consultez la section Lecture des journaux détaillés.

Niveaux de journalisation

Le niveau de journalisation par défaut pour le SDK Braze Swift est .error—il s’agit également du niveau minimum pris en charge lorsque les journaux sont activés. Voici la liste complète des niveaux de journalisation :

Swift Objective-C Description
.debug BRZLoggerLevelDebug Journalise les informations de débogage + .info + .error.
.info BRZLoggerLevelInfo Journalise les informations générales du SDK (changements utilisateur, etc.) + .error.
.error BRZLoggerLevelError Journalise les erreurs.
.disabled BRZLoggerLevelDisabled Aucune journalisation n’a lieu.

Définir le niveau de journalisation

Vous pouvez définir le niveau de journalisation lors de l’exécution dans votre objet Braze.Configuration. Pour des informations détaillées sur l’utilisation, consultez Braze.Configuration.Logger.

1
2
3
4
5
6
7
let configuration = Braze.Configuration(
  apiKey: "<BRAZE_API_KEY>",
  endpoint: "<BRAZE_ENDPOINT>"
)
// Enable logging of general SDK information (such as user changes, etc.)
configuration.logger.level = .info
let braze = Braze(configuration: configuration)
1
2
3
4
5
BRZConfiguration *configuration = [[BRZConfiguration alloc] initWithApiKey:self.APIKey
                                                                  endpoint:self.apiEndpoint];
// Enable logging of general SDK information (such as user changes, etc.)
[configuration.logger setLevel:BRZLoggerLevelInfo];
Braze *braze = [[Braze alloc] initWithConfiguration:configuration];

Intégration du SDK Cordova

Prérequis

Avant de commencer, vérifiez que votre environnement est compatible avec la dernière version du SDK Cordova de Braze.

Étape 1 : Ajouter le SDK à votre projet

Si vous utilisez Cordova 6 ou une version ultérieure, vous pouvez ajouter le SDK directement depuis GitHub. Vous pouvez également télécharger un fichier ZIP du dépôt GitHub et ajouter le SDK manuellement.

Si vous ne prévoyez pas d’utiliser la collecte de localisation ni les géorepérages, utilisez la branche master depuis GitHub.

1
cordova plugin add https://github.com/braze-inc/braze-cordova-sdk#master

Si vous prévoyez d’utiliser la collecte de localisation et les géorepérages, utilisez la branche geofence-branch depuis GitHub.

1
cordova plugin add https://github.com/braze-inc/braze-cordova-sdk#geofence-branch

Étape 2 : Configurer votre projet

Ensuite, ajoutez les préférences suivantes à l’élément platform dans le fichier config.xml de votre projet.

1
2
<preference name="com.braze.ios_api_key" value="BRAZE_API_KEY" />
<preference name="com.braze.ios_api_endpoint" value="CUSTOM_API_ENDPOINT" />
1
2
<preference name="com.braze.android_api_key" value="BRAZE_API_KEY" />
<preference name="com.braze.android_api_endpoint" value="CUSTOM_API_ENDPOINT" />

Remplacez les valeurs suivantes :

Valeur Description
BRAZE_API_KEY Votre clé REST API de Braze.
CUSTOM_API_ENDPOINT Un endpoint API personnalisé. Cet endpoint est utilisé pour acheminer les données de votre instance Braze vers le groupe d’applications approprié dans votre tableau de bord de Braze.

L’élément platform dans votre fichier config.xml devrait ressembler à ce qui suit :

1
2
3
4
<platform name="ios">
    <preference name="com.braze.ios_api_key" value="BRAZE_API_KEY" />
    <preference name="com.braze.ios_api_endpoint" value="sdk.fra-01.braze.eu" />
</platform>
1
2
3
4
<platform name="android">
    <preference name="com.braze.android_api_key" value="BRAZE_API_KEY" />
    <preference name="com.braze.android_api_endpoint" value="sdk.fra-01.braze.eu" />
</platform>

Syntaxe spécifique à la plateforme

La section suivante couvre la syntaxe spécifique à la plateforme lors de l’utilisation de Cordova avec iOS ou Android.

Entiers

Les préférences de type entier sont lues comme des représentations sous forme de chaîne de caractères, comme dans l’exemple suivant :

1
2
3
4
<platform name="ios">
    <preference name="com.braze.ios_flush_interval_seconds" value="10" />
    <preference name="com.braze.ios_session_timeout" value="5" />
</platform>

En raison de la manière dont le framework Cordova 8.0.0+ gère les préférences, les préférences exclusivement entières (telles que les identifiants d’expéditeur) doivent être définies sous forme de chaînes de caractères précédées de str_, comme dans l’exemple suivant :

1
2
3
4
<platform name="android">
    <preference name="com.braze.android_fcm_sender_id" value="str_64422926741" />
    <preference name="com.braze.android_default_session_timeout" value="str_10" />
</platform>

Booléens

Les préférences booléennes sont lues par le SDK à l’aide des mots-clés YES et NO comme représentation sous forme de chaîne de caractères, comme dans l’exemple suivant :

1
2
3
4
<platform name="ios">
    <preference name="com.braze.should_opt_in_when_push_authorized" value="YES" />
    <preference name="com.braze.ios_disable_automatic_push_handling" value="NO" />
</platform>

Les préférences booléennes sont lues par le SDK à l’aide des mots-clés true et false comme représentation sous forme de chaîne de caractères, comme dans l’exemple suivant :

1
2
3
4
<platform name="android">
    <preference name="com.braze.should_opt_in_when_push_authorized" value="true" />
    <preference name="com.braze.is_session_start_based_timeout_enabled" value="false" />
</platform>

Configurations optionnelles

Vous pouvez ajouter l’une des préférences suivantes à l’élément platform dans le fichier config.xml de votre projet :

Méthode Description
ios_api_key Définit la clé API pour votre application.
ios_api_endpoint Définit l’endpoint SDK pour votre application.
ios_disable_automatic_push_registration Détermine si l’enregistrement automatique des notifications push doit être désactivé.
ios_disable_automatic_push_handling Détermine si la gestion automatique des notifications push doit être désactivée.
ios_enable_idfa_automatic_collection Détermine si le SDK Braze doit collecter automatiquement les informations IDFA. Pour plus d’informations, consultez la documentation relative à la méthode Braze IDFA.
enable_location_collection Détermine si la collecte automatique de la localisation est activée (si l’utilisateur l’autorise). La geofence-branch
geofences_enabled Détermine si les géorepérages sont activés.
ios_session_timeout Définit le délai d’expiration de la session Braze pour votre application en secondes. La valeur par défaut est de 10 secondes.
sdk_authentication_enabled Détermine si la fonctionnalité d’authentification SDK doit être activée.
display_foreground_push_notifications Détermine si les notifications push doivent s’afficher lorsque l’application est au premier plan.
ios_disable_un_authorization_option_provisional Détermine si UNAuthorizationOptionProvisional doit être désactivé.
trigger_action_minimum_time_interval_seconds Définit l’intervalle de temps minimum en secondes entre les déclencheurs. La valeur par défaut est de 30 secondes.
ios_push_app_group Définit l’ID du groupe d’applications pour les extensions push iOS.
ios_forward_universal_links Détermine si le SDK reconnaît et transfère automatiquement les liens universels vers les méthodes système. Nécessaire pour que les deep links à partir des notifications push fonctionnent sur iOS. Désactivé par défaut.
ios_log_level Définit le niveau de journalisation minimum pour Braze.Configuration.Logger.
ios_use_uuid_as_device_id Détermine si un UUID généré aléatoirement doit être utilisé comme identifiant de l’appareil.
ios_flush_interval_seconds Définit l’intervalle en secondes entre les vidages automatiques des données. La valeur par défaut est de 10 secondes.
ios_use_automatic_request_policy Détermine si la politique de requête pour Braze.Configuration.Api doit être automatique ou manuelle.
should_opt_in_when_push_authorized Détermine si l’état d’abonnement aux notifications d’un utilisateur doit être automatiquement défini sur optedIn lorsque les autorisations push sont accordées.
Méthode Description
android_api_key Définit la clé API pour votre application.
android_api_endpoint Définit l’endpoint SDK pour votre application.
android_small_notification_icon Définit la petite icône de notification.
android_large_notification_icon Définit la grande icône de notification.
android_notification_accent_color Définit la couleur d’accentuation des notifications à l’aide d’une représentation hexadécimale.
android_default_session_timeout Définit le délai d’expiration de la session Braze pour votre application en secondes. La valeur par défaut est de 10 secondes.
android_handle_push_deep_links_automatically Détermine si le SDK Braze gère automatiquement les deep links push. Nécessaire pour que les deep links à partir des notifications push fonctionnent sur Android. Désactivé par défaut.
android_log_level Définit le niveau de journalisation pour votre application. Le niveau par défaut est 4 et enregistre un minimum d’informations. Pour activer la journalisation détaillée à des fins de débogage, utilisez le niveau 2.
firebase_cloud_messaging_registration_enabled Détermine s’il convient d’utiliser Firebase Cloud Messaging pour les notifications push.
android_fcm_sender_id Définit l’ID de l’expéditeur Firebase Cloud Messaging.
enable_location_collection Détermine si la collecte automatique de la localisation est activée (si l’utilisateur l’autorise).
geofences_enabled Détermine si les géorepérages sont activés.
android_disable_auto_session_tracking Désactive le suivi automatique des sessions par le plug-in Android Cordova. Pour plus d’informations, consultez Désactivation du suivi automatique des sessions.
sdk_authentication_enabled Détermine si la fonctionnalité d’authentification SDK doit être activée.
trigger_action_minimum_time_interval_seconds Définit l’intervalle de temps minimum en secondes entre les déclencheurs. La valeur par défaut est de 30 secondes.
is_session_start_based_timeout_enabled Détermine si le comportement de délai d’expiration de session doit être basé sur les événements de début ou de fin de session.
default_notification_channel_name Définit le nom visible par l’utilisateur via NotificationChannel.getName pour le NotificationChannel par défaut de Braze.
default_notification_channel_description Définit la description visible par l’utilisateur via NotificationChannel.getDescription pour le NotificationChannel par défaut de Braze.
does_push_story_dismiss_on_click Détermine si une Push Story est automatiquement fermée lorsqu’on clique dessus.
is_fallback_firebase_messaging_service_enabled Détermine si l’utilisation d’un service Firebase Cloud Messaging de secours est activée.
fallback_firebase_messaging_service_classpath Définit le chemin d’accès aux classes pour le service Firebase Cloud Messaging de secours.
is_content_cards_unread_visual_indicator_enabled Détermine si l’indicateur visuel de Content Cards non lues est activé.
is_firebase_messaging_service_on_new_token_registration_enabled Détermine si le SDK Braze enregistrera automatiquement les jetons dans com.google.firebase.messaging.FirebaseMessagingService.onNewToken.
is_push_deep_link_back_stack_activity_enabled Détermine si Braze ajoutera une activité à la pile arrière lors du suivi automatique des deep links pour les notifications push.
push_deep_link_back_stack_activity_class_name Définit l’activité que Braze ajoutera à la pile arrière lors du suivi automatique des deep links pour les notifications push.
should_opt_in_when_push_authorized Détermine si Braze doit automatiquement abonner l’utilisateur lorsque les notifications push sont autorisées.

Voici un exemple de fichier config.xml avec des configurations supplémentaires :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<platform name="ios">
    <preference name="com.braze.ios_disable_automatic_push_registration" value="NO"/"YES" />
    <preference name="com.braze.ios_disable_automatic_push_handling" value="NO"/"YES" />
    <preference name="com.braze.ios_enable_idfa_automatic_collection" value="YES"/"NO" />
    <preference name="com.braze.enable_location_collection" value="NO"/"YES" />
    <preference name="com.braze.geofences_enabled" value="NO"/"YES" />
    <preference name="com.braze.ios_session_timeout" value="5" />
    <preference name="com.braze.sdk_authentication_enabled" value="YES"/"NO" />
    <preference name="com.braze.display_foreground_push_notifications" value="YES"/"NO" />
    <preference name="com.braze.ios_disable_un_authorization_option_provisional" value="NO"/"YES" />
    <preference name="com.braze.trigger_action_minimum_time_interval_seconds" value="30" />
    <preference name="com.braze.ios_push_app_group" value="PUSH_APP_GROUP_ID" />
    <preference name="com.braze.ios_forward_universal_links" value="YES"/"NO" />
    <preference name="com.braze.ios_log_level" value="2" />
    <preference name="com.braze.ios_use_uuid_as_device_id" value="YES"/"NO" />
    <preference name="com.braze.ios_flush_interval_seconds" value="10" />
    <preference name="com.braze.ios_use_automatic_request_policy" value="YES"/"NO" />
    <preference name="com.braze.should_opt_in_when_push_authorized" value="YES"/"NO" />
</platform>
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
<platform name="android">
    <preference name="com.braze.android_small_notification_icon" value="RESOURCE_ENTRY_NAME_FOR_ICON_DRAWABLE" />
    <preference name="com.braze.android_large_notification_icon" value="RESOURCE_ENTRY_NAME_FOR_ICON_DRAWABLE" />
    <preference name="com.braze.android_notification_accent_color" value="str_ACCENT_COLOR_INTEGER" />
    <preference name="com.braze.android_default_session_timeout" value="str_SESSION_TIMEOUT_INTEGER" />
    <preference name="com.braze.android_handle_push_deep_links_automatically" value="true"/"false" />
    <preference name="com.braze.android_log_level" value="str_LOG_LEVEL_INTEGER" />
    <preference name="com.braze.firebase_cloud_messaging_registration_enabled" value="true"/"false" />
    <preference name="com.braze.android_fcm_sender_id" value="str_YOUR_FCM_SENDER_ID" />
    <preference name="com.braze.enable_location_collection" value="true"/"false" />
    <preference name="com.braze.geofences_enabled" value="true"/"false" />
    <preference name="com.braze.android_disable_auto_session_tracking" value="true"/"false" />
    <preference name="com.braze.sdk_authentication_enabled" value="true"/"false" />
    <preference name="com.braze.trigger_action_minimum_time_interval_seconds" value="str_MINIMUM_INTERVAL_INTEGER" />
    <preference name="com.braze.is_session_start_based_timeout_enabled" value="false"/"true" />
    <preference name="com.braze.default_notification_channel_name" value="DEFAULT_NAME" />
    <preference name="com.braze.default_notification_channel_description" value="DEFAULT_DESCRIPTION" />
    <preference name="com.braze.does_push_story_dismiss_on_click" value="true"/"false" />
    <preference name="com.braze.is_fallback_firebase_messaging_service_enabled" value="true"/"false" />
    <preference name="com.braze.fallback_firebase_messaging_service_classpath" value="FALLBACK_FIREBASE_MESSAGING_CLASSPATH" />
    <preference name="com.braze.is_content_cards_unread_visual_indicator_enabled" value="true"/"false" />
    <preference name="com.braze.is_firebase_messaging_service_on_new_token_registration_enabled" value="true"/"false" />
    <preference name="com.braze.is_push_deep_link_back_stack_activity_enabled" value="true"/"false" />
    <preference name="com.braze.push_deep_link_back_stack_activity_class_name" value="DEEPLINK_BACKSTACK_ACTIVITY_CLASS_NAME" />
    <preference name="com.braze.should_opt_in_when_push_authorized" value="true"/"false" />
</platform>

Désactivation du suivi automatique des sessions (Android uniquement)

Par défaut, le plug-in Android Cordova assure automatiquement le suivi des sessions. Pour désactiver le suivi automatique des sessions, ajoutez la préférence suivante à l’élément platform dans le fichier config.xml de votre projet :

1
2
3
<platform name="android">
    <preference name="com.braze.android_disable_auto_session_tracking" value="true" />
</platform>

Pour recommencer à suivre les sessions, appelez BrazePlugin.startSessionTracking(). Gardez à l’esprit que seules les sessions démarrées après le prochain Activity.onStart() seront suivies.

Configuration des canaux de notification pour les notifications en tête d’écran (Android uniquement)

Sur Android 8.0 (niveau d’API 26) et versions ultérieures, le comportement des notifications est contrôlé par les canaux de notification. Pour afficher des notifications en tête d’écran — des alertes qui apparaissent brièvement en haut de l’écran lorsque l’utilisateur utilise son appareil — vous devez créer un canal de notification avec NotificationManager.IMPORTANCE_HIGH dans le code de votre application Android.

Bien que le SDK Cordova vous permette de définir le nom et la description du canal de notification par défaut via les préférences config.xml (default_notification_channel_name et default_notification_channel_description), le niveau d’importance doit être configuré de manière programmatique dans votre code Android natif.

Exemple : création d’un canal de notification à haute importance

Ajoutez le code suivant à la méthode onCreate() de la classe Application de votre application Android :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import android.app.NotificationChannel
import android.app.NotificationManager
import android.content.Context
import android.os.Build

override fun onCreate() {
    super.onCreate()

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        val channelId = "high_priority_channel"
        val channelName = "High Priority Notifications"
        val importance = NotificationManager.IMPORTANCE_HIGH

        val channel = NotificationChannel(channelId, channelName, importance).apply {
            description = "Notifications that require immediate attention"
        }

        val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
        notificationManager.createNotificationChannel(channel)
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.content.Context;
import android.os.Build;

@Override
public void onCreate() {
    super.onCreate();

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        String channelId = "high_priority_channel";
        String channelName = "High Priority Notifications";
        int importance = NotificationManager.IMPORTANCE_HIGH;

        NotificationChannel channel = new NotificationChannel(channelId, channelName, importance);
        channel.setDescription("Notifications that require immediate attention");

        NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        notificationManager.createNotificationChannel(channel);
    }
}

Après avoir créé le canal dans votre code Android, utilisez l’identifiant du canal lors de l’envoi de notifications push depuis le tableau de bord de Braze. Pour plus d’informations sur les canaux de notification, consultez Canaux de notification Android.

Résolution des problèmes de builds iOS après la mise à jour du plugin

Le SDK Braze pour Cordova 9.0.0 et les versions ultérieures utilisent le SDK Swift 9.0.0 ou une version ultérieure. À partir du SDK Swift 8.0.0, ce SDK natif est compilé avec Xcode 15.2. Si votre build iOS échoue après la mise à jour du plugin Cordova vers la version 9.0.0 ou ultérieure, mettez à jour Xcode vers la version 15.2 ou une version plus récente, et vérifiez qu’il correspond au journal des modifications du SDK Swift pour la version iOS native utilisée par votre plugin.

À propos du SDK Flutter Braze

Une fois le SDK Braze Flutter intégré sur Android et iOS, vous pourrez utiliser l’API Braze dans vos applications Flutter écrites en Dart. Ce plug-in offre des fonctionnalités d’analyse de base et vous permet d’intégrer des messages in-app et des Content Cards pour iOS et Android à l’aide d’une base de code unique.

Intégration du SDK Flutter

Conditions préalables

Avant d’intégrer le SDK Braze Flutter, vous devez effectuer les opérations suivantes :

Prérequis Description
Identifiant d’application API Braze Pour trouver l’identifiant de votre application, rendez-vous dans Paramètres > API et identifiants > Identifiants d’application. Pour plus d’informations, consultez Types d’identifiants API.
Endpoint du SDK Braze L’URL de votre endpoint SDK (par exemple, sdk.<cluster>.braze.com). Votre endpoint dépendra de l’URL de Braze pour votre instance.
SDK Flutter Installez le SDK Flutter officiel et assurez-vous qu’il répond aux exigences de la version minimale prise en charge par le SDK Braze Flutter.

Étape 1 : Intégrez la bibliothèque Braze

Ajoutez le package du SDK Braze Flutter depuis la ligne de commande. Cela ajoutera la ligne appropriée à votre pubspec.yaml.

1
flutter pub add braze_plugin

Étape 2 : Configuration complète du SDK natif

2.1 Configurer Android {#21-set-up-android} {#21-set-up-android}

Fournir les identifiants à la compilation

Créez un fichier braze.xml dans le dossier android/res/values de votre projet. La clé API et l’endpoint sont fournis au moment de l’exécution depuis Dart, ils ne sont donc pas requis dans ce fichier. Pour activer l’initialisation différée, ajoutez com_braze_enable_delayed_initialization au fichier :

1
2
3
4
5
<?xml version="1.0" encoding="utf-8"?>
<resources>
  <bool name="com_braze_enable_delayed_initialization">true</bool>
  <!-- API key and endpoint are not required here. They are set at runtime via Dart. -->
</resources>
Fournir les identifiants au moment de l’exécution

Vous pouvez également activer l’initialisation différée de manière programmatique dans votre MainActivity.kt :

1
2
3
4
5
6
7
8
import com.braze.Braze

class MainActivity : FlutterActivity() {
  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    Braze.enableDelayedInitialization(context = this)
  }
}

Ajoutez les autorisations requises à votre fichier AndroidManifest.xml :

1
2
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

2.2 Configurer iOS {#22-set-up-ios} {#22-set-up-ios}

Dans votre méthode application(_:didFinishLaunchingWithOptions:) existante, ajoutez un appel à BrazePlugin.configure(_:postInitialization:) pour enregistrer votre configuration. L’instance Braze est créée ultérieurement lorsque initialize() est appelé depuis Dart. La clé API et l’endpoint ne sont pas définis ici.

Ajoutez le code suivant à votre fichier AppDelegate.swift :

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
import BrazeKit
import braze_plugin

// ...

override func application(
  _ application: UIApplication,
  didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil
) -> Bool {
  // ... your existing didFinishLaunchingWithOptions setup ...

  BrazePlugin.configure(
    { configuration in
      configuration.logger.level = .info
      // Set other non-API-key configurations here, such as:
      // configuration.push.automation = true
      // configuration.sessionTimeout = 60
    },
    postInitialization: { braze in
      // Optional: Customize the Braze instance after creation.
      // For example, set a custom in-app message presenter:
      // let customPresenter = CustomInAppMessagePresenter()
      // braze.inAppMessagePresenter = customPresenter
    }
  )

  return true
}

Ajoutez le code suivant à votre fichier AppDelegate.m :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@import BrazeKit;
@import braze_plugin;

// ...

- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  [BrazePlugin configure:^(BRZConfiguration *configuration) {
    configuration.logger.level = BRZLoggerLevelInfo;
    // Set other non-API-key configurations here, such as:
    // configuration.push.automation = ...
    // configuration.sessionTimeout = 60;
  } postInitialization:^(Braze *braze) {
    // Optional: customize the Braze instance after creation.
  }];

  return YES;
}

2.1 Configurer Android {#21-set-up-android-1}

Pour vous connecter aux serveurs Braze, créez un fichier braze.xml dans le dossier android/res/values de votre projet. Collez le code suivant et remplacez la clé d’identification API et l’endpoint par vos valeurs :

1
2
3
4
5
<?xml version="1.0" encoding="utf-8"?>
<resources>
  <string translatable="false" name="com_braze_api_key">YOUR_APP_IDENTIFIER_API_KEY</string>
  <string translatable="false" name="com_braze_custom_endpoint">YOUR_CUSTOM_ENDPOINT_OR_CLUSTER</string>
</resources>

Ajoutez les autorisations requises à votre fichier AndroidManifest.xml :

1
2
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

2.2 Configurer iOS {#22-set-up-ios-1}

Ajoutez l’importation du SDK Braze en haut du fichier AppDelegate.swift :

1
2
import BrazeKit
import braze_plugin

Dans le même fichier, créez l’objet de configuration Braze dans la méthode application(_:didFinishLaunchingWithOptions:) et remplacez la clé API et l’endpoint par les valeurs de votre application. Ensuite, créez l’instance Braze à l’aide de la configuration et créez une propriété statique sur AppDelegate pour y accéder facilement :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
static var braze: Braze? = nil

override func application(
  _ application: UIApplication,
  didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil
) -> Bool {
  // Setup Braze
  let configuration = Braze.Configuration(
    apiKey: "<BRAZE_API_KEY>",
    endpoint: "<BRAZE_ENDPOINT>"
  )
  // - Enable logging or customize configuration here
  configuration.logger.level = .info
  let braze = BrazePlugin.initBraze(configuration)
  AppDelegate.braze = braze

  return true
}

Importez le SDK Braze en haut du fichier AppDelegate.m :

1
2
@import BrazeKit;
@import braze_plugin;

Dans le même fichier, créez l’objet de configuration Braze dans la méthode application:didFinishLaunchingWithOptions: et remplacez la clé API et l’endpoint par les valeurs de votre application. Ensuite, créez l’instance Braze à l’aide de la configuration et créez une propriété statique sur AppDelegate pour y accéder facilement :

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
- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  // Setup Braze
  BRZConfiguration *configuration =
      [[BRZConfiguration alloc] initWithApiKey:@"<BRAZE_API_KEY>"
                                      endpoint:@"<BRAZE_ENDPOINT>"];
  // - Enable logging or customize configuration here
  configuration.logger.level = BRZLoggerLevelInfo;
  Braze *braze = [BrazePlugin initBraze:configuration];
  AppDelegate.braze = braze;

  [self.window makeKeyAndVisible];
  return YES;
}

#pragma mark - AppDelegate.braze

static Braze *_braze = nil;

+ (Braze *)braze {
  return _braze;
}

+ (void)setBraze:(Braze *)braze {
  _braze = braze;
}

Étape 3 : Configurez le plug-in

Importez le plug-in et créez une instance unique de BrazePlugin :

1
2
3
import 'package:braze_plugin/braze_plugin.dart';

final BrazePlugin braze = BrazePlugin();

Appelez ensuite initialize() avec votre clé API d’identifiant d’application et votre endpoint SDK pour créer l’instance Braze. Consultez les options ci-dessous pour savoir où appeler cette méthode dans le flux de votre application.

Initialisation standard

Pour initialiser le SDK au démarrage de votre application, appelez initialize() dans initState() :

1
2
3
4
5
@override
void initState() {
  super.initState();
  braze.initialize("<BRAZE_API_KEY>", "<BRAZE_ENDPOINT>");
}

Initialisation différée

Pour reporter l’initialisation du SDK à un moment ultérieur de la session — par exemple, après que l’utilisateur a donné son consentement ou s’est connecté — appelez initialize() lorsque vous êtes prêt :

1
2
3
4
// ...
void onUserConsent() {
  braze.initialize("<BRAZE_API_KEY>", "<BRAZE_ENDPOINT>");
}

Clés API spécifiques à chaque plateforme

Étant donné que vos applications Android et iOS utilisent des clés API différentes, utilisez la détection de plateforme :

1
2
3
4
5
6
7
import 'dart:io' show Platform;

if (Platform.isAndroid) {
  braze.initialize("<ANDROID_API_KEY>", "<BRAZE_ENDPOINT>");
} else if (Platform.isIOS) {
  braze.initialize("<IOS_API_KEY>", "<BRAZE_ENDPOINT>");
}

Réinitialisation

Vous pouvez appeler initialize() plusieurs fois pour réinitialiser le SDK avec une clé API et un endpoint différents en cours de session. Chaque appel détruit l’instance Braze précédente et en crée une nouvelle.

Pour importer le plug-in dans votre code Dart, utilisez ce qui suit :

1
import 'package:braze_plugin/braze_plugin.dart';

Ensuite, initialisez une instance du plug-in Braze en appelant new BrazePlugin() comme dans notre exemple d’application.

Test de l’intégration

Vous pouvez vérifier que le SDK est correctement intégré en consultant les statistiques de session dans le tableau de bord. Si vous exécutez votre application sur l’une ou l’autre plateforme, vous devriez voir apparaître une nouvelle session dans le tableau de bord (dans la section Overview).

Ouvrez une session pour un utilisateur spécifique en appelant le code suivant dans votre application.

1
2
3
BrazePlugin braze = BrazePlugin();
braze.initialize("<BRAZE_API_KEY>", "<BRAZE_ENDPOINT>");
braze.changeUser("{some-user-id}");
1
2
BrazePlugin braze = BrazePlugin();
braze.changeUser("{some-user-id}");

Recherchez l’utilisateur {some-user-id} dans le tableau de bord sous Audience > Rechercher des utilisateurs. Vous pouvez y vérifier que les données de session et d’appareil ont bien été enregistrées.

À propos du SDK Braze pour React Native

L’intégration du SDK Braze pour React Native fournit des fonctionnalités d’analyse de base et vous permet d’intégrer les messages in-app et les Content Cards pour iOS et Android avec une seule base de code.

Compatibilité avec la nouvelle architecture

La version minimale suivante du SDK est compatible avec toutes les applications utilisant la nouvelle architecture de React Native :

À partir de la version 6.0.0 du SDK, Braze utilise un Turbo Module React Native, compatible à la fois avec la nouvelle architecture et l’architecture bridge classique. Cela signifie qu’aucune configuration supplémentaire n’est nécessaire.

Configuration requise pour les versions de React et React Native

Braze ne publie pas de version minimale de React distincte au-delà de ce que le SDK React Native prend en charge. Pour intégrer le SDK, utilisez React Native version 0.71 ou ultérieure. Pour consulter la liste complète des versions React Native prises en charge, voir le dépôt GitHub du SDK React Native.

Lorsque vous mettez à jour React, React Native ou le SDK Braze, consultez le journal des modifications du SDK pour identifier les changements incompatibles avant de déployer.

Intégration du SDK React Native

Prérequis

Pour connaître les versions de React Native prises en charge et les conseils de mise à jour, consultez Exigences de version React et React Native.

Étape 1 : Intégrer la bibliothèque Braze

1
npm install @braze/react-native-sdk
1
yarn add @braze/react-native-sdk

Étape 2 : Compléter la configuration native

Si votre application utilise Expo, consultez Utiliser le plugin Expo. Si votre application utilise React Native pur, consultez Utiliser la CLI React Native. Choisissez une méthode de configuration dans chaque onglet de version : plugin Expo ou CLI React Native.

Méthode 1 : Utiliser le plugin Expo

2.1 Installer le plugin Braze Expo {#21-install-the-braze-expo-plugin}

Assurez-vous que la version de votre plugin Braze Expo est au moins 4.1.0. Pour la liste complète des versions prises en charge, consultez le dépôt du plugin Braze Expo.

L’extrait de code suivant montre la commande pour installer le plugin Braze Expo :

1
npx expo install @braze/expo-plugin
2.2 Ajouter le plugin à votre app.json {#22-add-the-plugin-to-your-appjson}

Dans votre app.json, ajoutez le plugin Braze Expo. La clé API et l’endpoint ne sont plus définis ici. Fournissez-les au moment de l’exécution via Braze.initialize() depuis JavaScript. Ajoutez les paramètres de configuration optionnels suivants selon les besoins de votre déploiement :

Méthode Type Description
enableBrazeIosPush boolean iOS uniquement. Indique s’il faut utiliser Braze pour gérer les notifications push sur iOS.
enableFirebaseCloudMessaging boolean Android uniquement. Indique s’il faut utiliser Firebase Cloud Messaging pour les notifications push.
firebaseCloudMessagingSenderId string Android uniquement. Votre ID d’expéditeur Firebase Cloud Messaging.
sessionTimeout integer Le délai d’expiration de session Braze pour votre application en secondes.
enableSdkAuthentication boolean Indique s’il faut activer la fonctionnalité d’authentification SDK.
logLevel integer Le niveau de journalisation pour votre application. Le niveau par défaut est 8 et consigne minimalement les informations. Pour activer la journalisation détaillée pour le débogage, utilisez le niveau 0.
minimumTriggerIntervalInSeconds integer L’intervalle de temps minimum en secondes entre les déclencheurs. Par défaut : 30 secondes.
enableAutomaticLocationCollection boolean Indique si la collecte automatique de la localisation est activée (si l’utilisateur l’autorise).
enableGeofence boolean Indique si les géorepérages sont activés.
enableAutomaticGeofenceRequests boolean Indique si les requêtes de géorepérage doivent être effectuées automatiquement.
dismissModalOnOutsideTap boolean iOS uniquement. Indique si un message in-app modal est fermé lorsque l’utilisateur clique en dehors du message in-app.
androidHandlePushDeepLinksAutomatically boolean Android uniquement. Indique si le SDK Braze doit gérer automatiquement les deep links push.
androidPushNotificationHtmlRenderingEnabled boolean Android uniquement. Définit si le contenu textuel d’une notification push doit être interprété et rendu en HTML à l’aide de android.text.Html.fromHtml.
androidNotificationAccentColor string Android uniquement. Définit la couleur d’accentuation des notifications Android.
androidNotificationLargeIcon string Android uniquement. Définit la grande icône des notifications Android.
androidNotificationSmallIcon string Android uniquement. Définit la petite icône des notifications Android.
iosRequestPushPermissionsAutomatically boolean iOS uniquement. Indique si l’utilisateur doit être automatiquement invité à autoriser les notifications push au lancement de l’application.
enableBrazeIosRichPush boolean iOS uniquement. Indique s’il faut activer les fonctionnalités de push riche pour iOS.
enableBrazeIosPushStories boolean iOS uniquement. Indique s’il faut activer les Push Stories Braze pour iOS.
iosPushStoryAppGroup string iOS uniquement. Le groupe d’applications utilisé pour les Push Stories iOS.
iosUseUUIDAsDeviceId boolean iOS uniquement. Indique si l’identifiant d’appareil utilise un UUID généré aléatoirement.
iosForwardUniversalLinks boolean iOS uniquement. Spécifie si le SDK doit automatiquement reconnaître et transmettre les liens universels aux méthodes système (par défaut : false).

L’extrait de code suivant montre un exemple de configuration app.json :

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
{
  "expo": {
    "plugins": [
      [
        "@braze/expo-plugin",
        {
          "sessionTimeout": 60,
          "enableGeofence": false,
          "enableBrazeIosPush": false,
          "enableFirebaseCloudMessaging": false,
          "firebaseCloudMessagingSenderId": "YOUR-FCM-SENDER-ID",
          "androidHandlePushDeepLinksAutomatically": true,
          "enableSdkAuthentication": false,
          "logLevel": 0,
          "minimumTriggerIntervalInSeconds": 0,
          "enableAutomaticLocationCollection": false,
          "enableAutomaticGeofenceRequests": false,
          "dismissModalOnOutsideTap": true,
          "androidPushNotificationHtmlRenderingEnabled": true,
          "androidNotificationAccentColor": "#ff3344",
          "androidNotificationLargeIcon": "@drawable/custom_app_large_icon",
          "androidNotificationSmallIcon": "@drawable/custom_app_small_icon",
          "iosRequestPushPermissionsAutomatically": false,
          "enableBrazeIosPushStories": true,
          "iosPushStoryAppGroup": "group.com.example.myapp.PushStories",
          "iosForwardUniversalLinks": false
        }
      ]
    ]
  }
}
Configurer les icônes de notification push Android

Lorsque vous utilisez androidNotificationLargeIcon et androidNotificationSmallIcon, suivez ces bonnes pratiques pour un affichage correct des icônes :

Emplacement et format des icônes

Pour utiliser des icônes de notification push personnalisées avec le plugin Braze Expo :

  1. Créez vos fichiers d’icônes en suivant les exigences répertoriées dans la section Exigences relatives aux icônes.
  2. Placez-les dans les répertoires natifs Android de votre projet à l’emplacement android/app/src/main/res/drawable-<density>/. Par exemple, utilisez android/app/src/main/res/drawable-mdpi/ et android/app/src/main/res/drawable-hdpi/.
  3. Alternativement, si vous gérez les ressources dans votre répertoire React Native, vous pouvez utiliser la configuration d’icônes dans app.json d’Expo ou créer un plugin de configuration Expo pour copier les icônes dans les dossiers drawable Android pendant le prebuild.

Le plugin Braze Expo référence ces icônes à l’aide du système de ressources drawable d’Android.

Exigences relatives aux icônes

  • Petite icône : Doit être une silhouette blanche sur un fond transparent (il s’agit d’une exigence de la plateforme Android).
  • Grande icône : Peut être une image en couleurs.
  • Format : Le format PNG est recommandé.
  • Nommage : Utilisez uniquement des lettres minuscules, des chiffres et des caractères de soulignement (par exemple, my_large_icon.png).

Configuration dans app.json

L’extrait de code suivant montre comment référencer les icônes de notification Android dans app.json à l’aide du préfixe @drawable/ :

1
2
3
4
5
6
7
8
9
10
11
12
13
{
  "expo": {
    "plugins": [
      [
        "@braze/expo-plugin",
        {
          "androidNotificationLargeIcon": "@drawable/large_icon",
          "androidNotificationSmallIcon": "@drawable/small_icon"
        }
      ]
    ]
  }
}

Fonctionnement

Le plugin Braze Expo référence vos fichiers d’icônes à partir des répertoires drawable d’Android. Lorsque vous exécutez npx expo prebuild, Expo génère la structure de projet Android native. Vos icônes doivent être présentes dans les dossiers drawable d’Android (placées manuellement ou copiées via un plugin de configuration) avant le processus de build. Le plugin configure ensuite le SDK Braze pour utiliser ces ressources drawable par leurs noms (sans chemin ni extension), c’est pourquoi le préfixe @drawable/ est requis dans votre configuration.

Pour plus d’informations sur les icônes de notification Android, consultez les directives d’icônes de notification Android.

2.3 Compiler et exécuter votre application {#23-build-and-run-your-application}

Le prebuild de votre application génère les fichiers natifs nécessaires au fonctionnement du plugin Braze Expo.

L’extrait de code suivant montre la commande pour effectuer le prebuild de votre application :

1
npx expo prebuild

Exécutez votre application comme indiqué dans la documentation Expo. Si vous apportez des modifications aux options de configuration, effectuez à nouveau le prebuild et l’exécution de l’application.

Méthode 2 : Utiliser la CLI React Native

Configurer Android

2.1 Ajouter le plugin Kotlin Gradle

L’extrait de code suivant montre comment ajouter le plugin Kotlin Gradle dans votre fichier build.gradle de niveau supérieur sous buildscript > dependencies :

1
2
3
4
5
6
7
buildscript {
    dependencies {
        ...
        // Choose your Kotlin version
        classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.10")
    }
}

Cela ajoute Kotlin à votre projet.

2.2 Configurer le SDK Braze

Créez un fichier braze.xml dans le dossier res/values de votre projet. La clé API et l’endpoint sont fournis au moment de l’exécution depuis JavaScript, ils ne sont donc pas requis dans ce fichier. L’extrait de code suivant montre comment activer l’initialisation différée avec com_braze_enable_delayed_initialization :

1
2
3
4
<?xml version="1.0" encoding="utf-8"?>
<resources>
  <bool name="com_braze_enable_delayed_initialization">true</bool>
</resources>

L’extrait de code suivant montre les permissions requises pour votre fichier AndroidManifest.xml :

1
2
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

2.3 Implémenter le suivi des sessions utilisateur

Les appels à openSession() et closeSession() sont gérés automatiquement. L’extrait de code suivant montre ce qu’il faut ajouter dans la méthode onCreate() de votre classe MainApplication :

1
2
3
4
5
6
7
8
import com.braze.BrazeActivityLifecycleCallbackListener;

@Override
public void onCreate() {
    super.onCreate();
    ...
    registerActivityLifecycleCallbacks(new BrazeActivityLifecycleCallbackListener());
}
1
2
3
4
5
6
7
import com.braze.BrazeActivityLifecycleCallbackListener

override fun onCreate() {
    super.onCreate()
    ...
    registerActivityLifecycleCallbacks(BrazeActivityLifecycleCallbackListener())
}

2.4 Gérer les mises à jour d’intent

Si votre MainActivity a android:launchMode défini sur singleTask, l’extrait de code suivant montre ce qu’il faut ajouter à votre classe MainActivity :

1
2
3
4
5
@Override
public void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    setIntent(intent);
}
1
2
3
4
override fun onNewIntent(intent: Intent) {
    super.onNewIntent(intent)
    setIntent(intent)
}
Configurer iOS

2.5 (Optionnel) Configurer le Podfile pour les XCFrameworks dynamiques

Pour importer certaines bibliothèques Braze, comme BrazeUI, dans un fichier Objective-C++, vous devez utiliser la syntaxe #import. À partir de la version 7.4.0 du SDK Swift Braze, les binaires disposent d’un canal de distribution optionnel sous forme de XCFrameworks dynamiques, compatible avec cette syntaxe.

Si vous souhaitez utiliser ce canal de distribution, remplacez manuellement les emplacements source CocoaPods dans votre Podfile. Référencez cet exemple et remplacez {your-version} par la version que vous souhaitez importer :

1
2
3
pod 'BrazeKit', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeKit.podspec'
pod 'BrazeUI', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeUI.podspec'
pod 'BrazeLocation', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeLocation.podspec'

2.6 Installer les pods

Puisque React Native lie automatiquement les bibliothèques à la plateforme native, vous pouvez installer le SDK à l’aide de CocoaPods.

L’extrait de code suivant montre comment installer les pods depuis le dossier racine du projet :

1
2
3
4
5
# To install using the React Native New Architecture
cd ios && pod install

# To install using the React Native legacy architecture
cd ios && RCT_NEW_ARCH_ENABLED=0 pod install

2.7 Configurer le SDK Braze

Utilisez BrazeReactInitializer.configure dans votre AppDelegate pour enregistrer la configuration native. Les closures que vous fournissez sont stockées et appliquées ultérieurement lorsque Braze.initialize(apiKey, endpoint) est appelé depuis JavaScript.

L’extrait de code suivant montre comment importer le SDK Braze en haut du fichier AppDelegate.swift :

1
2
import BrazeKit
import braze_react_native_sdk

Dans la méthode application(_:didFinishLaunchingWithOptions:), enregistrez votre configuration native à l’aide de BrazeReactInitializer.configure. Ne définissez pas la clé API ni l’endpoint ici. Ils sont fournis depuis JavaScript via Braze.initialize().

  • Closure configure : Reçoit un objet Braze.Configuration et vous permet de définir les propriétés de configuration natives (journalisation, push, sessions, etc.).
  • Closure postInitialization (optionnelle) : Reçoit l’instance Braze active après sa création, pour les configurations nécessitant l’instance (par exemple, stocker une référence ou définir des délégués).

L’extrait de code suivant montre un exemple de déploiement AppDelegate.swift utilisant BrazeReactInitializer.configure :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
  static var braze: Braze? = nil

  func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil
  ) -> Bool {
    BrazeReactInitializer.configure { configuration in
      configuration.logger.level = .info
      configuration.push.automation = true
    } postInitialization: { braze in
      AppDelegate.braze = braze
    }

    // ... React Native setup

    return true
  }
}

L’extrait de code suivant montre comment importer le SDK Braze en haut du fichier AppDelegate.m :

1
2
@import BrazeKit;
@import braze_react_native_sdk;

Dans la méthode application:didFinishLaunchingWithOptions:, enregistrez votre configuration native à l’aide de BrazeReactInitializer. Ne définissez pas la clé API ni l’endpoint ici. Ils sont fournis depuis JavaScript via Braze.initialize().

L’extrait de code suivant montre un exemple de déploiement AppDelegate.m utilisant BrazeReactInitializer :

1
2
3
4
5
6
7
8
9
10
11
12
13
- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  [BrazeReactInitializer configure:^(BRZConfiguration *configuration) {
    configuration.logger.level = BRZLoggerLevelInfo;
    configuration.push.automation = [[BRZConfigurationPushAutomation alloc] initWithAutomationEnabled:YES];
  } postInitialization:^(Braze *braze) {
    // Store the Braze instance for later use.
  }];

  /* Other configuration */

  return YES;
}

Méthode 1 : Utiliser le plugin Expo

Étape 2.1 : Installer le plugin Braze Expo

Assurez-vous que la version de votre SDK React Native Braze est au moins 1.37.0. Pour la liste complète des versions prises en charge, consultez le dépôt React Native Braze.

L’extrait de code suivant montre la commande pour installer le plugin Braze Expo :

1
npx expo install @braze/expo-plugin
Étape 2.2 : Ajouter le plugin à votre app.json

Dans votre app.json, ajoutez le plugin Braze Expo. Vous pouvez fournir les options de configuration suivantes :

Méthode Type Description
androidApiKey string Obligatoire. La clé API pour votre application Android, située dans votre tableau de bord Braze sous Gérer les paramètres.
iosApiKey string Obligatoire. La clé API pour votre application iOS, située dans votre tableau de bord Braze sous Gérer les paramètres.
baseUrl string Obligatoire. L’endpoint SDK pour votre application, situé dans votre tableau de bord Braze sous Gérer les paramètres.
enableBrazeIosPush boolean iOS uniquement. Indique s’il faut utiliser Braze pour gérer les notifications push sur iOS. Introduit dans le SDK React Native v1.38.0 et le plugin Expo v0.4.0.
enableFirebaseCloudMessaging boolean Android uniquement. Indique s’il faut utiliser Firebase Cloud Messaging pour les notifications push. Introduit dans le SDK React Native v1.38.0 et le plugin Expo v0.4.0.
firebaseCloudMessagingSenderId string Android uniquement. Votre ID d’expéditeur Firebase Cloud Messaging. Introduit dans le SDK React Native v1.38.0 et le plugin Expo v0.4.0.
sessionTimeout integer Le délai d’expiration de session Braze pour votre application en secondes.
enableSdkAuthentication boolean Indique s’il faut activer la fonctionnalité d’authentification SDK.
logLevel integer Le niveau de journalisation pour votre application. Le niveau par défaut est 8 et consigne minimalement les informations. Pour activer la journalisation détaillée pour le débogage, utilisez le niveau 0.
minimumTriggerIntervalInSeconds integer L’intervalle de temps minimum en secondes entre les déclencheurs. Par défaut : 30 secondes.
enableAutomaticLocationCollection boolean Indique si la collecte automatique de la localisation est activée (si l’utilisateur l’autorise).
enableGeofence boolean Indique si les géorepérages sont activés.
enableAutomaticGeofenceRequests boolean Indique si les requêtes de géorepérage doivent être effectuées automatiquement.
dismissModalOnOutsideTap boolean iOS uniquement. Indique si un message in-app modal est fermé lorsque l’utilisateur clique en dehors du message in-app.
androidHandlePushDeepLinksAutomatically boolean Android uniquement. Indique si le SDK Braze doit gérer automatiquement les deep links push.
androidPushNotificationHtmlRenderingEnabled boolean Android uniquement. Définit si le contenu textuel d’une notification push doit être interprété et rendu en HTML à l’aide de android.text.Html.fromHtml.
androidNotificationAccentColor string Android uniquement. Définit la couleur d’accentuation des notifications Android.
androidNotificationLargeIcon string Android uniquement. Définit la grande icône des notifications Android.
androidNotificationSmallIcon string Android uniquement. Définit la petite icône des notifications Android.
iosRequestPushPermissionsAutomatically boolean iOS uniquement. Indique si l’utilisateur doit être automatiquement invité à autoriser les notifications push au lancement de l’application.
enableBrazeIosRichPush boolean iOS uniquement. Indique s’il faut activer les fonctionnalités de push riche pour iOS.
enableBrazeIosPushStories boolean iOS uniquement. Indique s’il faut activer les Push Stories Braze pour iOS.
iosPushStoryAppGroup string iOS uniquement. Le groupe d’applications utilisé pour les Push Stories iOS.
iosUseUUIDAsDeviceId boolean iOS uniquement. Indique si l’identifiant d’appareil utilisera un UUID généré aléatoirement.
iosForwardUniversalLinks boolean iOS uniquement. Spécifie si le SDK doit automatiquement reconnaître et transmettre les liens universels aux méthodes système (par défaut : false). Lorsque activé, le SDK transmettra automatiquement les liens universels aux méthodes système définies dans Prise en charge des liens universels dans votre application. Introduit dans le SDK React Native v11.1.0 et le plugin Expo v3.2.0.

L’extrait de code suivant montre un exemple de configuration app.json :

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
{
  "expo": {
    "plugins": [
      [
        "@braze/expo-plugin",
        {
          "androidApiKey": "YOUR-ANDROID-API-KEY",
          "iosApiKey": "YOUR-IOS-API-KEY",
          "baseUrl": "YOUR-SDK-ENDPOINT",
          "sessionTimeout": 60,
          "enableGeofence": false,
          "enableBrazeIosPush": false,
          "enableFirebaseCloudMessaging": false,
          "firebaseCloudMessagingSenderId": "YOUR-FCM-SENDER-ID",
          "androidHandlePushDeepLinksAutomatically": true,
          "enableSdkAuthentication": false,
          "logLevel": 0,
          "minimumTriggerIntervalInSeconds": 0,
          "enableAutomaticLocationCollection": false,
          "enableAutomaticGeofenceRequests": false,
          "dismissModalOnOutsideTap": true,
          "androidPushNotificationHtmlRenderingEnabled": true,
          "androidNotificationAccentColor": "#ff3344",
          "androidNotificationLargeIcon": "@drawable/custom_app_large_icon",
          "androidNotificationSmallIcon": "@drawable/custom_app_small_icon",
          "iosRequestPushPermissionsAutomatically": false,
          "enableBrazeIosPushStories": true,
          "iosPushStoryAppGroup": "group.com.example.myapp.PushStories",
          "iosForwardUniversalLinks": false
        }
      ],
    ]
  }
}
Configurer les icônes de notification push Android

Lorsque vous utilisez androidNotificationLargeIcon et androidNotificationSmallIcon, suivez ces bonnes pratiques pour un affichage correct des icônes :

Emplacement et format des icônes

Pour utiliser des icônes de notification push personnalisées avec le plugin Braze Expo :

  1. Créez vos fichiers d’icônes en suivant les exigences répertoriées dans la section Exigences relatives aux icônes.
  2. Placez-les dans les répertoires natifs Android de votre projet à l’emplacement android/app/src/main/res/drawable-<density>/ (par exemple, android/app/src/main/res/drawable-mdpi/, drawable-hdpi/, ou similaire.)
  3. Alternativement, si vous gérez les ressources dans votre répertoire React Native, vous pouvez utiliser la configuration d’icônes dans app.json d’Expo ou créer un plugin de configuration Expo pour copier les icônes dans les dossiers drawable Android pendant le prebuild.

Le plugin Braze Expo référence ces icônes à l’aide du système de ressources drawable d’Android.

Exigences relatives aux icônes

  • Petite icône : Doit être une silhouette blanche sur un fond transparent (il s’agit d’une exigence de la plateforme Android).
  • Grande icône : Peut être une image en couleurs.
  • Format : Le format PNG est recommandé.
  • Nommage : Utilisez uniquement des lettres minuscules, des chiffres et des caractères de soulignement (par exemple, my_large_icon.png).

Configuration dans app.json

L’extrait de code suivant montre comment référencer les icônes de notification Android dans app.json à l’aide du préfixe @drawable/ :

1
2
3
4
5
6
7
8
9
10
11
12
13
{
  "expo": {
    "plugins": [
      [
        "@braze/expo-plugin",
        {
          "androidNotificationLargeIcon": "@drawable/large_icon",
          "androidNotificationSmallIcon": "@drawable/small_icon"
        }
      ]
    ]
  }
}

Fonctionnement

Le plugin Braze Expo référence vos fichiers d’icônes à partir des répertoires drawable d’Android. Lorsque vous exécutez npx expo prebuild, Expo génère la structure de projet Android native. Vos icônes doivent être présentes dans les dossiers drawable d’Android (placées manuellement ou copiées via un plugin de configuration) avant le processus de build. Le plugin configure ensuite le SDK Braze pour utiliser ces ressources drawable par leurs noms (sans chemin ni extension), c’est pourquoi le préfixe @drawable/ est requis dans votre configuration.

Pour plus d’informations sur les icônes de notification Android, consultez les directives d’icônes de notification Android.

Étape 2.3 : Compiler et exécuter votre application

Le prebuild de votre application génère les fichiers natifs nécessaires au fonctionnement du plugin Braze Expo.

L’extrait de code suivant montre la commande pour effectuer le prebuild de votre application :

1
npx expo prebuild

Exécutez votre application comme indiqué dans la documentation Expo. Gardez à l’esprit que si vous apportez des modifications aux options de configuration, vous devrez effectuer à nouveau le prebuild et l’exécution de l’application.

Méthode 2 : Utiliser la CLI React Native

Configurer Android

Étape 2.1 : Ajouter le plugin Kotlin Gradle

L’extrait de code suivant montre comment ajouter le plugin Kotlin Gradle dans votre fichier build.gradle de niveau supérieur sous buildscript > dependencies :

1
2
3
4
5
6
7
buildscript {
    dependencies {
        ...
        // Choose your Kotlin version
        classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.10")
    }
}

Cela ajoute Kotlin à votre projet.

Étape 2.2 : Configurer le SDK Braze

Pour vous connecter aux serveurs Braze, créez un fichier braze.xml dans le dossier res/values de votre projet. L’extrait de code suivant montre un exemple de configuration braze.xml. Remplacez la clé API et l’endpoint par vos valeurs :

1
2
3
4
5
<?xml version="1.0" encoding="utf-8"?>
<resources>
  <string translatable="false" name="com_braze_api_key">YOU_APP_IDENTIFIER_API_KEY</string>
  <string translatable="false" name="com_braze_custom_endpoint">YOUR_CUSTOM_ENDPOINT_OR_CLUSTER</string>
</resources>

L’extrait de code suivant montre les permissions requises pour votre fichier AndroidManifest.xml :

1
2
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

Étape 2.3 : Implémenter le suivi des sessions utilisateur

Les appels à openSession() et closeSession() sont gérés automatiquement. L’extrait de code suivant montre ce qu’il faut ajouter dans la méthode onCreate() de votre classe MainApplication :

1
2
3
4
5
6
7
8
import com.braze.BrazeActivityLifecycleCallbackListener;

@Override
public void onCreate() {
    super.onCreate();
    ...
    registerActivityLifecycleCallbacks(new BrazeActivityLifecycleCallbackListener());
}
1
2
3
4
5
6
7
import com.braze.BrazeActivityLifecycleCallbackListener

override fun onCreate() {
    super.onCreate()
    ...
    registerActivityLifecycleCallbacks(BrazeActivityLifecycleCallbackListener())
}

Étape 2.4 : Gérer les mises à jour d’intent

Si votre MainActivity a android:launchMode défini sur singleTask, l’extrait de code suivant montre ce qu’il faut ajouter à votre classe MainActivity :

1
2
3
4
5
@Override
public void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    setIntent(intent);
}
1
2
3
4
override fun onNewIntent(intent: Intent) {
    super.onNewIntent(intent)
    setIntent(intent)
}
Configurer iOS

Étape 2.5 : (Optionnel) Configurer le Podfile pour les XCFrameworks dynamiques

Pour importer certaines bibliothèques Braze, comme BrazeUI, dans un fichier Objective-C++, vous devez utiliser la syntaxe #import. À partir de la version 7.4.0 du SDK Swift Braze, les binaires disposent d’un canal de distribution optionnel sous forme de XCFrameworks dynamiques, compatible avec cette syntaxe.

Si vous souhaitez utiliser ce canal de distribution, remplacez manuellement les emplacements source CocoaPods dans votre Podfile. L’extrait de code suivant montre un exemple de remplacement. Remplacez {your-version} par la version que vous souhaitez importer :

1
2
3
pod 'BrazeKit', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeKit.podspec'
pod 'BrazeUI', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeUI.podspec'
pod 'BrazeLocation', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeLocation.podspec'

Étape 2.6 : Installer les pods

Puisque React Native lie automatiquement les bibliothèques à la plateforme native, vous pouvez installer le SDK à l’aide de CocoaPods.

L’extrait de code suivant montre comment installer les pods depuis le dossier racine du projet :

1
2
3
4
5
# To install using the React Native New Architecture
cd ios && pod install

# To install using the React Native legacy architecture
cd ios && RCT_NEW_ARCH_ENABLED=0 pod install

Étape 2.7 : Configurer le SDK Braze

L’extrait de code suivant montre comment importer le SDK Braze en haut du fichier AppDelegate.swift :

1
2
import BrazeKit
import braze_react_native_sdk

Dans la méthode application(_:didFinishLaunchingWithOptions:), remplacez la clé API et l’endpoint par les valeurs de votre application. Ensuite, créez l’instance Braze à l’aide de la configuration, et créez une propriété statique sur l’AppDelegate pour un accès facile.

L’extrait de code suivant montre un exemple de configuration AppDelegate.swift :

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
func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil
) -> Bool {
    // Setup Braze
    let configuration = Braze.Configuration(
        apiKey: "{BRAZE_API_KEY}",
        endpoint: "{BRAZE_ENDPOINT}")
    // Enable logging and customize the configuration here.
    configuration.logger.level = .info
    let braze = BrazeReactBridge.perform(
      #selector(BrazeReactBridge.initBraze(_:)),
      with: configuration
    ).takeUnretainedValue() as! Braze

    AppDelegate.braze = braze

    /* Other configuration */

    return true
}

// MARK: - AppDelegate.braze

static var braze: Braze? = nil

L’extrait de code suivant montre comment importer le SDK Braze en haut du fichier AppDelegate.m :

1
2
#import <BrazeKit/BrazeKit-Swift.h>
#import "BrazeReactBridge.h"

Dans la méthode application:didFinishLaunchingWithOptions:, remplacez la clé API et l’endpoint par les valeurs de votre application. Ensuite, créez l’instance Braze à l’aide de la configuration, et créez une propriété statique sur l’AppDelegate pour un accès facile.

L’extrait de code suivant montre un exemple de configuration AppDelegate.m :

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
- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  // Setup Braze
  BRZConfiguration *configuration = [[BRZConfiguration alloc] initWithApiKey:@"{BRAZE_API_KEY}"
                                                                    endpoint:@"{BRAZE_ENDPOINT}"];
  // Enable logging and customize the configuration here.
  configuration.logger.level = BRZLoggerLevelInfo;
  Braze *braze = [BrazeReactBridge initBraze:configuration];
  AppDelegate.braze = braze;

  /* Other configuration */

  return YES;
}

#pragma mark - AppDelegate.braze

static Braze *_braze = nil;

+ (Braze *)braze {
  return _braze;
}

+ (void)setBraze:(Braze *)braze {
  _braze = braze;
}

Étape 3 : Initialiser le SDK

L’extrait de code suivant montre comment importer la bibliothèque dans votre code React Native :

1
import Braze from "@braze/react-native-sdk";

Ensuite, appelez Braze.initialize() avec votre clé API d’identifiant d’application et l’endpoint SDK pour créer l’instance Braze. Consultez les options suivantes pour savoir où appeler cette méthode dans le flux de votre application.

Initialisation standard

L’extrait de code suivant montre comment initialiser le SDK au démarrage de votre application en appelant Braze.initialize() dans un useEffect :

1
2
3
4
5
6
7
8
9
10
11
12
import React, { useEffect } from "react";
import Braze from "@braze/react-native-sdk";

const App = () => {
  useEffect(() => {
    Braze.initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT");
  }, []);

  return (
    // Your app components
  );
};

Initialisation différée

L’extrait de code suivant montre comment différer l’initialisation du SDK à un moment ultérieur de la session. Par exemple, après que l’utilisateur a donné son consentement ou s’est connecté :

1
2
3
function onUserConsent() {
  Braze.initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT");
}

Clés API spécifiques à la plateforme

L’extrait de code suivant montre comment utiliser la détection de plateforme lorsque vos applications Android et iOS utilisent des clés API différentes :

1
2
3
4
5
6
7
8
9
import { Platform } from "react-native";
import Braze from "@braze/react-native-sdk";

const apiKey = Platform.select({
  android: "YOUR-ANDROID-API-KEY",
  ios: "YOUR-IOS-API-KEY",
}) ?? "";

Braze.initialize(apiKey, "YOUR-SDK-ENDPOINT");

Réinitialisation

Vous pouvez appeler Braze.initialize() plusieurs fois pour réinitialiser le SDK avec une clé API et un endpoint différents en cours de session. Chaque appel supprime l’instance Braze précédente et en crée une nouvelle.

Notifications push au démarrage à froid

Lorsqu’une notification lance votre application depuis un état terminé, Braze stocke le payload de la notification dans la couche native avant le chargement de React Native. De ce fait, l’initialisation depuis la couche React Native ne modifie pas le fait que le payload atteigne votre application. Pour gérer ces notifications, ajoutez les hooks natifs, puis lisez le payload dans votre code React Native.

Sur Android, appelez BrazeReactUtils.populateInitialPushPayloadFromIntent(intent) dans la méthode onCreate() de votre classe MainActivity :

1
2
3
4
5
6
import com.braze.reactbridge.BrazeReactUtils

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    BrazeReactUtils.populateInitialPushPayloadFromIntent(intent)
}

Sur iOS, appelez populateInitialPayload(fromLaunchOptions:) dans la méthode application(_:didFinishLaunchingWithOptions:) de votre AppDelegate :

1
2
3
if let launchOptions {
  BrazeReactUtils.sharedInstance().populateInitialPayload(fromLaunchOptions: launchOptions)
}

Ensuite, lisez le payload dans votre code React Native :

1
2
3
4
5
Braze.getInitialPushPayload((pushPayload) => {
  if (pushPayload) {
    // Handle the notification, such as navigating to the pushPayload.url value
  }
});

Vos paramètres d’enregistrement push restent dans votre configuration native pour les deux emplacements d’initialisation, et Braze les applique lorsque Braze.initialize() s’exécute :

  • Sur Android, définissez com_braze_firebase_cloud_messaging_registration_enabled et com_braze_firebase_cloud_messaging_sender_id dans braze.xml.
  • Sur iOS, définissez les propriétés push sur l’objet de configuration dans la closure configure que vous passez à BrazeReactInitializer.configure.

Si votre application dépend des deep links des notifications qui la lancent depuis un état terminé, utilisez le SDK React Native 21.1.0 ou ultérieur. Ces versions incluent des corrections pour la capture du payload push initial et la résolution des deep links push sur Android. Pour la liste complète des modifications, consultez le journal des modifications du SDK React Native.

Pour le SDK React Native 19.1.0 et versions antérieures, l’initialisation native se fait à l’étape 2. Importez la bibliothèque dans votre code React Native pour appeler les méthodes Braze. Pour plus de détails, consultez notre projet d’exemple.

1
import Braze from "@braze/react-native-sdk";

Étape 4 : Tester l’intégration (optionnel)

Vous pouvez vérifier que le SDK est intégré en consultant les statistiques de session dans le tableau de bord. Si vous exécutez votre application sur l’une ou l’autre plateforme, vous devriez voir une nouvelle session dans le tableau de bord (dans la section Aperçu).

L’extrait de code suivant montre comment ouvrir une session pour un utilisateur particulier dans votre application :

1
2
3
4
import Braze from "@braze/react-native-sdk";

Braze.initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT");
Braze.changeUser("{some-user-id}");

Recherchez l’utilisateur avec {some-user-id} dans le tableau de bord sous Audience > Rechercher des utilisateurs. Vous pouvez y vérifier que les données de session et d’appareil ont été consignées.

Pour tester votre intégration SDK, l’extrait de code suivant montre comment démarrer une nouvelle session sur l’une ou l’autre plateforme pour un utilisateur.

1
Braze.changeUser("userId");

L’extrait de code suivant montre un exemple d’attribution de l’identifiant utilisateur au démarrage de l’application :

1
2
3
4
5
6
7
8
9
10
11
12
13
import React, { useEffect } from "react";
import Braze from "@braze/react-native-sdk";

const App = () => {
  useEffect(() => {
    Braze.changeUser("some-user-id");
  }, []);

  return (
    <div>
      ...
    </div>
  )

Dans le tableau de bord de Braze, accédez à Recherche d’utilisateurs et recherchez l’utilisateur avec l’identifiant correspondant à some-user-id. Vous pouvez y vérifier que les données de session et d’appareil ont été consignées.

Tests avec Jest

Les tests unitaires React Native qui importent le SDK Braze nécessitent des mocks pour les modules natifs et le Turbo Module Braze. Le dépôt du SDK React Native de Braze fournit une configuration Jest de référence dans __tests__/jest.setup.js. Ajoutez ce fichier (ou une copie adaptée) à setupFiles dans votre configuration Jest afin que NativeEventEmitter, TurboModuleRegistry et BrazeReactBridge soient correctement simulés lorsque vous testez des composants qui appellent les API de Braze.

Étapes suivantes

Après avoir intégré le SDK de Braze, vous pouvez commencer à mettre en œuvre les fonctionnalités de communication courantes :

  • Notifications push : Configurez et envoyez des notifications push à vos utilisateurs.
  • In-App Messages : Affichez des messages contextuels dans votre application.
  • Bannières : Affichez des bannières persistantes dans l’interface de votre application.

Intégrer le SDK Roku

Étape 1 : Ajouter les fichiers

Les fichiers du SDK Braze se trouvent dans le répertoire sdk_files du dépôt du SDK Roku de Braze.

  1. Ajoutez BrazeSDK.brs à votre application dans le répertoire source.
  2. Ajoutez BrazeTask.brs et BrazeTask.xml à votre application dans le répertoire components.

Étape 2 : Ajouter les références

Ajoutez une référence à BrazeSDK.brs dans votre scène principale à l’aide de l’élément script suivant :

1
<script type="text/brightscript" uri="pkg:/source/BrazeSDK.brs"/>

Étape 3 : Configurer

Dans main.brs, définissez la configuration de Braze sur le nœud global :

1
2
3
4
5
6
7
8
globalNode = screen.getGlobalNode()
config = {}
config_fields = BrazeConstants().BRAZE_CONFIG_FIELDS
config[config_fields.API_KEY] = {YOUR_API_KEY}
' example endpoint: "https://sdk.iad-01.braze.com/"
config[config_fields.ENDPOINT] = {YOUR_ENDPOINT}
config[config_fields.HEARTBEAT_FREQ_IN_SECONDS] = 5
globalNode.addFields({brazeConfig: config})

Vous pouvez trouver votre endpoint SDK et votre clé API dans le tableau de bord de Braze.

Étape 4 : Initialiser Braze

Initialisez l’instance de Braze :

1
2
m.BrazeTask = createObject("roSGNode", "BrazeTask")
m.Braze = getBrazeInstance(m.BrazeTask)

Configurations optionnelles

Journalisation

Pour déboguer votre intégration Braze, vous pouvez consulter la console de débogage Roku pour les journaux de Braze. Reportez-vous à la section Debugging code de Roku Developers pour en savoir plus.

À propos du SDK Unity Braze

Pour obtenir la liste complète des types, fonctions, variables et autres, consultez le fichier de déclaration Unity. En outre, si vous avez déjà intégré Unity manuellement pour iOS, vous pouvez passer à une intégration automatisée à la place.

Intégration du SDK Unity

Conditions préalables

Avant de commencer, vérifiez que votre environnement est pris en charge par la dernière version du SDK Braze Unity.

Étape 1 : Choisissez votre package Braze Unity

Le .unitypackage Braze regroupe des liaisons natives pour les plateformes Android et iOS, ainsi qu’une interface C#.

Plusieurs packages Braze Unity sont disponibles au téléchargement sur la page des versions de Braze Unity :

  • Appboy.unitypackage
    • Ce package regroupe les SDK Android et iOS de Braze ainsi que la dépendance SDWebImage pour le SDK iOS, nécessaire au bon fonctionnement des messages in-app et des fonctionnalités Content Cards de Braze sur iOS. Le framework SDWebImage est utilisé pour télécharger et afficher des images, y compris des GIF. Si vous souhaitez utiliser l’ensemble des fonctionnalités de Braze, téléchargez et importez ce package.
  • Appboy-nodeps.unitypackage
    • Ce package est similaire à Appboy.unitypackage, à l’exception du framework SDWebImage qui n’est pas inclus. Ce package est utile si vous ne souhaitez pas que le framework SDWebImage soit présent dans votre application iOS.

Le .unitypackage Braze regroupe des liaisons natives pour les plateformes Android et iOS, ainsi qu’une interface C#.

Le package Braze Unity est disponible au téléchargement sur la page des versions de Braze Unity avec deux options d’intégration :

  1. Appboy.unitypackage uniquement
    • Ce package regroupe les SDK Android et iOS de Braze sans aucune dépendance supplémentaire. Avec cette méthode d’intégration, les messages in-app et les fonctionnalités Content Cards de Braze ne fonctionneront pas correctement sur iOS. Si vous souhaitez utiliser l’ensemble des fonctionnalités de Braze sans code personnalisé, utilisez plutôt l’option ci-dessous.
    • Pour utiliser cette option d’intégration, assurez-vous que la case à côté de Import SDWebImage dependency est décochée dans l’interface Unity sous « Braze Configuration ».
  2. Appboy.unitypackage avec SDWebImage
    • Cette option d’intégration regroupe les SDK Android et iOS de Braze ainsi que la dépendance SDWebImage pour le SDK iOS, nécessaire au bon fonctionnement des messages in-app et des fonctionnalités Content Cards de Braze sur iOS. Le framework SDWebImage est utilisé pour télécharger et afficher des images, y compris des GIF. Si vous souhaitez utiliser l’ensemble des fonctionnalités de Braze, téléchargez et importez ce package.
    • Pour importer automatiquement SDWebImage, veillez à cocher la case à côté de Import SDWebImage dependency dans l’interface Unity sous « Braze Configuration ».

Étape 2 : Importer le package

Dans l’éditeur Unity, importez le package dans votre projet Unity en accédant à Assets > Import Package > Custom Package. Cliquez ensuite sur Import.

Vous pouvez également suivre les instructions d’importation de packages d’actifs Unity pour un guide plus détaillé sur l’importation de packages Unity personnalisés.

Dans l’éditeur Unity, importez le package dans votre projet Unity en accédant à Assets > Import Package > Custom Package. Cliquez ensuite sur Import.

Vous pouvez également suivre les instructions d’importation de packages d’actifs Unity pour un guide plus détaillé sur l’importation de packages Unity personnalisés.

Étape 3 : Configurer le SDK

Étape 3.1 : Configurer AndroidManifest.xml

Configurez AndroidManifest.xml pour que le SDK Braze puisse fonctionner. Si votre application ne dispose pas d’un AndroidManifest.xml, vous pouvez utiliser le modèle suivant. Sinon, si vous avez déjà un AndroidManifest.xml, assurez-vous que les sections manquantes suivantes sont ajoutées à votre AndroidManifest.xml existant.

  1. Accédez au répertoire Assets/Plugins/Android/ et ouvrez votre fichier AndroidManifest.xml. Il s’agit de l’emplacement par défaut dans l’éditeur Unity.
  2. Dans votre AndroidManifest.xml, ajoutez les permissions et activités requises à partir du modèle suivant.
  3. Lorsque vous aurez terminé, votre AndroidManifest.xml ne devrait contenir qu’une seule Activity avec "android.intent.category.LAUNCHER".
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
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="REPLACE_WITH_YOUR_PACKAGE_NAME">

  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  <uses-permission android:name="android.permission.INTERNET" />

  <application android:icon="@drawable/app_icon"
               android:label="@string/app_name">

    <!-- Calls the necessary Braze methods to ensure that analytics are collected and that push notifications are properly forwarded to the Unity application. -->
    <activity android:name="com.braze.unity.BrazeUnityPlayerActivity"
      android:theme="@style/UnityThemeSelector"
      android:label="@string/app_name"
      android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"
      android:screenOrientation="sensor">
      <meta-data android:name="android.app.lib_name" android:value="unity" />
      <meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true" />
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
    </activity>

    <!-- A Braze specific FirebaseMessagingService used to handle push notifications. -->
    <service android:name="com.braze.push.BrazeFirebaseMessagingService"
      android:exported="false">
      <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT" />
      </intent-filter>
    </service>
  </application>
</manifest>

Étape 3.2 : Mettre à jour AndroidManifest.xml avec le nom de votre package

Pour trouver le nom de votre package, cliquez sur File > Build Settings > Player Settings > Android Tab.

Onglet Android des paramètres du lecteur Unity affichant le nom du package de l'application.

Dans votre AndroidManifest.xml, toutes les instances de REPLACE_WITH_YOUR_PACKAGE_NAME doivent être remplacées par votre Package Name de l’étape précédente.

Étape 3.3 : Ajouter les dépendances Gradle

Pour ajouter des dépendances Gradle à votre projet Unity, activez d’abord « Custom Main Gradle Template » dans vos paramètres de publication. Cela créera un fichier Gradle modèle que votre projet utilisera. Un fichier Gradle gère la configuration des dépendances et d’autres paramètres du projet au moment de la compilation. Pour plus d’informations, consultez le fichier mainTemplate.gradle de l’application exemple Braze Unity.

Les dépendances suivantes sont requises :

1
2
3
4
5
6
implementation 'com.google.firebase:firebase-messaging:22.0.0'
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0"
implementation "androidx.recyclerview:recyclerview:1.2.1"
implementation "org.jetbrains.kotlin:kotlin-stdlib:1.6.0"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1"
implementation 'androidx.core:core:1.6.0'

Vous pouvez également définir ces dépendances à l’aide de l’External Dependency gestionnaire.

Étape 3.4 : Automatiser l’intégration Unity Android

Braze fournit une solution Unity native pour automatiser l’intégration Unity Android.

  1. Dans l’éditeur Unity, ouvrez les paramètres de configuration de Braze en accédant à Braze > Braze Configuration.
  2. Cochez la case Automate Unity Android Integration.
  3. Dans le champ Braze API Key, saisissez la clé API de votre application disponible dans Gérer les paramètres depuis le tableau de bord de Braze.

Étape 3.1 : Définir votre clé API

Braze fournit une solution Unity native pour automatiser l’intégration Unity iOS. Cette solution modifie le projet Xcode compilé à l’aide du PostProcessBuildAttribute de Unity et crée une sous-classe de UnityAppController avec la macro IMPL_APP_CONTROLLER_SUBCLASS.

  1. Dans l’éditeur Unity, ouvrez les paramètres de configuration de Braze en accédant à Braze > Braze Configuration.
  2. Cochez la case Automate Unity iOS Integration.
  3. Dans le champ Braze API Key, saisissez la clé API de votre application disponible dans Gérer les paramètres.

Fenêtre de configuration Braze dans Unity avec les champs Automate Unity iOS Integration et Braze API Key.

Si votre application utilise déjà une autre sous-classe de UnityAppController, vous devrez fusionner votre implémentation de sous-classe avec AppboyAppDelegate.mm.

Personnaliser le package Unity

Étape 1 : Cloner le dépôt

Dans votre terminal, clonez le dépôt GitHub du SDK Braze Unity, puis naviguez jusqu’à ce dossier :

1
2
git clone [email protected]:braze-inc/braze-unity-sdk.git
cd ~/PATH/TO/DIRECTORY/braze-unity-sdk
1
2
git clone git@github.com:braze-inc/braze-unity-sdk.git
cd C:\PATH\TO\DIRECTORY\braze-unity-sdk

Étape 2 : Exporter le package depuis le dépôt

Tout d’abord, lancez Unity et laissez-le tourner en arrière-plan. Ensuite, à la racine du dépôt, exécutez la commande suivante pour exporter le package vers braze-unity-sdk/unity-package/.

1
/Applications/Unity/Unity.app/Contents/MacOS/Unity -batchmode -nographics -projectPath "$(pwd)" -executeMethod Appboy.Editor.Build.ExportAllPackages -quit
1
"%UNITY_PATH%" -batchmode -nographics -projectPath "%PROJECT_ROOT%" -executeMethod Appboy.Editor.Build.ExportAllPackages -quit

Étape 3 : Importer le package dans Unity

  1. Dans Unity, importez le package souhaité dans votre projet Unity en accédant à Assets > Import Package > Custom Package.
  2. S’il y a des fichiers que vous ne souhaitez pas importer, désélectionnez-les maintenant.
  3. Personnalisez le package Unity exporté situé dans Assets/Editor/Build.cs.

Passer à une intégration automatisée (Swift uniquement)

Pour profiter de l’intégration iOS automatisée proposée dans le SDK Braze Unity, suivez ces étapes pour passer d’une intégration manuelle à une intégration automatisée.

  1. Supprimez tout le code lié à Braze de la sous-classe UnityAppController de votre projet Xcode.
  2. Supprimez les bibliothèques iOS de Braze de votre projet Unity ou Xcode (telles que Appboy_iOS_SDK.framework et SDWebImage.framework).
  3. Importez à nouveau le package Braze Unity dans votre projet. Pour une procédure complète, consultez Étape 2 : Importer le package.
  4. Définissez à nouveau votre clé API. Pour une procédure complète, consultez Étape 3.1 : Définir votre clé API.

Configurations optionnelles

Journalisation détaillée

Pour activer la journalisation détaillée dans l’éditeur Unity, procédez comme suit :

  1. Ouvrez les paramètres de configuration de Braze en accédant à Braze > Braze Configuration.
  2. Cliquez sur le menu déroulant Show Braze Android Settings.
  3. Dans le champ SDK Log Level, saisissez la valeur « 0 ».

Compatibilité Prime 31

Pour utiliser le plug-in Braze Unity avec les plug-ins Prime31, modifiez le fichier AndroidManifest.xml de votre projet pour utiliser les classes Activity compatibles Prime31. Remplacez toutes les références de com.braze.unity.BrazeUnityPlayerActivity par com.braze.unity.prime31compatible.BrazeUnityPlayerActivity

Amazon Device Messaging (ADM)

Braze prend en charge l’intégration des notifications push ADM dans les applications Unity. Si vous souhaitez intégrer les notifications push ADM, créez un fichier appelé api_key.txt contenant votre clé API ADM et placez-le dans le dossier Plugins/Android/assets/. Pour plus d’informations sur l’intégration d’ADM avec Braze, consultez nos instructions d’intégration des notifications push ADM.

Extension du lecteur Braze Unity (Android uniquement)

L’exemple de fichier AndroidManifest.xml fourni contient une classe Activity enregistrée, BrazeUnityPlayerActivity. Cette classe est intégrée au SDK Braze et étend UnityPlayerActivity avec la gestion des sessions, l’enregistrement des messages in-app, la journalisation analytique des notifications push, et bien plus encore. Consultez Unity pour plus d’informations sur l’extension de la classe UnityPlayerActivity.

Si vous créez votre propre UnityPlayerActivity personnalisée dans un projet de bibliothèque ou de plug-in, vous devrez étendre notre BrazeUnityPlayerActivity pour intégrer votre fonctionnalité personnalisée avec Braze. Avant de commencer à étendre BrazeUnityPlayerActivity, suivez nos instructions pour intégrer Braze dans votre projet Unity.

  1. Ajoutez le SDK Android de Braze en tant que dépendance à votre projet de bibliothèque ou de plug-in, comme décrit dans les instructions d’intégration du SDK Android de Braze.
  2. Intégrez notre .aar Unity, qui contient nos fonctionnalités spécifiques à Unity, dans votre projet de bibliothèque Android que vous développez pour Unity. Le fichier appboy-unity.aar est disponible dans notre dépôt public. Une fois notre bibliothèque Unity intégrée avec succès, modifiez votre UnityPlayerActivity pour étendre BrazeUnityPlayerActivity.
  3. Exportez votre projet de bibliothèque ou de plug-in et déposez-le dans /<your-project>/Assets/Plugins/Android comme d’habitude. N’incluez pas de code source Braze dans votre bibliothèque ou votre plug-in, car il sera déjà présent dans /<your-project>/Assets/Plugins/Android.
  4. Modifiez votre /<your-project>/Assets/Plugins/Android/AndroidManifest.xml pour spécifier votre sous-classe de BrazeUnityPlayerActivity comme activité principale.

Vous devriez maintenant pouvoir générer un .apk depuis l’IDE Unity qui est entièrement intégré à Braze et contient votre fonctionnalité UnityPlayerActivity personnalisée.

Résolution des problèmes

Erreur : « File could not be read »

Les erreurs ressemblant à ce qui suit peuvent être ignorées en toute sécurité. Le logiciel Apple utilise une extension PNG propriétaire appelée CgBI, qu’Unity ne reconnaît pas. Ces erreurs n’affecteront ni votre compilation iOS ni l’affichage correct des images associées dans le bundle Braze.

1
Could not create texture from Assets/Plugins/iOS/AppboyKit/Appboy.bundle/...png: File could not be read

Intégration du SDK .NET MAUI

L’intégration du SDK Braze .NET MAUI (anciennement Xamarin) vous fournira des fonctionnalités d’analyse de base ainsi que des messages in-app qui vous permettront d’interagir avec vos utilisateurs.

Conditions préalables

Avant de pouvoir réaliser l’intégration du SDK Braze .NET MAUI, veuillez vous assurer que vous répondez aux exigences suivantes :

  • À partir de la version 3.0.0, ce SDK nécessite l’utilisation de .NET 6+ et supprime la prise en charge des projets utilisant le framework Xamarin.
  • À partir de la version 4.0.0, ce SDK a cessé de prendre en charge Xamarin et Xamarin.Forms et a ajouté la prise en charge de .NET MAUI. Consultez la politique de Microsoft concernant la fin du support pour Xamarin.

Étape 1 : Obtenir la liaison .NET MAUI

Une liaison .NET MAUI est un moyen d’utiliser des bibliothèques natives dans les applications .NET MAUI. L’implémentation d’une liaison consiste à créer une interface C# avec la bibliothèque, puis à utiliser cette interface dans votre application. Consultez la documentation .NET MAUI. Il existe deux façons d’inclure la liaison du SDK de Braze : en utilisant NuGet ou en compilant à partir de la source.

La méthode d’intégration la plus simple consiste à obtenir le SDK de Braze à partir du dépôt central NuGet.org. Dans la barre latérale de Visual Studio, faites un clic droit sur le dossier Packages et cliquez sur Add Packages.... Recherchez « Braze » et installez le package BrazePlatform.BrazeAndroidBinding dans votre projet.

Pour utiliser les services de localisation et les géorepérages de Braze, installez également le package BrazePlatform.BrazeAndroidLocationBinding.

La deuxième méthode d’intégration consiste à inclure la source de liaison. Sous appboy-component/src/androidnet6, vous trouverez notre code source de liaison ; l’ajout d’une référence de projet au fichier BrazeAndroidBinding.csproj dans votre application .NET MAUI entraînera la création de la liaison avec votre projet et vous donnera accès au SDK Android de Braze.

Pour utiliser les services de localisation et les géorepérages de Braze, ajoutez également une référence de projet au fichier BrazeAndroidLocationBinding.csproj situé sous appboy-component/src/androidnet6/BrazeAndroidLocationBinding.

Une liaison .NET MAUI est un moyen d’utiliser des bibliothèques natives dans les applications .NET MAUI. L’implémentation d’une liaison consiste à créer une interface C# avec la bibliothèque, puis à utiliser cette interface dans votre application. Il existe deux façons d’inclure la liaison du SDK de Braze : en utilisant NuGet ou en compilant à partir de la source.

La méthode d’intégration la plus simple consiste à obtenir le SDK de Braze à partir du dépôt central NuGet.org. Dans la barre latérale de Visual Studio, faites un clic droit sur le dossier Packages et cliquez sur Add Packages.... Recherchez « Braze » et installez les derniers packages NuGet .NET MAUI iOS : Braze.iOS.BrazeKit, Braze.iOS.BrazeUI et Braze.iOS.BrazeLocation dans votre projet.

Nous fournissons également les packages de bibliothèques de compatibilité : Braze.iOS.BrazeKitCompat et Braze.iOS.BrazeUICompat, pour faciliter votre migration vers .NET MAUI.

La deuxième méthode d’intégration consiste à inclure la source de liaison. Sous appboy-component/src/iosnet6, vous trouverez notre code source de liaison ; l’ajout d’une référence de projet au fichier BrazeiOSBinding.csproj dans votre application .NET MAUI entraînera la création de la liaison avec votre projet et vous donnera accès au SDK iOS de Braze. Assurez-vous que BrazeiOSBinding.csproj apparaît dans le dossier « Reference » de votre projet.

Étape 2 : Configurez votre instance Braze

Étape 2.1 : Configurez le SDK de Braze dans Braze.xml

Maintenant que les bibliothèques ont été intégrées, vous devez créer un fichier Braze.xml dans le dossier Resources/values de votre projet. Le contenu de ce fichier devrait ressembler à l’extrait de code suivant :

1
2
3
4
5
6
7
8
9
  <?xml version="1.0" encoding="utf-8"?>
  <resources>
    <string translatable="false" name="com_braze_api_key">YOUR_API_KEY</string>
    <string translatable="false" name="com_braze_custom_endpoint">YOUR_CUSTOM_ENDPOINT_OR_CLUSTER</string>
    <string-array name="com_braze_internal_sdk_metadata">
      <item>XAMARIN</item>
      <item>NUGET</item>
    </string-array>
  </resources>

Si vous incluez manuellement la source de la liaison, retirez <item>NUGET</item> de votre code.

Étape 2.2 : Ajouter les autorisations requises au manifeste Android

Maintenant que vous avez ajouté votre clé API, vous devez ajouter les autorisations suivantes à votre fichier AndroidManifest.xml :

1
<uses-permission android:name="android.permission.INTERNET" />

Pour obtenir un exemple de votre AndroidManifest.xml, consultez l’exemple d’application Android MAUI.

Étape 2.3 : Suivre les sessions utilisateur et s’enregistrer pour les messages in-app

Pour activer le suivi des sessions utilisateur et enregistrer votre application pour les messages in-app, ajoutez l’appel suivant à la méthode de cycle de vie OnCreate() de la classe Application dans votre application :

1
RegisterActivityLifecycleCallbacks(new BrazeActivityLifecycleCallbackListener());

Lors de la configuration de votre instance Braze, ajoutez l’extrait de code suivant pour configurer votre instance :

1
2
3
var configuration = new BRZConfiguration("YOUR_API_KEY", "YOUR_ENDPOINT");
configuration.Api.AddSDKMetadata(new[] { BRZSDKMetadata.Xamarin });
braze = new Braze(configuration);

Consultez le fichier App.xaml.cs dans l’exemple d’application iOS MAUI.

Étape 3 : Tester l’intégration

Vous pouvez désormais lancer votre application et voir les sessions enregistrées dans le tableau de bord de Braze (ainsi que les informations relatives à l’appareil et d’autres données d’analyse). Pour une explication approfondie des bonnes pratiques pour l’intégration SDK de base, consultez les instructions d’intégration Android.

Vous pouvez désormais lancer votre application et voir les sessions enregistrées dans le tableau de bord de Braze. Pour une explication approfondie des bonnes pratiques pour l’intégration SDK de base, consultez les instructions d’intégration iOS.

Intégration de l’application ChatGPT

Configuration

Étape 1 : Obtenir le fichier d’intégration Braze

Copiez le fichier braze.js depuis notre dépôt d’intégration des applications ChatGPT dans votre projet. Ce fichier contient toutes les configurations et fonctions d’aide nécessaires au SDK Braze.

Étape 2 : Installer les dépendances

Installez notre SDK Web pour bénéficier des fonctionnalités les plus récentes de Braze :

Pour l’intégration côté client :

1
npm install @braze/web-sdk

Implementation

There are two ways to integrate Braze with your ChatGPT app depending on your use case:

Client-side integration (custom widgets)

For displaying Braze messaging and tracking user interactions within your custom ChatGPT app widgets, use the Web SDK integration. A full messaging example can be found in our sample repository here.

Configure widget metadata

Add the following metadata to your MCP server file to allow Braze domains, ensuring to update the CDN domain based on your region:

1
2
3
4
5
6
7
8
9
"openai/widgetCSP": {
  connect_domains: ["https://YOUR-SDK-ENDPOINT"],
  resource_domains: [
    "https://appboy-images.com",
    "https://braze-images.com",
    "https://cdn.braze.eu",
    "https://use.fontawesome.com"
  ],
}

Remplacez YOUR-SDK-ENDPOINT par votre endpoint SDK Braze réel.

Configurer le hook useBraze

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import { useBraze } from "./utils/braze";

function YourWidget() {
  const braze = useBraze({
    apiKey: "your-braze-api-key",
    baseUrl: "your-braze-endpoint.braze.com",
  });

  useEffect(() => {
    if (!braze.isInitialized) {
      return;
    }

    // Set user identity
    braze.changeUser("user-id-123");

    // Log widget interactions
    braze.logCustomEvent("viewed_pizzaz_list");
  }, [braze.isInitialized]);

  return (
    // Your widget JSX
  );
}

Afficher les Content Cards Braze

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
const [cards, setCards] = useState([]);

useEffect(() => {
  // Get cached content cards
  setCards(braze.getCachedContentCards()?.cards ?? []);

  // Subscribe to content card updates
  braze.subscribeToContentCardsUpdates((contentCards) => {
    setCards(contentCards.cards);
  });

  // Open session
  braze.openSession();

  return () => {
    braze.removeAllSubscriptions();
  }
}, []);

Suivre les événements du widget

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Track user interactions within your widget
const handleButtonClick = () => {
  braze.logCustomEvent("widget_button_clicked", {
    button_type: "save_list",
    widget_name: "pizza_list"
  });
};

const handleItemInteraction = (itemId) => {
  braze.logCustomEvent("item_interacted", {
    item_id: itemId,
    interaction_type: "view_details"
  });
};

Intégration côté serveur (serveur MCP)

Si vous avez également besoin d’une intégration côté serveur pour les fonctionnalités d’envoi de messages sur votre serveur MCP, contactez [email protected]. Pour suivre les événements et les achats depuis votre serveur MCP, utilisez notre REST API.

À propos du SDK Braze Vega

Le SDK Braze Vega vous permet de collecter des données analytiques et d’afficher des messages in-app enrichis à vos utilisateurs. La plupart des méthodes du SDK Braze Vega sont asynchrones et renvoient des promesses qui doivent être attendues ou résolues.

Intégration du SDK Braze Vega

Étape 1 : Installer la bibliothèque Braze

Installez le SDK Braze Vega à l’aide de votre gestionnaire de paquets préféré.

Si votre projet utilise NPM, vous pouvez ajouter le SDK Braze Vega en tant que dépendance.

1
npm install @braze/vega-sdk --save

Après l’installation, vous pouvez importer les méthodes dont vous avez besoin :

1
import { initialize, changeUser, openSession } from "@braze/vega-sdk";

Si votre projet utilise Yarn, vous pouvez ajouter le SDK Braze Vega en tant que dépendance.

1
yarn add @braze/vega-sdk

Après l’installation, vous pouvez importer les méthodes dont vous avez besoin :

1
import { initialize, changeUser, openSession } from "@braze/vega-sdk";

Étape 2 : Initialiser le SDK

Une fois le SDK Braze Vega ajouté à votre projet, initialisez la bibliothèque avec la clé API et l’URL de l’endpoint du SDK disponibles dans Paramètres > Paramètres de l’application au sein de votre tableau de bord de Braze.

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
import { useEffect } from "react-native";
import {
  initialize,
  changeUser,
  logCustomEvent,
  openSession,
  setCustomUserAttribute,
  setUserCountry
} from "@braze/vega-sdk";

const App = () => {
  useEffect(() => {
    const initBraze = async () => {
      // Initialize the SDK
      await initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT", {
        sessionTimeoutInSeconds: 60,
        appVersionNumber: "1.2.3.4",
        enableLogging: true, // set to `true` for debugging
      });

      // Change user
      await changeUser("user-id-123");

      // Start a session
      await openSession();

      // Log custom events and set user attributes
      logCustomEvent("visited-page", { pageName: "home" });
      setCustomUserAttribute("my-attribute", "my-attribute-value");
      setUserCountry("USA");
    };

    initBraze();
  }, []);

  return (
    // Your app components
  );
};

Configurations optionnelles

Journalisation

Vous pouvez activer la journalisation du SDK pour faciliter le débogage et la résolution des problèmes. Il existe plusieurs façons d’activer la journalisation.

Activer la journalisation lors de l’initialisation

Passez enableLogging: true à initialize() pour enregistrer les messages de débogage dans la console :

1
2
3
initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT", {
  enableLogging: true
});

Activer la journalisation après l’initialisation

Utilisez toggleLogging() pour activer ou désactiver la journalisation du SDK après l’initialisation :

1
2
3
4
import { toggleLogging } from "@braze/vega-sdk";

// Enable logging
toggleLogging();

Journalisation personnalisée

Utilisez setLogger() pour fournir une fonction de journalisation personnalisée et contrôler plus finement la gestion des journaux du SDK :

1
2
3
4
5
6
import { setLogger } from "@braze/vega-sdk";

setLogger((message) => {
  console.log("Braze Custom Logger: " + message);
  // Add your custom logging logic here
});

Options de configuration

Vous pouvez passer des options de configuration supplémentaires à initialize() pour personnaliser le comportement du SDK :

1
2
3
4
5
await initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT", {
  sessionTimeoutInSeconds: 60,        // Configure session timeout (default is 1800 seconds)
  appVersionNumber: "1.2.3.4",        // Set your app version
  enableLogging: true,                 // Enable SDK logging
});

Mise à niveau du SDK

Lorsque vous référencez le SDK Braze Vega depuis NPM ou Yarn, vous pouvez effectuer la mise à niveau vers la dernière version en mettant à jour la dépendance de votre package :

1
2
3
npm update @braze/vega-sdk
# or, using yarn:
yarn upgrade @braze/vega-sdk

Tester votre intégration

Pour vérifier que l’intégration de votre SDK fonctionne correctement :

  1. Initialisez le SDK avec enableLogging: true pour voir les messages de débogage dans la console.
  2. Assurez-vous d’utiliser await changeUser() avant d’appeler d’autres méthodes du SDK.
  3. Appelez await openSession() pour démarrer une session.
  4. Vérifiez dans votre tableau de bord de Braze, sous Aperçu, que les données de session sont bien enregistrées.
  5. Testez la journalisation d’un événement personnalisé et vérifiez qu’il apparaît dans votre tableau de bord.
New Stuff!