Guide du dépôt du SDK Web
À propos du SDK Web de Braze
Le SDK Web de Braze vous permet d’intégrer la plateforme d’engagement client de Braze directement dans vos applications Web. Développé en TypeScript et conçu pour le développement Web moderne, ce SDK offre des outils complets pour la gestion des utilisateurs, l’envoi de messages, l’analyse et les feature flags.
Ce que vous pouvez faire
- Gestion des utilisateurs : Suivez et gérez les identités, les attributs et le comportement des utilisateurs dans votre application Web
- Messages in-app : Affichez des messages et des notifications ciblés pendant que les utilisateurs naviguent activement sur votre site
- Content Cards : Proposez des flux de contenu personnalisés et des cartes promotionnelles mis à jour en temps réel
- Bannières : Affichez des bannières à des emplacements spécifiques de votre site
- Notifications push : Envoyez des notifications push Web pour interagir avec les utilisateurs même lorsqu’ils ne sont pas sur votre site
- Feature flags : Contrôlez le déploiement des fonctionnalités et les tests A/B grâce à la gestion des feature flags côté serveur
- Analyse : Suivez les événements personnalisés, les interactions des utilisateurs et les indicateurs de conversion
- Gestion des sessions : Surveillez les sessions des utilisateurs et leurs habitudes d’engagement
Que vous développiez une application monopage, un site e-commerce ou une plateforme de contenu, le SDK Web de Braze vous fournit les outils nécessaires pour créer des expériences utilisateur personnalisées et engageantes qui favorisent la croissance et la fidélisation.
Conditions préalables
Avant d’intégrer le SDK Web de Braze, vous aurez besoin des éléments suivants :
- Compte Braze : un compte Braze disposant d’un accès à l’API
- Clé API : la clé API de votre application, disponible dans le tableau de bord de Braze
- Endpoint SDK : l’URL de votre endpoint SDK Braze (par exemple,
sdk.iad-01.braze.com)
Obtenir vos identifiants
- Clé API : disponible dans votre tableau de bord de Braze sous Paramètres → Clés API
- Endpoint SDK : situé dans Paramètres → Authentification SDK → Endpoints
- Service de traitement : requis pour les notifications push (consultez la section Notifications push)
Installation
npm install --save @braze/web-sdk
# or, using yarn:
# yarn add @braze/web-sdk
Démarrage rapide
L’extrait de code suivant présente la configuration minimale requise pour initialiser le SDK Web de Braze.
import * as braze from "@braze/web-sdk";
// Initialize the SDK
braze.initialize('YOUR-API-KEY-HERE', {
baseUrl: "YOUR-SDK-ENDPOINT-HERE",
});
braze.changeUser('Jane Doe');
Référence de configuration
Options d’initialisation
La fonction initialize accepte un objet d’options avec les propriétés suivantes :
| Option | Type | Valeur par défaut | Description |
|---|---|---|---|
baseUrl |
string |
Obligatoire | Cette option est obligatoire pour configurer le SDK Web de Braze afin qu’il utilise l’endpoint adapté à votre intégration, par exemple : braze.initialize('YOUR-API-KEY-HERE', { baseUrl: 'sdk.iad-03.braze.com' }) |
enableLogging |
boolean |
false |
Définissez cette option sur true pour activer la journalisation par défaut. Notez que Braze écrira alors dans la console JavaScript, visible par tous les utilisateurs ! Pensez à supprimer cette option ou à fournir un autre enregistreur avec setLogger avant de mettre votre page en production. |
allowUserSuppliedJavascript |
boolean |
false |
Par défaut, le SDK Web de Braze n’autorise pas les actions de clic JavaScript fournies par l’utilisateur et n’active pas les messages in-app HTML ni les Banners, car ils permettent aux utilisateurs du tableau de bord de Braze d’exécuter du JavaScript sur votre site. Pour indiquer que vous faites confiance aux utilisateurs du tableau de bord de Braze pour écrire des actions de clic JavaScript non malveillantes, définissez cette propriété sur true. |
doNotLoadFontAwesome |
boolean |
false |
Braze utilise Font Awesome pour les icônes des messages in-app. Par défaut, Braze charge automatiquement FontAwesome 4.7.0 depuis le CDN de FontAwesome. Pour désactiver ce comportement (par exemple, parce que votre site utilise une version personnalisée de FontAwesome), définissez cette option sur true. Dans ce cas, c’est à vous de vous assurer que FontAwesome est bien chargé sur votre site, sinon les messages in-app risquent de ne pas s’afficher correctement. |
inAppMessageZIndex |
number |
999999 |
Par défaut, le SDK de Braze affiche les In-App Messages avec un z-index de 999999. Indiquez une valeur pour cette option afin de remplacer cette valeur par défaut. |
sessionTimeoutInSeconds |
number |
30 |
Par défaut, une session expire après 30 secondes d’inactivité. Indiquez une valeur pour cette option afin de remplacer cette valeur par défaut. |
deviceId |
string |
Généré automatiquement | Par défaut, Braze attribue un GUID aléatoire comme ID d’appareil. Indiquez une valeur pour cette option de configuration afin de remplacer cette valeur par défaut par la vôtre. |
appVersion |
string |
undefined |
Si vous indiquez une valeur pour cette option, les événements utilisateur envoyés à Braze seront associés à cette version, ce qui permet de l’utiliser pour la segmentation des utilisateurs. |
appVersionNumber |
string |
undefined |
Valeur numérique de version de l’application utilisable pour la segmentation des utilisateurs. Cette valeur doit comporter quatre champs, par exemple « 1.2.3.4 », sinon elle sera ignorée. Remarque : appVersion doit également être défini, soit avec la même valeur, soit avec un nom unique pour cette version. |
contentSecurityNonce |
string |
undefined |
Si vous indiquez une valeur pour cette option, le SDK de Braze ajoutera le nonce à tous les éléments <script> et <style> qu’il crée. Cela permet au SDK de Braze de fonctionner avec la Content Security Policy de votre site Web. Notez qu’en plus de définir ce nonce, vous devrez peut-être autoriser le chargement de FontAwesome, soit en ajoutant use.fontawesome.com à la liste d’autorisation de votre Content Security Policy, soit en utilisant l’option doNotLoadFontAwesome et en le chargeant manuellement. |
noCookies |
boolean |
false |
Par défaut, le SDK Web de Braze utilise des cookies. Pour désactiver l’utilisation des cookies, définissez cette option sur true. Notez que la désactivation des cookies peut empêcher le SDK de mémoriser l’identité des utilisateurs d’une session à l’autre. |
allowCrawlerActivity |
boolean |
false |
Par défaut, le SDK Web de Braze ignore l’activité des robots d’indexation connus, comme Google, en se basant sur la chaîne user agent. Cela permet d’économiser des points de données, d’améliorer la précision des analyses et, potentiellement, le classement de vos pages. Si vous souhaitez toutefois que Braze enregistre l’activité de ces robots, vous pouvez définir cette option sur true. |
disablePushTokenMaintenance |
boolean |
false |
Par défaut, les utilisateurs ayant déjà accordé l’autorisation de notification push Web (par exemple via requestPushPermission ou auprès d’un ancien fournisseur de notifications push) synchronisent automatiquement leur jeton push avec le backend de Braze à chaque nouvelle session afin de garantir la livrabilité. Pour désactiver ce comportement, définissez cette option sur true. |
enableSdkAuthentication |
boolean |
false |
Définissez cette option sur true pour activer la fonctionnalité d’authentification du SDK. Pour en savoir plus sur l’authentification du SDK, consultez notre documentation produit. |
manageServiceWorkerExternally |
boolean |
false |
Par défaut, le SDK Web de Braze gère son propre service de traitement (service worker) pour les notifications push. Si vous gérez déjà un service de traitement dans votre application et souhaitez y intégrer les fonctionnalités de celui de Braze, définissez cette option sur true et incluez le code du service de traitement de Braze dans votre fichier de service de traitement. |
minimumIntervalBetweenTriggerActionsInSeconds |
number |
30 |
Par défaut, les actions de déclenchement (par exemple, l’affichage d’un message in-app) peuvent se déclencher au maximum une fois toutes les 30 secondes par utilisateur. Indiquez une valeur pour cette option afin de remplacer cette valeur par défaut. |
serviceWorkerLocation |
string |
undefined |
Par défaut, le SDK Web de Braze recherche son fichier de service de traitement à la racine de votre domaine. Indiquez une valeur pour cette option afin de remplacer cette valeur par défaut et de spécifier un emplacement personnalisé pour ce fichier. |
safariWebsitePushId |
string |
undefined |
Obligatoire pour les notifications push Safari. Cette valeur se trouve dans votre compte Apple Developer. Pour en savoir plus sur la configuration des notifications push Safari, consultez notre documentation produit. |
localization |
string |
undefined |
Si vous indiquez une valeur pour cette option, le SDK de Braze tentera d’afficher les messages in-app et les Content Cards dans cette langue. |
openInAppMessagesInNewTab |
boolean |
false |
Par défaut, les liens des messages in-app s’ouvrent dans le même onglet. Définissez cette option sur true pour qu’ils s’ouvrent plutôt dans un nouvel onglet. |
openCardsInNewTab |
boolean |
false |
Par défaut, les liens des Content Cards s’ouvrent dans le même onglet. Définissez cette option sur true pour qu’ils s’ouvrent plutôt dans un nouvel onglet. |
requireExplicitInAppMessageDismissal |
boolean |
false |
Par défaut, les messages in-app peuvent être fermés en cliquant à l’extérieur ou en appuyant sur la touche Échap. Définissez cette option sur true pour obliger les utilisateurs à cliquer explicitement sur un bouton de fermeture ou un bouton d’action pour fermer le message. |
devicePropertyAllowlist |
string[] |
undefined |
Par défaut, le SDK de Braze détecte et collecte automatiquement toutes les propriétés d’appareil de DeviceProperties. Pour modifier ce comportement, fournissez un tableau de DeviceProperties. Pour empêcher l’envoi de toute propriété aux serveurs de Braze, fournissez un tableau vide. Notez que sans certaines propriétés, toutes les fonctionnalités ne fonctionneront pas correctement. Par exemple, sans le fuseau horaire, l’envoi selon le fuseau horaire local ne fonctionnera pas. |
serviceWorkerScope |
string |
undefined |
Par défaut, le SDK Web de Braze enregistre son service de traitement avec la portée par défaut (le répertoire du service de traitement). Indiquez une valeur pour cette option afin de remplacer cette valeur par défaut et de spécifier une portée personnalisée pour le service de traitement. |
Fonctionnalités principales
Initialisation et configuration
Initialisation de base
import * as braze from "@braze/web-sdk";
// Initialize the SDK
braze.initialize('YOUR-API-KEY-HERE', {
baseUrl: 'YOUR-SDK-ENDPOINT-HERE',
enableLogging: true // Remove in production
});
// Start a session
braze.openSession();
Options d’initialisation avancées
import * as braze from "@braze/web-sdk";
braze.initialize('YOUR-API-KEY-HERE', {
baseUrl: 'YOUR-SDK-ENDPOINT-HERE',
enableLogging: true,
allowUserSuppliedJavascript: true,
doNotLoadFontAwesome: false,
inAppMessageZIndex: 999999,
sessionTimeoutInSeconds: 30,
deviceId: 'custom-device-id',
appVersion: '1.0.0',
contentSecurityNonce: 'your-nonce-here'
});
Gestion des utilisateurs
Changer d’utilisateur
import { changeUser } from "@braze/web-sdk";
// Change to a new user
changeUser('user-123');
Définir les attributs utilisateur
import { getUser } from "@braze/web-sdk";
const user = getUser();
if (user) {
user.setEmail('[email protected]');
user.setFirstName('John');
user.setLastName('Doe');
user.setCustomUserAttribute('subscription_tier', 'premium');
user.setCustomUserAttribute('last_login', new Date());
}
Définir la localisation de l’utilisateur
import { getUser } from "@braze/web-sdk";
const user = getUser();
if (user) {
user.setCountry('US');
user.setHomeCity('San Francisco');
user.setLanguage('en');
user.setCustomLocationAttribute('latitude', 37.7749);
user.setCustomLocationAttribute('longitude', -122.4194);
}
Alias d’utilisateur et groupes d’abonnement
import { getUser } from "@braze/web-sdk";
const user = getUser();
if (user) {
// Add alias
user.addAlias('external_id', '12345');
// Add to subscription group
user.addToSubscriptionGroup('newsletter_subscribers');
// Remove from subscription group
user.removeFromSubscriptionGroup('old_subscribers');
}
Déconnexion de l’utilisateur
import { wipeData } from "@braze/web-sdk";
// There is no explicit method to logout. To "forget" the current users entirely, use wipeData().
// This is a complete data wipe (use with caution, this wipes things such as device ID)
wipeData();
In-App Messages
Affichage automatique
import { automaticallyShowInAppMessages } from "@braze/web-sdk";
// Automatically show in-app messages
automaticallyShowInAppMessages();
Affichage manuel
import { subscribeToInAppMessage, showInAppMessage } from "@braze/web-sdk";
// Subscribe to in-app messages
subscribeToInAppMessage((inAppMessage) => {
// Show the message
showInAppMessage(inAppMessage);
});
Gestion personnalisée des messages in-app
import { subscribeToInAppMessage, showInAppMessage } from "@braze/web-sdk";
subscribeToInAppMessage((inAppMessage) => {
// Custom logic before showing
if (inAppMessage.getExtras()['priority'] === 'high') {
showInAppMessage(inAppMessage);
}
});
Enregistrer les interactions avec les messages in-app
import {
logInAppMessageClick,
logInAppMessageImpression,
logInAppMessageButtonClick
} from "@braze/web-sdk";
// Log when user sees the message
logInAppMessageImpression(inAppMessage);
// Log when user clicks the message
logInAppMessageClick(inAppMessage);
// Log when user clicks a button in the message
logInAppMessageButtonClick(inAppMessage, button);
Messages in-app HTML personnalisés
import { subscribeToInAppMessage, logInAppMessageImpression, logInAppMessageClick } from "@braze/web-sdk";
// Don't call automaticallyShowInAppMessages() when using custom rendering
// braze.automaticallyShowInAppMessages(); // Comment this out
subscribeToInAppMessage((inAppMessage) => {
// Extract message data
const messageData = {
title: inAppMessage.getMessage(),
body: inAppMessage.getBody(),
imageUrl: inAppMessage.getImageUrl(),
buttons: inAppMessage.getButtons(),
deepLink: inAppMessage.getExtras()['deep_link_url']
};
// Define your own HTML structure, using messageData
const customHTML = ` <!-- Add your custom styling and structure -->`;
/* Render the In-App Message here */
// Here we naively log an impression once the message is rendered.
// Be precise about exactly when you want to log an impression (ie. only the first time it enters the view port).
logInAppMessageImpression(inAppMessage);
});
// Handle button clicks and deep linking
const handleButtonClick = (button, inAppMessage) => {
logInAppMessageClick(inAppMessage);
// Handle additional click actions (ie. deep linking)
};
Content Cards
Afficher les Content Cards
import { showContentCards } from "@braze/web-sdk";
// Show content cards in default location
showContentCards();
// Show in specific container
const container = document.getElementById('content-cards-container');
showContentCards(container);
S’abonner aux mises à jour des Content Cards
import { subscribeToContentCardsUpdates } from "@braze/web-sdk";
subscribeToContentCardsUpdates((cards) => {
console.log('Content cards updated:', cards);
// Display cards or update UI
});
Enregistrer les interactions avec les Content Cards
import {
logContentCardClick,
logContentCardImpressions,
logCardDismissal
} from "@braze/web-sdk";
// Log card impressions
logContentCardImpressions(cards);
// Log card clicks
logContentCardClick(card);
// Log card dismissals
logCardDismissal(card);
Filtrer les Content Cards
import { showContentCards } from "@braze/web-sdk";
// Show only pinned cards
// You can also provide a parent element instead of null
showContentCards(null, (cards) => {
return cards.filter(card => card.getIsPinned());
});
Demander l’actualisation des Content Cards
import { requestContentCardsRefresh } from "@braze/web-sdk";
requestContentCardsRefresh(
() => console.log('Content cards refreshed'),
() => console.log('Failed to refresh content cards')
);
Content Cards personnalisées
import { subscribeToContentCardsUpdates, logContentCardClick, logContentCardImpressions, requestContentCardsRefresh } from "@braze/web-sdk";
// State for impression de-duping
const loggedImpressions = new Set();
const idToCard = new Map();
subscribeToContentCardsUpdates((cards) => {
// Build cards one by one
cards.getCards().forEach(card => {
// Skip control cards
if (card.getIsControl()) return;
// Extract card data
const cardData = {
id: card.getId(),
title: card.getTitle(),
description: card.getDescription(),
imageUrl: card.getImageUrl(),
url: card.getUrl(),
extras: card.getExtras()
};
// Define your own HTML structure, using cardData
const customHTML = ` <!-- Add your custom styling and structure -->`;
/* Render each card here */
// Basic observer for impression logging.
// Be precise about exactly when you want to log an impression (ie. only the first time it enters the view port).
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
logContentCardImpressions([card]);
}
});
});
// Observe card element when rendered
// observer.observe(cardElement);
});
});
// Handle card clicks
const handleCardClick = (card) => {
logContentCardClick(card);
// Handle additional click actions (ie. navigation)
};
Notifications push
Demander l’autorisation de notification push
import { requestPushPermission } from "@braze/web-sdk";
requestPushPermission(
() => console.log('Push permission granted'),
() => console.log('Push permission denied')
);
Vérifier la prise en charge des notifications push
import { isPushSupported, isPushPermissionGranted } from "@braze/web-sdk";
if (isPushSupported()) {
if (isPushPermissionGranted()) {
console.log('Push notifications are enabled');
} else {
console.log('Push permission not granted');
}
}
Désinscrire les notifications push
import { unregisterPush } from "@braze/web-sdk";
unregisterPush(
() => console.log('Successfully unregistered'),
() => console.log('Failed to unregister')
);
Feature flags
Obtenir un feature flag
import { getFeatureFlag } from "@braze/web-sdk";
const featureFlag = getFeatureFlag('new_checkout_flow');
if (featureFlag) {
const isEnabled = featureFlag.getBooleanProperty('enabled', false);
const rolloutPercentage = featureFlag.getNumberProperty('rollout_percentage', 0);
if (isEnabled) {
// Enable new checkout flow
}
}
S’abonner aux mises à jour des feature flags
import { subscribeToFeatureFlagsUpdates } from "@braze/web-sdk";
subscribeToFeatureFlagsUpdates((featureFlags) => {
featureFlags.forEach(flag => {
console.log(`Feature flag ${flag.getId()}: ${flag.getBooleanProperty('enabled')}`);
});
});
Enregistrer les impressions des feature flags
import { logFeatureFlagImpression } from "@braze/web-sdk";
const featureFlag = getFeatureFlag('new_feature');
if (featureFlag) {
logFeatureFlagImpression(featureFlag);
}
Demander l’actualisation des feature flags
import { refreshFeatureFlags } from "@braze/web-sdk";
refreshFeatureFlags(
() => console.log('Feature flags refreshed'),
() => console.log('Failed to refresh feature flags')
);
Bannières
Obtenir et afficher des bannières
import { getBanner, insertBanner } from "@braze/web-sdk";
const banner = getBanner('homepage_banner');
if (banner) {
// Insert banner into specific element
const container = document.getElementById('banner-container');
insertBanner(banner, container);
}
S’abonner aux mises à jour des bannières
L’abonné reçoit le cache de bannières en mémoire du SDK. Une même mise à jour peut inclure des placements issus d’actualisations précédentes, et pas uniquement les ID de placement du dernier appel à requestBannersRefresh.
import { insertBanner, subscribeToBannersUpdates } from "@braze/web-sdk";
subscribeToBannersUpdates((banners) => {
Object.entries(banners).forEach(([placementId, banner]) => {
if (banner) {
console.log(`Banner for ${placementId}:`, banner);
// Insert banner into specific element
const container = document.getElementById(`banner-container-${placementId}`);
insertBanner(banner, container);
}
});
});
Fermer des bannières dans une interface personnalisée
import { dismissBanner, getBanner, subscribeToBannersUpdates } from "@braze/web-sdk";
subscribeToBannersUpdates((banners) => {
const banner = getBanner("homepage_banner");
const container = document.getElementById("custom-banner-container");
if (!container) {
return;
}
if (!banner) {
container.replaceChildren();
return;
}
banner.subscribeToDismissedEvent(() => {
console.log("Dismissed banner:", banner);
});
const closeButton = document.createElement("button");
closeButton.textContent = "Close";
closeButton.addEventListener("click", () => {
dismissBanner(banner);
});
// Render your custom UI here and include the close button.
});
Lorsque vous appelez dismissBanner(banner), le SDK gère l’état de fermeture de la bannière, la retire des mises à jour de bannières actives, prévient les abonnés à l’événement de fermeture de la bannière et synchronise la fermeture avec Braze. Les interfaces personnalisées doivent utiliser subscribeToBannersUpdates pour réagir au retrait de la bannière fermée, plutôt que de considérer dismissBanner comme une simple modification locale de l’interface ou comme une simple méthode d’enregistrement analytique.
Demander l’actualisation des bannières
requestBannersRefresh() fusionne les résultats dans le cache de bannières existant. Seuls les ID de placement que vous demandez sont ajoutés, mis à jour ou supprimés. Les bannières en cache pour les autres placements restent dans le cache et expirent à leur date d’expiration d’origine. Si le serveur ne renvoie aucune bannière pour un placement demandé, ce placement est retiré du cache.
import { requestBannersRefresh } from "@braze/web-sdk";
requestBannersRefresh(
["placement_1", "placement_2"],
() => console.log('Banners refreshed'),
() => console.log('Failed to refresh banners')
);
Analyse et événements
Enregistrer des événements personnalisés
import { logCustomEvent } from "@braze/web-sdk";
// Simple event
logCustomEvent('button_clicked');
// Event with properties
logCustomEvent('purchase', {
product_id: '123',
price: 29.99,
currency: 'USD'
});
Enregistrer des achats
import { logPurchase } from "@braze/web-sdk";
logPurchase('product-123', 29.99, 'USD', 1, {
category: 'electronics',
brand: 'Apple'
});
Demander le vidage immédiat des données
import { requestImmediateDataFlush } from "@braze/web-sdk";
// Force immediate data send
requestImmediateDataFlush();
Gestion des sessions
Ouvrir une session
import { openSession } from "@braze/web-sdk";
// Start a new session
openSession();
Vérifier l’état du SDK
import { isInitialized, isDisabled } from "@braze/web-sdk";
if (isInitialized()) {
console.log('SDK is initialized');
if (isDisabled()) {
console.log('SDK is disabled');
}
}
Activer ou désactiver le SDK
import { enableSDK, disableSDK } from "@braze/web-sdk";
// Disable SDK
disableSDK();
// Re-enable SDK
enableSDK();
Gestion des données
Effacer les données
import { wipeData } from "@braze/web-sdk";
// Remove all locally stored data
wipeData();
Détruire le SDK
import { destroy } from "@braze/web-sdk";
// Clean up SDK resources
destroy();
Obtenir l’ID de l’appareil
import { getDeviceId } from "@braze/web-sdk";
const deviceId = getDeviceId();
console.log('Device ID:', deviceId);
Authentification du SDK
import { setSdkAuthenticationSignature } from "@braze/web-sdk";
// Set authentication signature
setSdkAuthenticationSignature('your-signature-here');
S’abonner aux échecs d’authentification
import { subscribeToSdkAuthenticationFailures } from "@braze/web-sdk";
subscribeToSdkAuthenticationFailures((error) => {
console.log('Authentication failed:', error);
// Provide new signature
setSdkAuthenticationSignature('new-signature');
});
Modèles d’intégration
Frameworks SSR
Si vous utilisez un framework de rendu côté serveur (SSR) tel que Next.js, vous risquez de rencontrer des erreurs, car le SDK est conçu pour s’exécuter dans un environnement de navigateur. Pour résoudre ces problèmes, importez le SDK de manière dynamique.
Vous pouvez conserver les avantages du tree-shaking en exportant les parties du SDK dont vous avez besoin dans un fichier distinct, puis en important dynamiquement ce fichier dans votre composant.
// MyComponent/braze-exports.js
// export the parts of the SDK you need here
export { initialize, openSession } from "@braze/web-sdk";
// MyComponent/MyComponent.js
// import the functions you need from the braze exports file
useEffect(() => {
import("./braze-exports.js").then(({ initialize, openSession }) => {
initialize("YOUR-API-KEY-HERE", {
baseUrl: "YOUR-SDK-ENDPOINT",
enableLogging: true,
});
openSession();
});
}, []);
Si vous utilisez webpack pour empaqueter votre application, vous pouvez également tirer parti de ses commentaires magiques pour importer dynamiquement uniquement les parties du SDK dont vous avez besoin.
// 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();
});
}, []);
Vite
Si vous utilisez Vite et que vous voyez un avertissement concernant des dépendances circulaires ou l’erreur Uncaught TypeError: Class extends value undefined is not a constructor or null, vous devrez peut-être exclure le SDK de Braze de la découverte des dépendances :
export default {
optimizeDeps: {
exclude: ['@braze/web-sdk']
}
}
Framework Jest
Lorsque vous utilisez Jest, vous pouvez rencontrer une erreur semblable à SyntaxError: Unexpected token 'export'. Pour la corriger, ajustez votre configuration dans package.json afin d’ignorer le SDK de Braze :
{
"jest": {
"transformIgnorePatterns": [
"/node_modules/(?!@braze)"
]
}
}
Définition de module asynchrone (AMD)
Désactiver la prise en charge d’AMD
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 le CDN, 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 : https://js.appboycdn.com/web-sdk/6.3/braze.no-amd.min.js
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 pour d’autres ressources :
require(['path/to/braze.min.js'], function(braze) {
braze.initialize('YOUR-API-KEY-HERE', { baseUrl: 'YOUR-SDK-ENDPOINT' });
braze.automaticallyShowInAppMessages();
braze.openSession();
});
Pages mobiles accélérées (AMP)
Pour l’intégration AMP, vous devez :
- Inclure le script de notification push Web AMP : ajoutez la balise de script asynchrone dans votre en-tête
- Ajouter des widgets d’abonnement : ajoutez des widgets permettant aux utilisateurs de s’abonner ou de se désabonner
- Ajouter des fichiers d’aide : incluez
helper-iframe.htmletpermission-dialog.html - Créer un service de traitement : ajoutez le fichier du service de traitement de Braze
- Configurer l’élément de notification push Web AMP : ajoutez l’élément
amp-web-pushavec votre clé API et votre URL de base comme paramètres de requête
Pour obtenir des instructions détaillées sur l’intégration AMP, consultez le guide du développeur de Braze.
Electron
Electron ne prend pas officiellement en charge les notifications push Web (consultez ce ticket GitHub). Il existe d’autres solutions de contournement open source que vous pouvez essayer, mais elles n’ont pas été testées par Braze.
Intégration CDN
- Chargement du script : initialisez le SDK une fois la balise de script chargée en plaçant le code d’initialisation après la balise de script, ou utilisez le gestionnaire d’événement
onloadde la balise de script - Accès global : le SDK est disponible sous la forme
window.brazelorsqu’il est chargé via le CDN
Service de traitement (notifications push)
- Obligatoire : vous devez inclure le service de traitement de Braze pour que les notifications push fonctionnent
- Enregistrement par défaut : par défaut, le SDK Web de Braze enregistre et gère automatiquement votre service de traitement lorsque
requestPushPermission()est appelé, ainsi qu’au début de chaque nouvelle session pour les utilisateurs ayant déjà accordé l’autorisation de notification push. Vous devez tout de même héberger, à l’emplacement attendu, un fichier de service de traitement contenant le code du service de traitement de Braze. - Gérer votre propre service de traitement : si vous gérez déjà un service de traitement dans votre application, définissez l’option d’initialisation
manageServiceWorkerExternallysurtrue, ajoutez le code du service de traitement de Braze à votre fichier de service de traitement et enregistrez-le vous-même à l’aide denavigator.serviceWorker.register() - Autorisations de notification push : appelez
braze.requestPushPermission()en réponse aux interactions de l’utilisateur (par exemple, des clics sur un bouton). Utilisez des demandes d’autorisation push personnalisées (interface utilisateur personnalisée) avant de demander l’autorisation du navigateur
Gestionnaires de balises
Tealium iQ
Tealium iQ propose une intégration Braze de base clé en main. Pour configurer l’intégration, recherchez Braze dans l’interface Tealium Tag Management et indiquez la clé API du SDK Web disponible dans votre tableau de bord. Pour en savoir plus ou obtenir une aide approfondie sur la configuration de Tealium, consultez notre documentation d’intégration ou contactez votre gestionnaire de compte Tealium.
Google Tag Manager
Le SDK Web peut être initialisé et appelé à partir d’une balise HTML personnalisée dans votre conteneur Google Tag Manager. Consultez notre exemple d’application Google Tag Manager pour découvrir comment envoyer des événements à Braze via GTM, ou consultez notre documentation d’intégration pour en savoir plus.
Autres gestionnaires de balises
Braze peut également être compatible avec d’autres solutions de gestion des balises si vous suivez nos instructions d’intégration dans une balise HTML personnalisée. Contactez un conseiller Braze si vous avez besoin d’aide pour évaluer ces solutions.
Bibliothèques
Le tableau suivant décrit les distributions disponibles du SDK Web de Braze.
| Nom | Description | npm | URL du CDN |
|---|---|---|---|
| Full | SDK complet avec interface utilisateur. Avec la version npm, les outils de bundling JavaScript suppriment le code inutilisé, y compris le code de l’interface utilisateur. | @braze/web-sdk |
https://js.appboycdn.com/web-sdk/7.1/braze.min.js |
| Core | Contient le SDK sans interface utilisateur. Avec cette version du SDK, vous devez implémenter votre propre interface utilisateur pour les In-App Messages et les Content Cards. Pour la plupart des intégrations, privilégiez la bibliothèque complète, car elle fournit des éléments d’interface personnalisables via CSS. | N/A | https://js.appboycdn.com/web-sdk/7.1/braze.core.min.js |
| No-AMD | Contient le SDK complet sans prise en charge d’AMD. Cette version est utile si votre site utilise RequireJS ou un autre chargeur de modules AMD, mais que vous préférez charger le SDK via le CDN. | N/A | https://js.appboycdn.com/web-sdk/7.1/braze.no-amd.min.js |
Navigateurs pris en charge
- Navigateurs modernes basés sur Chromium (Chrome, Edge, Opera)
- Firefox
- Safari
Débogage et résolution des problèmes
Ajoutez l’option enableLogging: true à la fonction d’initialisation (braze.initialize('YOUR-API-KEY-HERE', { baseUrl: 'YOUR-SDK-ENDPOINT', enableLogging: true });) pour que Braze enregistre des journaux dans la console JavaScript. Cette option est utile pendant le développement, mais les journaux sont visibles par tous les utilisateurs. Supprimez-la donc ou fournissez un autre enregistreur avant de mettre votre page en production.
Font Awesome
Braze utilise Font Awesome 4.7.0 pour les icônes des messages in-app. Pour désactiver le chargement de Font Awesome, utilisez l’option d’initialisation doNotLoadFontAwesome. Consultez l’aide-mémoire pour parcourir les icônes disponibles.
Ressources supplémentaires
Contact
Pour toute question, contactez le support technique de Braze pour obtenir de l’aide.
Pour les détails du dépôt et les projets d’exemple, consultez https://github.com/braze-inc/braze-web-sdk.