Skip to content

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 umschließt 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 Android-Ressourcen und 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 (z. B. changeUser, logCustomEvent).

Was Sie tun können

  • Nutzerverwaltung: Nutzer:innen identifizieren, Profilfelder, angepasste Attribute, Aliasse und Abo-Gruppen festlegen
  • In-App-Nachrichten: Standard-Braze-UI 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: Berechtigungsanfragen, Token-Registrierung, Payload-Listener (siehe Push-Benachrichtigungen)
  • Feature-Flags: Aktualisieren, Eigenschaften lesen, Impressionen protokollieren
  • Analytics: Angepasste Events, Käufe, sofortiges Flushen
  • SDK-Steuerung: SDK aktivieren/deaktivieren, lokale Daten löschen, SDK-Authentication-Signaturen

Voraussetzungen

  • Braze-Konto mit App-API-Schlüssel und SDK-Endpunkt
  • React Native-Entwicklungsumgebung (React Native-Umgebungseinrichtung)
  • iOS: Xcode, CocoaPods (cd ios && pod install)
  • Android: Android Studio / Gradle; Kotlin-Gradle-Plugin je nach Anforderung Ihres React Native-Templates
  • Push (falls verwendet): FCM (Android) und APNs (iOS) gemäß der Push-Dokumentation

Informationen zu den Zugangsdaten im Dashboard finden Sie in der Integrationsübersicht.

Installation

1
2
3
npm install @braze/react-native-sdk
# or:
# yarn add @braze/react-native-sdk

Schnellstart

Dieser Abschnitt zeigt die Mindestkonfiguration, die zur Initialisierung des Braze React Native SDK erforderlich ist.

  1. Installieren Sie das npm-Paket unter Installation.
  2. Schließen Sie das native Setup für Android und iOS ab (Konfiguration, Berechtigungen, Push bei Bedarf).
  3. Initialisieren Sie das SDK über JavaScript und beginnen Sie mit der Nutzung:
1
2
3
4
5
6
7
8
9
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 werden mit dem Paket mitgeliefert (src/index.d.ts auf GitHub).

Ein erneuter Aufruf von Braze.initialize mit anderen Zugangsdaten beendet die aktuelle Instanz und erstellt sie neu. So wird eine Re-Initialisierung während einer laufenden Sitzung unterstützt.


Native Einrichtung

Maßgebliche Quelle: Schritt-für-Schritt-Anleitungen, Gradle-/CocoaPods-Änderungen und die vollständige Liste der Android-XML-Schlüssel finden Sie im Braze React Native-Entwicklerleitfaden. Die Android- und iOS-Snippets in diesem Abschnitt sind minimale Beispiele.

Android

  • Fügen Sie das Kotlin-Gradle-Plugin in Ihrer Root-Datei build.gradle hinzu, falls Ihr Template es nicht bereits enthält (die Version hängt von Ihrer React Native-Version ab).
  • Fügen Sie eine braze.xml-Ressourcendatei unter res/values mit Ihrer Konfiguration hinzu. Aktivieren Sie die verzögerte Initialisierung, damit das SDK auf den Aufruf von Braze.initialize() aus JavaScript wartet, bevor es startet. Andere Konfigurationswerte (Push, Sitzungs-Timeout usw.) werden weiterhin aus dieser Datei gelesen und zum Zeitpunkt der Initialisierung angewendet.
  • Stellen Sie sicher, dass grundlegende Berechtigungen wie INTERNET und ACCESS_NETWORK_STATE in der AndroidManifest.xml vorhanden sind.
  • Führen Sie für Push die FCM-Integration und alle Braze-spezifischen Sender-ID-/Registrierungs-Flags durch, die in der Dokumentation beschrieben sind.
1
2
3
4
5
6
7
8
9
10
<?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>

iOS

1
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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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: Empfängt eine Braze.Configuration und ermöglicht das Festlegen nativer Konfigurationseigenschaften (Logging, Push, Sitzungen usw.). Der API-Schlüssel und der Endpunkt werden aus JavaScript bereitgestellt – Sie legen sie hier nicht fest.
  • postInitialization-Closure (optional): Empfängt die aktive Braze-Instanz nach der Erstellung, für Setup-Aufgaben, die die Instanz erfordern (z. B. Speichern einer Referenz, Festlegen von Delegates).

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 befinden sich in XML; BrazeConfig.Builder kann sie beim Start überschreiben. Die vollständige Liste der Schlüssel und Typen finden Sie im Android-SDK-Integrationsleitfaden 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. Auf true setzen, damit das SDK auf Braze.initialize() aus JavaScript wartet.
com_braze_api_key string Nicht erforderlich bei Verwendung von Braze.initialize() aus JavaScript (Zugangsdaten werden von JS übergeben). Nur für die ältere native-first Initialisierung erforderlich.
com_braze_custom_endpoint string Nicht erforderlich bei Verwendung von Braze.initialize() aus JavaScript. Nur für die ältere native-first Initialisierung erforderlich.
com_braze_server_target string Optionaler Cluster-/Umgebungsselektor (z. B. für einige interne oder Staging-Builds). Bevorzugen Sie com_braze_custom_endpoint für die Produktion, 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-Sender-ID bei aktivierter automatischer Registrierung.
com_braze_handle_push_deep_links_automatically bool Braze öffnet Push-Deeplinks automatisch.
com_braze_trigger_action_minimum_time_interval_seconds integer Minimale Sekunden zwischen In-App-Nachricht-Trigger-Aktionen.
Sonstige verschiedene Weitere hier nicht aufgeführte Schlüssel (Sitzungstimeout, Geofences, Standort, Benachrichtigungsstandards, Geräte-Allowlists, verzögerte Initialisierung, SDK-Authentifizierung und mehr). Siehe BrazeConfigurationProvider und den Android-SDK-Integrationsleitfaden.

