React Native SDK Repository-Leitfaden
Über das Braze React Native SDK
Das Braze React Native SDK verbindet Ihre iOS- und Android-Apps mit Braze: Nutzerprofile, Messaging-Oberflächen, Analytics und Feature-Flags. Es kapselt das native Braze Swift SDK und das Braze Android SDK hinter einer JavaScript-API.
Die Initialisierung erfolgt über JavaScript: Sie richten die native Konfiguration (Push, Logging, Delegates) in den Android-Ressourcen und im iOS-AppDelegate ein und rufen dann Braze.initialize(apiKey, endpoint) aus JavaScript auf, um das SDK zu starten. So haben Sie die volle Kontrolle darüber, wann das SDK initialisiert wird und mit welchen Zugangsdaten. Nach der Initialisierung rufen Sie bei Bedarf weitere SDK-Methoden auf (zum Beispiel changeUser, logCustomEvent).
Was Sie tun können
- Nutzerverwaltung: Nutzer:innen identifizieren sowie Profilfelder, angepasste Attribute, Aliase und Abo-Gruppen festlegen
- In-App-Nachrichten: Standard-UI von Braze oder angepasste Verarbeitung über Abonnements und Logging-APIs
- Content Cards: Standard-Feed-UI oder Karten abrufen und Ihre eigene UI erstellen
- Banner: Platzierungsbasierte HTML-Banner, einschließlich
BrazeBannerView - Push-Benachrichtigungen: Berechtigungsabfragen, Token-Registrierung, Payload-Listener (siehe Plattformhinweise unten)
- Feature-Flags: Aktualisieren, Eigenschaften lesen, Impressionen protokollieren
- Analytics: Angepasste Events, Käufe, sofortiges Flushen
- SDK-Steuerung: SDK aktivieren/deaktivieren, lokale Daten löschen, Signaturen für die SDK-Authentifizierung
Voraussetzungen
- Braze-Konto mit App-API-Schlüssel und SDK-Endpunkt
- React Native-Entwicklungsumgebung (React Native-Umgebung einrichten)
- iOS: Xcode, CocoaPods (
cd ios && pod install) - Android: Android Studio / Gradle; Kotlin-Gradle-Plugin, wie von Ihrem React Native-Template gefordert
- Push (falls verwendet): Einrichtung von FCM (Android) und APNs (iOS) gemäß der Push-Dokumentation
Informationen dazu, wo Sie Ihre Zugangsdaten im Dashboard finden, erhalten Sie in der Übersicht zur Integration.
Installation
npm install @braze/react-native-sdk
# or:
# yarn add @braze/react-native-sdk
Schnellstart
In diesem Abschnitt sehen Sie die minimale Einrichtung, die für die Initialisierung des Braze React Native SDK erforderlich ist.
- Installieren Sie das npm-Paket (siehe oben).
- Schließen Sie die native Einrichtung für Android und iOS ab (Konfiguration, Berechtigungen und bei Bedarf Push).
- Initialisieren Sie das SDK über JavaScript und beginnen Sie mit der Nutzung:
import Braze from "@braze/react-native-sdk";
// Initialize the SDK — call early in your app lifecycle (e.g. in a useEffect).
// The API key and endpoint are passed from JavaScript; native configuration
// (push, logging, etc.) is applied automatically from your native setup.
Braze.initialize("<YOUR_API_KEY>", "<YOUR_SDK_ENDPOINT>");
Braze.changeUser("user-123");
Braze.logCustomEvent("button_clicked", { screen: "home" });
TypeScript-Typdefinitionen sind im Paket enthalten (src/index.d.ts auf GitHub).
Wenn Sie Braze.initialize erneut mit anderen Zugangsdaten aufrufen, wird die aktuelle Instanz beendet und neu erstellt. So ist eine erneute Initialisierung während einer laufenden Session möglich.
Native Einrichtung
Maßgebliche Quelle: Schritt-für-Schritt-Anleitungen, Änderungen an Gradle/CocoaPods und die vollständige Liste der Android-XML-Schlüssel finden Sie im Braze React Native Entwickler:innen-Leitfaden. Die folgenden Snippets sind minimale Beispiele.
Android
- Fügen Sie das Kotlin Gradle Plugin in Ihrer Root-Datei
build.gradlehinzu, falls Ihr Template es noch nicht enthält (die Versionen hängen von Ihrer React-Native-Version ab). - Fügen Sie eine Ressourcendatei
braze.xmlinres/valuesmit Ihrer Konfiguration hinzu. Aktivieren Sie die verzögerte Initialisierung, damit das SDK vor dem Start aufBraze.initialize()aus JavaScript wartet. Andere Konfigurationswerte (Push, Session-Timeout usw.) werden weiterhin aus dieser Datei gelesen und bei der Initialisierung angewendet. - Stellen Sie grundlegende Berechtigungen wie
INTERNETundACCESS_NETWORK_STATEinAndroidManifest.xmlsicher. - Schließen Sie für Push die FCM-Integration ab und setzen Sie alle in der Dokumentation beschriebenen Braze-spezifischen Sender-ID- bzw. Registrierungs-Flags.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Enable delayed initialization so the SDK starts when
Braze.initialize() is called from JavaScript. -->
<bool name="com_braze_enable_delayed_initialization">true</bool>
<!-- Additional native configuration (applied at initialization time) -->
<bool name="com_braze_firebase_cloud_messaging_registration_enabled">true</bool>
<string translatable="false" name="com_braze_firebase_cloud_messaging_sender_id">YOUR_SENDER_ID</string>
</resources>

