Zum Inhalt springen

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.

  1. Installieren Sie das npm-Paket (siehe oben).
  2. Schließen Sie die native Einrichtung für Android und iOS ab (Konfiguration, Berechtigungen und bei Bedarf Push).
  3. 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.gradle im 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/values eine Ressourcendatei braze.xml mit Ihrer Konfiguration hinzu. Aktivieren Sie die verzögerte Initialisierung, damit das SDK vor dem Start auf Braze.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 INTERNET und ACCESS_NETWORK_STATE in AndroidManifest.xml vorhanden 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>

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 eine Braze.Configuration und 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 aktive Braze-Instanz nach ihrer Erstellung, für Einrichtungsschritte, die die Instanz benötigen (z. B. Speichern einer Referenz, Festlegen von Delegates).

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 subscribeToInAppMessage nicht aufrufen, nur um die Standard-UI anzuzeigen.
  • Für eine angepasste Verarbeitung abonnieren Sie mit useBrazeUI: false und 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 mit Linking in React Native zu vermeiden. Sie erfordert native Hooks (BrazeReactUtils unter iOS, BrazeReactUtils.populateInitialPushPayloadFromIntent unter 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 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 Repo).

Versionsunterstützung

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 an BrazeReactInitializer.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_level in braze.xml oder setzen Sie die entsprechende Option auf 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-, Session- oder Kampagnenverhalten) lesen Sie den Braze React Native Entwicklerleitfaden sowie die Dokumentation der nativen SDKs (Swift · Android).


Zusätzliche Ressourcen

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.

New Stuff!