iOS (Braze.Configuration)

Setzen Sie native Konfigurationseigenschaften in der configure-Closure, die an BrazeReactInitializer.configure übergeben wird. Die Closure empfängt eine Braze.Configuration-Instanz – API-Schlüssel und Endpunkt werden automatisch aus dem JavaScript-Aufruf Braze.initialize gesetzt. Vollständige Details: Braze.Configuration und die verschachtelten Typen api, push, logger, location.

Bereich Mitglieder (repräsentativ) Hinweise
Zugangsdaten api.key, api.endpoint Werden automatisch aus Braze.initialize(apiKey, endpoint) in JavaScript gesetzt. Setzen Sie diese nicht in der configure-Closure.
Logging logger.level Ausführliches Logging ist für die Entwicklung gedacht; reduzieren Sie die Ausgabe in der Produktion.
Push push.automation, push.appGroup, … Automation vereinfacht die Registrierung; appGroup wird für Push Stories / Erweiterungen benötigt, wenn diese verwendet werden.
In-App-Nachrichten triggerMinimumTimeInterval Standardmäßig 30 Sekunden zwischen Triggern.
Sitzungen sessionTimeout Inaktivität bis zu einer neuen Sitzung (siehe die Braze-Dokumentation zu Sitzungen).
Datenschutz / Daten api.trackingPropertyAllowList, devicePropertyAllowList, api.sdkAuthentication Abstimmung mit dem Datenschutzmanifest und den Produkteinstellungen für SDK-Authentifizierung.
Netzwerk api.requestPolicy, api.flushInterval Richtlinie für Anfrage-Wiederholungen und Flush-Intervall.
Push-Abo optInWhenPushAuthorized Bei true kann das Abo auf „opted-in“ wechseln, nachdem Nutzer:innen Benachrichtigungen autorisiert haben.
IAM + Nutzer:innenwechsel preventInAppMessageDisplayForDifferentUser Reduziert nicht übereinstimmende In-App-Nachrichten, wenn sich die Nutzer-ID ändert.
Sonstiges forwardUniversalLinks, ephemeralEvents, useUUIDAsDeviceId, … Siehe die Swift-Dokumentation für das vollständige Verhalten.

Die React Native Bridge setzt bei der Initialisierung React-spezifische api.sdkFlavor-/SDK-Metadaten; überschreiben Sie diese nicht, es sei denn, die Braze-Dokumentation weist Sie ausdrücklich dazu an.


JavaScript / TypeScript API

Der Standardexport 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.


Kernfunktionen

Nutzerverwaltung

1
2
3
4
5
6
7
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

  • Mit der standardmäßigen Braze-UI folgen Sie der Dokumentation zu In-App-Nachrichten; in der Regel müssen Sie subscribeToInAppMessage nicht aufrufen, nur um die Standard-UI anzuzeigen.
  • Für benutzerdefinierte Handhabung abonnieren Sie mit useBrazeUI: false und protokollieren Sie dann Impressionen/Klicks nach Bedarf:
1
2
3
4
5
Braze.subscribeToInAppMessage(false, (event) => {
  const msg = event.inAppMessage;
  // Render your own UI from msg.message, msg.buttons, etc.
  Braze.logInAppMessageImpression(msg);
});

Content Cards

1
2
3
4
5
6
const cards = await Braze.getCachedContentCards();
Braze.requestContentCardsRefresh();
Braze.launchContentCards(); // default Braze UI

Braze.logContentCardImpression(cardId);
Braze.logContentCardClicked(cardId);

Warten Sie auf Aktualisierungen mit Braze.addListener(Braze.Events.CONTENT_CARDS_UPDATED, ...).

1
2
3
4
5
6
7
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

1
2
3
4
5
6
7
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 mit RN Linking zu vermeiden. Erfordert native Hooks (BrazeReactUtils auf iOS, BrazeReactUtils.populateInitialPushPayloadFromIntent auf Android), wie in den TypeScript-Doc-Kommentaren und der Beispiel-App beschrieben.
  • Braze.addListener(Braze.Events.PUSH_NOTIFICATION_EVENT, ...) ist laut den öffentlichen Typdefinitionen nur für Android verfügbar.

Feature-Flags

1
2
3
4
5
6
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