** Der API-Schlüssel und der Endpunkt werden nicht mehr in braze.xml festgelegt – sie werden aus JavaScript über Braze.initialize(apiKey, endpoint) übergeben.
iOS
cd ios && pod install
Verwenden Sie BrazeReactInitializer.configure in Ihrem AppDelegate, um die native Konfiguration zu registrieren. Die von Ihnen bereitgestellten Closures werden gespeichert und später angewendet, wenn Braze.initialize(apiKey, endpoint) aus JavaScript aufgerufen wird.
import BrazeKit
import braze_react_native_sdk
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
static var braze: Braze? = nil
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil
) -> Bool {
// Register native configuration for when JS calls Braze.initialize().
BrazeReactInitializer.configure { config in
config.logger.level = .info
config.push.automation = true
} postInitialization: { braze in
AppDelegate.braze = braze
}
// ... React Native setup
return true
}
}
configure-Closure: Erhält eineBraze.Configurationund ermöglicht es Ihnen, native Konfigurationseigenschaften festzulegen (Logging, Push, Sessions usw.). Der API-Schlüssel und der Endpunkt werden aus JavaScript bereitgestellt – Sie legen sie hier nicht fest.postInitialization-Closure (optional): Erhält die aktiveBraze-Instanz nach ihrer Erstellung, für Einrichtungsschritte, die die Instanz benötigen (z. B. Speichern einer Referenz, Festlegen von Delegates).

