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. Rufen Sie nach der Initialisierung bei Bedarf weitere SDK-Methoden auf (zum Beispiel changeUser, logCustomEvent).
Was Sie tun können
- Nutzerverwaltung: Nutzer:innen identifizieren, Profilfelder, angepasste Attribute, Aliasse und Abo-Gruppen festlegen
- In-App-Nachrichten: Standard-UI von Braze oder angepasste Verarbeitung über Subscriptions und Logging-APIs
- Content Cards: Standard-Feed-UI oder Karten abrufen und eine eigene UI erstellen
- Banner: Platzierungsbasierte HTML-Banner, einschließlich
BrazeBannerView - Push-Benachrichtigungen: Berechtigungsanfragen, Token-Registrierung, Payload-Listener (siehe Plattformhinweise unten)
- Feature-Flags: Aktualisieren, Eigenschaften auslesen, 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 (Einrichtung der React Native-Umgebung)
- iOS: Xcode, CocoaPods (
cd ios && pod install) - Android: Android Studio / Gradle; Kotlin-Gradle-Plugin, wie von Ihrem React Native-Template vorausgesetzt
- Push (falls verwendet): Einrichtung von FCM (Android) und APNs (iOS) gemäß der Push-Dokumentation
Informationen dazu, wo Sie die Zugangsdaten im Dashboard finden, erhalten Sie in der Integrationsübersicht.
Installation
npm install @braze/react-native-sdk
# or:
# yarn add @braze/react-native-sdk
Schnellstart
In diesem Abschnitt sehen Sie die Mindesteinrichtung, 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 wird eine erneute Initialisierung während einer laufenden Session unterstützt.
Native Einrichtung
Maßgebliche Quelle: Schritt-für-Schritt-Anleitungen mit Screenshots, Änderungen an Gradle und CocoaPods sowie die vollständige Liste der Android-XML-Schlüssel finden Sie im Braze React Native Entwicklerleitfaden. Die folgenden Snippets sind Minimalbeispiele.
Android
- Fügen Sie das Kotlin-Gradle-Plugin in Ihrer
build.gradleim Stammverzeichnis hinzu, falls Ihr Template es noch nicht enthält (die Versionen hängen von Ihrer React-Native-Version ab). - Fügen Sie in
res/valueseine Ressourcendateibraze.xmlmit 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 sicher, dass grundlegende Berechtigungen wie
INTERNETundACCESS_NETWORK_STATEinAndroidManifest.xmlvorhanden sind. - Schließen Sie für Push die FCM-Integration ab und setzen Sie alle Braze-spezifischen Absender-ID- und Registrierungs-Flags, die in der Dokumentation beschrieben sind.
<?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 von Braze.Configuration in der Objective-C-Bridge.
Konfigurationsreferenz
In React Native erfolgt 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)
Die Standardwerte liegen im XML; 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 Initialisierung erforderlich. |
com_braze_custom_endpoint |
string |
Nicht erforderlich, wenn Sie Braze.initialize() aus JavaScript verwenden. Nur für die ältere native Initialisierung erforderlich. |
com_braze_server_target |
string |
Optionale Auswahl von Cluster oder 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 (typisches Push-Setup). |
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 |
Minimale Anzahl von 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. Vollständige Details: Braze.Configuration sowie die verschachtelten Typen api, push, logger und 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. |
| Protokollierung | logger.level |
Ausführliche Protokollierung ist für die Entwicklung gedacht; reduzieren Sie das Rauschen 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 |
Abstimmen mit dem Privacy Manifest und den Produkteinstellungen zur SDK-Authentifizierung. |
| Netzwerk | api.requestPolicy, api.flushInterval |
Richtlinie für Anfragewiederholungen 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 IAM, 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.
Kernfeatures
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);
Warten Sie mit Braze.addListener(Braze.Events.CONTENT_CARDS_UPDATED, ...) auf Updates.
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. Sie erfordert native Hooks (BrazeReactUtilsunter iOS,BrazeReactUtils.populateInitialPushPayloadFromIntentunter Android), wie in den TypeScript-Dokumentationskommentaren und in der Beispiel-App beschrieben.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 dadurch 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(). Dabei handelt es sich um einen vollständigen lokalen Reset.
Braze.wipeData();
Braze.disableSDK();
Braze.enableSDK();
wipeData(): Löscht die lokalen Daten von Braze für diese Installation (zwischengespeicherter Nutzer-, Sitzungs- und Kartenstatus, Push-Token-Zuordnung usw.). Verwenden Sie diese Methode für ein 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 sich das Verhalten von Android unterscheiden (z. B. im Zusammenspiel mit dem deaktivierten SDK-Status). Lesen Sie die nativen Braze-Dokumentationen, wenn Sie diese Funktion in der Produktion einsetzen.
disableSDK(): Stoppt den Betrieb des SDK (keine Datenerfassung oder -weiterleitung gemäß Konfiguration). Verwenden Sie diese Methode für Opt-out-Schalter für Nutzer:innen, eingeschränkte Modi (Compliance, Kindereinstellungen) oder zum Debuggen, 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. Überprü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 Abonnementobjekt zurück. Rufen Sie darauf .remove() auf, um das Abhören zu beenden.
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);
}
);
Listener entfernen:
subscription.remove();
Speichern Sie in einer React-Komponente das Abonnement 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 |
Aktuelle Content Cards |
Braze.Events.BANNER_CARDS_UPDATED |
Aktuelle Banner |
Braze.Events.FEATURE_FLAGS_UPDATED |
Feature-Flag-Array |
Braze.Events.IN_APP_MESSAGE_RECEIVED |
In-App-Nachricht-Event |
Braze.Events.SDK_AUTHENTICATION_ERROR |
Details zum SDK-Authentifizierungsfehler |
Braze.Events.PUSH_NOTIFICATION_EVENT |
Push-Payload (nur Android) |
Hinweise zur Integration
- 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. Siehe Swift Privacy Manifest.
- Jest: Mocken Sie die nativen Module von react-native oder das Braze-Turbo-Modul (Muster finden Sie in __tests__/jest.setup.js in diesem Repo).
Versionsunterstützung

Dieses SDK wurde mit React Native Version 0.85.3 getestet.
Die folgende Tabelle listet die unterstützten React Native-Versionen nach Release des Braze-Plugins auf.
| Braze-Plugin | React Native | Neue Architektur |
|---|---|---|
| 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 von Expo verwalteten Workflows finden Sie im Repository des Braze Expo-Plugins.
Beispiel-App
BrazeProject in diesem Repository ist eine vollständige Beispiel-App (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 setzen Sie die entsprechende Option aufBrazeConfig.Builder(siehe BrazeConfigurationProvider). Verwenden Sie vor dem Release ein weniger ausführliches Level oder entfernen Sie die Überschreibung.
Für eine tiefergehende Fehlerbehebung (Netzwerk-, Session- oder Kampagnenverhalten) lesen Sie den Braze React Native Entwicklerleitfaden sowie die Dokumentation der nativen SDKs (Swift · Android).
Zusätzliche Ressourcen
- Braze Developer Guide – React Native
- Push-Benachrichtigungen – React Native
- GitHub-Repository
- npm-Paket
Kontakt
Wenden Sie sich bei Fragen an den technischen Support von Braze.
Details zum Repository und Beispielprojekte finden Sie unter https://github.com/braze-inc/braze-react-native-sdk.