1
2
3
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. Es werden dabei keine zwischengespeicherten SDK-Daten auf dem Gerät gelöscht. Es gibt keine separate „Logout“-API: Wenn Sie eine klassische Abmeldung benötigen (den lokalen Braze-Status löschen, damit das zwischengespeicherte Profil, die Nachrichten und Tokens der vorherigen Nutzer:in auf dieser Installation entfernt werden), verwenden Sie in der Regel wipeData(). Dies ist ein vollständiger lokaler Reset.

1
2
3
Braze.wipeData();
Braze.disableSDK();
Braze.enableSDK();

wipeData() — Löscht die lokalen Braze-Daten für diese Installation (zwischengespeicherter Nutzer-/Sitzungs-/Kartenstatus, Push-Token-Zuordnung usw.). Verwenden Sie dies für Abmelde-Verhalten, wenn Sie den bisherigen Braze-Status der vorherigen Nutzer:in nicht auf dem Gerät belassen dürfen, sowie für „Meine Daten auf diesem Gerät löschen“, QA-Resets ohne Neuinstallation oder strikte Datenschutz-Abläufe. changeUser allein führt diese Bereinigung nicht durch – es legt lediglich fest, welche Nutzer-ID neue Ereignisse empfängt. Unter iOS kann das Verhalten von Android abweichen (z. B. bei der Interaktion mit dem deaktivierten SDK-Status); lesen Sie die nativen Braze-Dokumentationen, wenn Sie dies in der Produktion einsetzen.

disableSDK() — Stoppt den Betrieb des SDKs (keine Datenerfassung/-weiterleitung wie konfiguriert). Verwenden Sie dies für Opt-out-Schalter der Nutzer:innen, eingeschränkte Modi (Compliance, Kinder-Einstellungen) oder zum Debuggen ohne Entfernung der Abhängigkeit.

enableSDK() — Aktiviert das SDK nach disableSDK() wieder. Unter iOS wird die Reaktivierung möglicherweise erst beim nächsten App-Start wirksam; überprüfen Sie dies in der Braze Swift/iOS-Dokumentation, bevor Sie sich auf eine sofortige Reaktivierung verlassen.


Events

Abonnieren Sie Events mit Braze.addListener(event, callback). Der Aufruf gibt ein Abonnement-Objekt zurück. Rufen Sie .remove() darauf auf, um das Lauschen zu beenden.

Einen Listener einrichten:

1
2
3
4
5
6
7
8
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:

1
subscription.remove();

In einer React-Komponente speichern Sie das Abonnement und rufen .remove() in Ihrer Bereinigung auf (z. B. im Rückgabewert eines useEffect):

1
2
3
4
5
6
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 SDK-Authentifizierungsfehlerdetails
Braze.Events.PUSH_NOTIFICATION_EVENT Push-Payload (nur Android)

Integrationshinweise

  • Expo: Verwenden Sie das Braze Expo Plugin, um manuelle native Verdrahtung nach Möglichkeit zu vermeiden.
  • New Architecture / Turbo Modules: Wird in neueren Plugin-Versionen unterstützt. Befolgen Sie den Entwicklerleitfaden und die Beispiel-AppDelegate- / Gradle-Einstellungen, wenn Sie migrieren.
  • Datenschutz (iOS): Methoden wie updateTrackingPropertyAllowList unterstü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 Repository).

Versionsunterstützung

Die folgende Tabelle zeigt die unterstützten React Native-Versionen nach Braze-Plugin-Release.

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

Für Expo-verwaltete Workflows siehe das Braze Expo Plugin Repository.


Beispiel-App

BrazeProject in diesem Repository ist eine vollständige Beispiel-App (Nutzerverwaltung, Content Cards, Feature-Flags, Banner usw.).

1
2
3
cd BrazeProject/
yarn install
npx react-native start

iOS (aus BrazeProject):

1
2
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):

1
npx react-native run-android

Debugging und Fehlerbehebung

Aktivieren Sie das Braze-Logging in der nativen Konfiguration während der Entwicklung, damit das SDK in die Systemkonsole schreibt (Xcode / Android Logcat). So können Sie Initialisierung, Nutzer:innen-Änderungen und Event-Zustellung überprüfen.

  • iOS — Setzen Sie in der configure-Closure, die an BrazeReactInitializer.configure übergeben wird, config.logger.level = .debug (oder .info). Reduzieren oder deaktivieren Sie dies in der Produktion, damit Logs für Nutzer:innen nicht sichtbar sind.
  • Android — Verwenden Sie die Ressource com_braze_logger_initial_log_level in braze.xml oder setzen Sie den entsprechenden Wert über BrazeConfig.Builder (siehe BrazeConfigurationProvider). Verwenden Sie vor dem Release ein weniger ausführliches Level oder entfernen Sie die Überschreibung.

Für eine tiefergehende Fehlerbehebung (Netzwerk-, Sitzungs- oder Campaign-Verhalten) lesen Sie den Braze React Native-Entwicklerleitfaden und die nativen SDK-Dokumentationen (Swift · Android).


Zusätzliche Ressourcen

Kontakt

Bei Fragen wenden Sie sich an den technischen Support von Braze.

Für Repository-Details und Beispielprojekte siehe https://github.com/braze-inc/braze-react-native-sdk.

New Stuff!