** BrazeReactInitializer.configure ist eine Swift-first-API, die das veraltete BrazeReactBridge.initBraze(_:) ersetzt. Außerdem behebt sie ein Problem bei der Swift-Typauflösung mit Braze.Configuration in der Objective-C-Bridge.
Konfigurationsreferenz
In React Native ist die Konfiguration nativ: Android liest res/values/braze.xml, und iOS verwendet Closures, die über BrazeReactInitializer.configure registriert werden. Beide werden angewendet, wenn Braze.initialize(apiKey, endpoint) aus JavaScript aufgerufen wird.
Android (braze.xml)
Standardwerte sind im XML hinterlegt; BrazeConfig.Builder kann sie beim Start überschreiben. Die maßgebliche Liste der Schlüssel und Typen finden Sie im Leitfaden zur Android-SDK-Integration und in BrazeConfigurationProvider (jede Kotlin-Eigenschaft entspricht dokumentierten com_braze_*-Ressourcen).
Häufig verwendete Einträge:
| Schlüssel | Ressourcentyp | Beschreibung |
|---|---|---|
com_braze_enable_delayed_initialization |
bool |
Erforderlich. Setzen Sie diesen Wert auf true, damit das SDK auf Braze.initialize() aus JavaScript wartet. |
com_braze_api_key |
string |
Nicht erforderlich, wenn Sie Braze.initialize() aus JavaScript verwenden (die Zugangsdaten werden aus JS übergeben). Nur für die ältere Native-First-Initialisierung erforderlich. |
com_braze_custom_endpoint |
string |
Nicht erforderlich, wenn Sie Braze.initialize() aus JavaScript verwenden. Nur für die ältere Native-First-Initialisierung erforderlich. |
com_braze_server_target |
string |
Optionale Auswahl für Cluster bzw. Umgebung (z. B. für einige interne oder Staging-Builds). Verwenden Sie für die Produktion bevorzugt com_braze_custom_endpoint, sofern Ihre Braze-Integration nichts anderes vorgibt. |
com_braze_firebase_cloud_messaging_registration_enabled |
bool |
Bei true registriert sich Braze für FCM (typische Push-Einrichtung). |
com_braze_firebase_cloud_messaging_sender_id |
string |
FCM-Absender-ID, wenn die automatische Registrierung aktiviert ist. |
com_braze_handle_push_deep_links_automatically |
bool |
Braze öffnet Push-Deeplinks automatisch. |
com_braze_trigger_action_minimum_time_interval_seconds |
integer |
Mindestanzahl an Sekunden zwischen Trigger-Aktionen für In-App-Nachrichten. |
| Sonstige | verschiedene | Weitere hier nicht aufgeführte Schlüssel (Session-Timeout, Geofences, Standort, Standardwerte für Benachrichtigungen, Geräte-Allowlists, verzögerte Initialisierung, SDK-Authentifizierung und mehr). Siehe BrazeConfigurationProvider und den Leitfaden zur Android-SDK-Integration. |
iOS (Braze.Configuration)
Legen Sie native Konfigurationseigenschaften in der configure-Closure fest, die an BrazeReactInitializer.configure übergeben wird. Die Closure erhält eine Braze.Configuration-Instanz – API-Schlüssel und Endpunkt werden automatisch aus dem JavaScript-Aufruf Braze.initialize gesetzt. Alle Details: Braze.Configuration und die verschachtelten Typen api, push, logger, location.
| Bereich | Mitglieder (Auswahl) | Hinweise |
|---|---|---|
| Zugangsdaten | api.key, api.endpoint |
Werden automatisch aus Braze.initialize(apiKey, endpoint) in JavaScript gesetzt. Legen Sie diese nicht in der configure-Closure fest. |
| Logging | logger.level |
Ausführliches Logging ist für die Entwicklung gedacht; reduzieren Sie die Ausgabe in der Produktion. |
| Push | push.automation, push.appGroup, … |
Die Automatisierung vereinfacht die Registrierung; appGroup wird für Push Stories bzw. Erweiterungen benötigt, sofern verwendet. |
| In-App-Nachrichten | triggerMinimumTimeInterval |
Standardmäßig 30 Sekunden zwischen Triggern. |
| Sessions | sessionTimeout |
Inaktivitätsdauer bis zu einer neuen Session (siehe Braze-Dokumentation zu Sessions). |
| Datenschutz/Daten | api.trackingPropertyAllowList, devicePropertyAllowList, api.sdkAuthentication |
Stimmen Sie diese mit dem Privacy Manifest und den Produkteinstellungen zur SDK-Authentifizierung ab. |
| Netzwerk | api.requestPolicy, api.flushInterval |
Wiederholungsrichtlinie für Anfragen und Flush-Intervall. |
| Push-Abo | optInWhenPushAuthorized |
Bei true kann das Abo auf „opted-in“ wechseln, nachdem Nutzer:innen Benachrichtigungen autorisiert haben. |
| IAM + Nutzerwechsel | preventInAppMessageDisplayForDifferentUser |
Verringert falsch zugeordnete IAMs, wenn sich die Nutzer-ID ändert. |
| Sonstige | forwardUniversalLinks, ephemeralEvents, useUUIDAsDeviceId, … |
Das vollständige Verhalten finden Sie in der Swift-Dokumentation. |
Die React-Native-Bridge setzt bei der Initialisierung React-spezifische api.sdkFlavor- bzw. SDK-Metadaten; überschreiben Sie diese nur, wenn die Braze-Dokumentation Sie dazu anweist.
JavaScript / TypeScript API
Der Standard-Export des Pakets ist die Klasse Braze mit statischen Methoden (zum Beispiel Braze.changeUser, Braze.logPurchase). Konstanten wie Braze.Events, Braze.Genders und Braze.NotificationSubscriptionTypes sind an denselben Export angehängt.
Kern-Features
Nutzerverwaltung
import Braze from "@braze/react-native-sdk";
Braze.changeUser("user-123");
Braze.setEmail("[email protected]");
Braze.setCustomUserAttribute("plan", "premium");
Braze.addAlias("external_id", "marketing_id");
Braze.addToSubscriptionGroup("NEWSLETTER_GROUP_UUID");
Optionale SDK-Authentifizierung: Übergeben Sie eine Signatur als zweites Argument an changeUser oder rufen Sie Braze.setSdkAuthenticationSignature(signature) auf, wenn die Funktion im Dashboard aktiviert ist.
In-App-Nachrichten
- Wenn Sie die Standard-UI von Braze verwenden, folgen Sie der Dokumentation zu In-App-Nachrichten. In der Regel müssen Sie
subscribeToInAppMessagenicht aufrufen, nur um die Standard-UI anzuzeigen. - Für eine angepasste Verarbeitung abonnieren Sie mit
useBrazeUI: falseund protokollieren Sie anschließend Impressionen und Klicks nach Bedarf:
Braze.subscribeToInAppMessage(false, (event) => {
const msg = event.inAppMessage;
// Render your own UI from msg.message, msg.buttons, etc.
Braze.logInAppMessageImpression(msg);
});
Content Cards
const cards = await Braze.getCachedContentCards();
Braze.requestContentCardsRefresh();
Braze.launchContentCards(); // default Braze UI
Braze.logContentCardImpression(cardId);
Braze.logContentCardClicked(cardId);
Mit Braze.addListener(Braze.Events.CONTENT_CARDS_UPDATED, ...) können Sie auf Aktualisierungen warten.
Banner
import Braze from "@braze/react-native-sdk";
Braze.requestBannersRefresh(["homepage_banner"]);
const banner = await Braze.getBanner("homepage_banner");
// Or use the native Banner view:
// <Braze.BrazeBannerView placementId="homepage_banner" />
Push-Benachrichtigungen
Braze.requestPushPermission({
alert: true,
badge: true,
sound: true,
});
// Token registration is usually handled natively; see docs for your setup.
Braze.registerPushToken(token);
getInitialPushPayload: Verwenden Sie diese Methode, wenn die App über eine Benachrichtigung geöffnet wird, um Race-Conditions mitLinkingin React Native zu vermeiden. Dafür ist auf jeder Plattform eine native Einrichtung erforderlich.- iOS mit Launch-Optionen des App-Delegates: Rufen Sie
populateInitialPayloadFromLaunchOptions:aufBrazeReactUtilsinapplication:didFinishLaunchingWithOptions:auf. - iOS mit Scene-Lebenszyklus: Rufen Sie
populateInitialPayloadFromNotificationResponse:aufBrazeReactUtilsinscene:willConnectToSession:options:auf. - Android: Rufen Sie
BrazeReactUtils.populateInitialPushPayloadFromIntentinMainActivity.onCreate()auf.
- iOS mit Launch-Optionen des App-Delegates: Rufen Sie
Braze.addListener(Braze.Events.PUSH_NOTIFICATION_EVENT, ...)ist laut den öffentlichen Typdefinitionen nur für Android verfügbar.
Feature-Flags
const flag = await Braze.getFeatureFlag("new_checkout");
if (flag?.enabled) {
const rollout = flag.getNumberProperty("rollout_percentage") ?? 0;
}
Braze.refreshFeatureFlags();
Braze.logFeatureFlagImpression("new_checkout");
Analytics und Käufe
Braze.logCustomEvent("purchase_completed", { sku: "sku-1" });
Braze.logPurchase("sku-1", "29.99", "USD", 1, { source: "cart" });
Braze.requestImmediateDataFlush();
Hinweis: logPurchase erwartet den Preis als String (siehe Typdefinitionen).
Datenverwaltung und SDK-Status
changeUser teilt Braze lediglich mit, welcher Nutzer-ID neue Aktivitäten zugeordnet werden sollen. Zwischengespeicherte SDK-Daten auf dem Gerät werden dabei nicht gelöscht. Es gibt keine separate „Logout“-API: Wenn Sie eine klassische Abmeldung benötigen (lokalen Braze-Status löschen, sodass das zwischengespeicherte Profil, die Nachrichten und Token der vorherigen Nutzer:innen auf dieser Installation entfernt werden), verwenden Sie in der Regel wipeData(). Dies ist ein vollständiges lokales Zurücksetzen.
Braze.wipeData();
Braze.disableSDK();
Braze.enableSDK();
wipeData(): Löscht die lokalen Braze-Daten dieser Installation (zwischengespeicherter Nutzer-, Sitzungs- und Kartenstatus, Push-Token-Zuordnung usw.). Verwenden Sie diese Methode für abmeldungsähnliches Verhalten, wenn der Braze-Status der vorherigen Nutzer:innen nicht auf dem Gerät verbleiben darf, sowie für „Meine Daten auf diesem Gerät löschen“, QA-Resets ohne Neuinstallation oder strenge Datenschutz-Abläufe. changeUser allein führt diese Bereinigung nicht durch, sondern legt nur fest, welche Nutzer-ID neue Events erhält. Unter iOS kann das Verhalten von Android abweichen (z. B. im Zusammenspiel mit dem deaktivierten SDK-Status). Lesen Sie die nativen Braze-Dokumentationen, wenn Sie dies in der Produktion einsetzen.
disableSDK(): Stoppt den Betrieb des SDK (keine Erfassung oder Weiterleitung gemäß Konfiguration). Verwenden Sie diese Methode für Opt-out-Schalter von Nutzer:innen, eingeschränkte Modi (Compliance, Kindereinstellungen) oder zum Debugging, ohne die Abhängigkeit zu entfernen.
enableSDK(): Schaltet das SDK nach disableSDK() wieder ein. Unter iOS wird die erneute Aktivierung möglicherweise erst beim nächsten App-Start wirksam. Prüfen Sie dies in der Braze-Dokumentation für Swift/iOS, bevor Sie sich auf eine sofortige Reaktivierung verlassen.
Events
Abonnieren Sie Events mit Braze.addListener(event, callback). Der Aufruf gibt ein Abo-Objekt zurück. Rufen Sie darauf .remove() auf, um das Abhören zu beenden.
Einen Listener einrichten:
import Braze from "@braze/react-native-sdk";
const subscription = Braze.addListener(
Braze.Events.CONTENT_CARDS_UPDATED,
(update) => {
console.log("Content cards:", update.cards);
}
);
Den Listener entfernen:
subscription.remove();
Speichern Sie in einer React-Komponente das Abo-Objekt und rufen Sie .remove() in Ihrer Bereinigung auf (z. B. im Rückgabewert eines useEffect):
useEffect(() => {
const sub = Braze.addListener(Braze.Events.CONTENT_CARDS_UPDATED, (update) => {
setCards(update.cards);
});
return () => sub.remove();
}, []);
| Event-Konstante | Payload (Zusammenfassung) |
|---|---|
Braze.Events.CONTENT_CARDS_UPDATED |
Neueste Content Cards |
Braze.Events.BANNER_CARDS_UPDATED |
Neueste Banner |
Braze.Events.FEATURE_FLAGS_UPDATED |
Array der Feature-Flags |
Braze.Events.IN_APP_MESSAGE_RECEIVED |
Event für In-App-Nachricht |
Braze.Events.SDK_AUTHENTICATION_ERROR |
Details zum SDK-Authentifizierungsfehler |
Braze.Events.PUSH_NOTIFICATION_EVENT |
Push-Payload (nur Android) |
Integrationshinweise
- Expo: Verwenden Sie das Braze Expo Plugin, um manuelle native Verknüpfungen nach Möglichkeit zu vermeiden.
- New Architecture / Turbo Modules: Werden in aktuellen Plugin-Versionen unterstützt. Folgen Sie bei einer Migration dem Entwicklerleitfaden und den Beispieleinstellungen für
AppDelegate/ Gradle. - Datenschutz (iOS): Methoden wie
updateTrackingPropertyAllowListunterstützen die Konfiguration im Zusammenhang mit dem Privacy Manifest. Weitere Informationen finden Sie unter Swift Privacy Manifest.
- Jest: Mocken Sie native Module von react-native oder das Braze Turbo-Modul. Unit-Tests werden in diesem Repository nicht veröffentlicht.
Versionsunterstützung

Dieses SDK wurde mit React Native Version 0.88.0 getestet.
Die folgende Tabelle listet die unterstützten React Native-Versionen nach Release des Braze Plugins auf.
| Braze Plugin | React Native | New Architecture |
|---|---|---|
| 9.0.0+ | ≥ 0.71 | Ja |
| 6.0.0+ | ≥ 0.68 | Ja (≥ 0.70.0) |
| 2.0.0+ | ≥ 0.68 | Ja |
| ≤ 1.41.0 | ≤ 0.71 | Nein |
Beachten Sie außerdem die Anforderungen der nativen SDKs:
Braze Expo-Plugin
Informationen zu Expo-verwalteten Workflows finden Sie im Repository des Braze Expo-Plugins.
Beispiel-App
BrazeProject in diesem Repository ist ein vollständiges Beispiel (Nutzerverwaltung, Content Cards, Feature-Flags, Banner usw.).
cd BrazeProject/
yarn install
npx react-native start
iOS (aus BrazeProject):
cd ios && pod install && cd ..
npx react-native run-ios
Verwenden Sie RCT_NEW_ARCH_ENABLED=0 pod install, wenn Sie die Legacy-Architektur benötigen.
Android (aus BrazeProject):
npx react-native run-android
Debugging und Fehlerbehebung
Aktivieren Sie während der Entwicklung das Braze-Logging in der nativen Konfiguration, damit das SDK in die Systemkonsole (Xcode / Android Logcat) schreibt. So können Sie die Initialisierung, Nutzerwechsel und die Zustellung von Events überprüfen.
- iOS – Setzen Sie in der
configure-Closure, die anBrazeReactInitializer.configureübergeben wird,config.logger.level = .debug(oder.info). Reduzieren oder deaktivieren Sie das Logging in der Produktion, damit die Logs für Nutzer:innen nicht sichtbar sind. - Android – Verwenden Sie die Ressource
com_braze_logger_initial_log_levelinbraze.xmloder legen Sie die entsprechende Einstellung inBrazeConfig.Builderfest (siehe BrazeConfigurationProvider). Verwenden Sie vor dem Release eine weniger ausführliche Log-Stufe oder entfernen Sie die Überschreibung.
Weitere Informationen zur Fehlerbehebung (Netzwerk-, Session- oder Kampagnenverhalten) finden Sie im Braze React Native Entwicklerhandbuch und in der Dokumentation der nativen SDKs (Swift · Android).
Zusätzliche Ressourcen
- Braze-Entwicklerhandbuch – React Native
- Push-Benachrichtigungen – React Native
- GitHub-Repository
- npm-Paket
Kontakt
Wenn Sie Fragen haben, wenden Sie sich an den technischen Support von Braze.
Details zum Repository und Beispielprojekte finden Sie unter https://github.com/braze-inc/braze-react-native-sdk.