Zum Inhalt springen

Braze-LogoDas Braze SDK integrieren

Erfahren Sie, wie Sie das Braze SDK integrieren können. Jedes SDK wird in seinem eigenen öffentlichen GitHub-Repository gehostet, das vollständig kompilierbare Beispiel-Apps enthält, mit denen Sie die Features von Braze testen oder neben Ihren eigenen Anwendungen implementieren können. Weitere Informationen finden Sie unter Referenzen, Repositories und Beispiel-Apps. Allgemeine Informationen über das SDK finden Sie unter Erste Schritte: Übersicht über die Integration.

Gespiegelte SDK-README-Inhalte in der Dokumentation finden Sie unter Repository-Leitfäden.

Über das Web Braze SDK

Das Web Braze SDK ermöglicht es Ihnen, Analytics zu erfassen und Ihren Web-Nutzer:innen umfangreiche In-App Messages, Push-Benachrichtigungen und Content Cards anzuzeigen. Weitere Informationen finden Sie in der Braze JavaScript-Referenzdokumentation.

Das Web SDK integrieren

Sie können das Web Braze SDK mit den folgenden Methoden integrieren. Weitere Optionen finden Sie unter Andere Integrationsmethoden.

  • Code-basierte Integration: Integrieren Sie das Web Braze SDK direkt in Ihre Codebasis mit Ihrem bevorzugten Paketmanager oder dem Braze CDN. So haben Sie die volle Kontrolle darüber, wie das SDK geladen und konfiguriert wird.
  • Google Tag Manager: Eine No-Code-Lösung, mit der Sie das Web Braze SDK integrieren können, ohne den Code Ihrer Website zu ändern. Weitere Informationen finden Sie unter Google Tag Manager mit dem Braze SDK.

Schritt 1: Braze-Bibliothek installieren

Sie können die Braze-Bibliothek mit einer der folgenden Methoden installieren. Wenn Ihre Website jedoch eine Content-Security-Policy verwendet, lesen Sie zunächst die Content Security Policy, bevor Sie fortfahren.

Wenn Ihre Website NPM- oder Yarn-Paketmanager verwendet, können Sie das Braze NPM-Paket als Abhängigkeit hinzufügen.

Typescript-Definitionen sind seit v3.0.0 enthalten. Hinweise zum Upgrade von 2.x auf 3.x finden Sie in unserem Changelog.

npm install --save @braze/web-sdk
# or, using yarn:
# yarn add @braze/web-sdk

Nach der Installation können Sie die Bibliothek auf die übliche Weise mit import oder require einbinden:

import * as braze from "@braze/web-sdk";
// or, using `require`
const braze = require("@braze/web-sdk");

Fügen Sie das Braze Web SDK direkt zu Ihrem HTML hinzu, indem Sie auf unser CDN-gehostetes Skript verweisen, das die Bibliothek asynchron lädt.

Schritt 2: Das SDK initialisieren

Nachdem das Braze Web SDK zu Ihrer Website hinzugefügt wurde, initialisieren Sie die Bibliothek mit dem API-Schlüssel und der SDK-Endpunkt-URL, die Sie unter Einstellungen > App-Einstellungen in Ihrem Braze-Dashboard finden. Eine vollständige Liste der Optionen für braze.initialize() sowie unsere weiteren JavaScript-Methoden finden Sie in der Braze JavaScript-Dokumentation.

// initialize the SDK
braze.initialize('YOUR-API-KEY-HERE', {
    baseUrl: "YOUR-SDK-ENDPOINT-HERE",
    enableLogging: false, // set to `true` for debugging
    allowUserSuppliedJavascript: false, // set to `true` to support custom HTML messages
});

// Enable automatic display of in-app messages
// Required if you want in-app messages to display automatically when triggered
braze.automaticallyShowInAppMessages();

// if you use Content Cards
braze.subscribeToContentCardsUpdates(function(cards){
    // cards have been updated
});

// optionally set the current user's external ID before starting a new session
// you can also call `changeUser` later in the session after the user logs in
if (isLoggedIn){
    braze.changeUser(userIdentifier);
}

// `openSession` should be called last - after `changeUser` and `automaticallyShowInAppMessages`
braze.openSession();

Fehlerbehebung bei fehlenden Sitzungen für anonyme Nutzer:innen

Wenn Sie feststellen, dass Sitzungen fehlen, oder wenn Sie die Sitzung für Nutzer:innen, die auf Ihrer Website anonym bleiben, nicht tracken können, stellen Sie sicher, dass Ihre Integration braze.openSession() während der Initialisierung aufruft.

  • Szenario: Anonyme Nutzer:innen können eine Braze-ID zurückgeben, aber die Sitzungsdaten sind leer oder fehlen.
  • Ursache: Die Implementierung ruft braze.openSession() nicht auf.
  • Lösung: Rufen Sie braze.openSession() immer nach der Initialisierung auf (und nach braze.changeUser(), wenn Sie eine externe ID setzen).

Weitere Informationen finden Sie unter Schritt 2: Das SDK initialisieren.

Voraussetzungen

Bevor Sie diese Integrationsmethode verwenden können, müssen Sie ein Konto und einen Container für Google Tag Manager erstellen.

Wählen Sie im Google Tag Manager Ihren Workspace aus und wählen Sie dann Templates. Wählen Sie im Bereich Tag Template die Option Search Gallery.

Die Template-Seite für einen Beispiel-Workspace im Google Tag Manager.

Schritt 2: Initialisierungs-Tag-Template hinzufügen

Suchen Sie in der Template-Galerie nach braze-inc und wählen Sie dann Braze Initialization Tag aus.

Die Template-Galerie mit den verschiedenen „braze-inc“-Templates.

Wählen Sie Add to workspace > Add.

Die Seite „Braze Initialization Tag“ im Google Tag Manager.

Schritt 3: Tag konfigurieren

Wählen Sie im Abschnitt Templates Ihr neu hinzugefügtes Template aus.

Die Seite „Templates“ im Google Tag Manager mit dem Braze Initialization Tag Template.

Wählen Sie das Bleistift-Symbol, um das Dropdown-Menü Tag Configuration zu öffnen.

Die Kachel „Tag Configuration“ mit dem Bleistift-Symbol.

Geben Sie die erforderlichen Mindestinformationen ein:

Feld Beschreibung
API Key Ihr Braze-API-Schlüssel, den Sie im Braze-Dashboard unter Einstellungen > App-Einstellungen finden.
API Endpoint Ihre REST-Endpunkt-URL. Ihr Endpunkt hängt von der Braze-URL für Ihre Instanz ab.
SDK Version Die aktuellste MAJOR.MINOR-Version des Web Braze SDK, die im Changelog aufgeführt ist. Wenn die neueste Version beispielsweise 4.1.2 ist, geben Sie 4.1 ein. Weitere Informationen finden Sie unter Über die SDK-Versionsverwaltung.

Für zusätzliche Initialisierungseinstellungen wählen Sie Braze Initialization Options und wählen die gewünschten Optionen aus.

Die Liste der Braze Initialization Options unter „Tag Configuration“.

Schritt 4: Initialisierungsoptionen auswählen

Das Braze Initialization Tag bietet die folgenden Optionen. Die meisten davon lassen sich direkt den Web SDK InitializationOptions zuordnen, und einige entsprechen Web-SDK-Methoden, die das Tag während der Initialisierung aufruft. Wählen Sie die Optionen aus, die Ihren Integrationsanforderungen entsprechen:

GTM-Option Web-SDK-Konfiguration oder -Methode Beschreibung
Allow HTML In-App Messages allowUserSuppliedJavascript Aktiviert HTML-In-App-Nachrichten, Banner und von Nutzer:innen bereitgestellte JavaScript-Klickaktionen. Erforderlich für HTML-In-App-Nachrichten und Banner, die angepasstes HTML verwenden. Aktivieren Sie diese Option nur, wenn Sie dem HTML- und JavaScript-Inhalt vertrauen, da sie die Ausführung von benutzerdefiniertem JavaScript ermöglicht.
App Version Number appVersion, appVersionNumber App-Version für die Segmentierung (zum Beispiel 1.2.3.4).
Automatically Open New Session braze.openSession() Öffnet eine neue Sitzung, nachdem das SDK initialisiert wurde, indem diese Methode automatisch aufgerufen wird.
Automatically show new in app messages braze.automaticallyShowInAppMessages() Zeigt neue In-App-Nachrichten automatisch an, wenn sie vom Server eintreffen, indem diese Methode nach der Initialisierung aufgerufen wird.
Disable Automatic Push Token Maintenance disablePushTokenMaintenance Verhindert, dass das SDK Push-Token bei neuen Sitzungen mit dem Braze-Backend synchronisiert.
Disable Automatic Service Worker Registration manageServiceWorkerExternally Verwenden Sie diese Option, wenn Sie den Service Worker selbst registrieren und verwalten.
Disable Cookies noCookies Verwendet localStorage anstelle von Cookies für Nutzer:innen- und Sitzungsdaten. Verhindert die subdomainübergreifende Erkennung.
Disable Font Awesome doNotLoadFontAwesome Verhindert, dass das SDK Font Awesome aus dem CDN lädt. Verwenden Sie diese Option, wenn Ihre Website bereits über eine eigene Font-Awesome-Version verfügt.
Enable SDK Authentication enableSdkAuthentication Aktiviert die SDK-Authentifizierung.
Enable Web SDK Logging enableLogging Aktiviert die Konsolenprotokollierung für das Debugging. Entfernen Sie diese Option vor dem Produktivbetrieb.
Minimum Interval Between Triggered Messages minimumIntervalBetweenTriggerActionsInSeconds Mindestzeit in Sekunden zwischen getriggerten Aktionen (Standard: 30).
Open Cards in New Tab openCardsInNewTab Öffnet Content-Card-Links in einem neuen Tab, wenn die Standard-Feed-UI verwendet wird.
Service Worker Location serviceWorkerLocation Benutzerdefinierter Pfad für die Service-Worker-Datei (Standard: /service-worker.js).
Session Timeout (seconds) sessionTimeoutInSeconds Sitzungszeitlimit in Sekunden (Standard: 1800).

Für Optionen, die nicht im GTM-Template verfügbar sind (wie contentSecurityNonce, localization oder devicePropertyAllowlist), verwenden Sie stattdessen die Laufzeitinitialisierung.

Schritt 5: Auf allen Seiten triggern

Das Initialisierungs-Tag sollte auf allen Seiten Ihrer Website ausgeführt werden. So können Sie die Braze-SDK-Methoden nutzen und Web-Push-Analytics erfassen.

Schritt 6: Integration überprüfen

Sie können Ihre Integration mit einer der folgenden Optionen überprüfen:

  • Option 1: Mit dem Debugging-Tool von Google Tag Manager können Sie prüfen, ob das Braze Initialization Tag auf Ihren konfigurierten Seiten oder bei Ihren konfigurierten Ereignissen korrekt getriggert wird.
  • Option 2: Prüfen Sie, ob von Ihrer Webseite Netzwerk-Anfragen an Braze gesendet werden. Darüber hinaus sollte die globale window.braze-Bibliothek nun definiert sein.

Bot-Traffic filtern

MAU kann einen Prozentsatz an Bot-Nutzer:innen enthalten, was die Anzahl Ihrer monatlich aktiven Nutzer:innen erhöht. Das Braze Web SDK verfügt zwar über eine integrierte Erkennung für einige gängige Webcrawler (wie Suchmaschinen-Bots und Social-Media-Vorschau-Bots), dennoch ist es besonders wichtig, proaktiv mit robusten Lösungen zur Erkennung von Bots zu arbeiten, da SDK-Updates allein nicht in der Lage sind, jeden neuen Bot konsistent zu erkennen.

Einschränkungen der Bot-Erkennung auf SDK-Seite

Das Web SDK umfasst eine grundlegende, auf User-Agents basierende Bot-Erkennung, die bekannte Crawler herausfiltert. Dieser Ansatz weist jedoch Einschränkungen auf:

  • Es entstehen ständig neue Bots: KI-Unternehmen und andere Akteure entwickeln regelmäßig neue Bots, die sich möglicherweise tarnen, um einer Erkennung zu entgehen.
  • User-Agent-Spoofing: Ausgefeilte Bots können legitime Browser-User-Agents imitieren.
  • Angepasste Bots: Nicht-technische Nutzer:innen können nun auf einfache Weise Bots mithilfe großer Sprachmodelle (LLMs) erstellen, wodurch das Verhalten der Bots unvorhersehbar wird.

Implementierung von Bot-Filtern

Die zuverlässigste Lösung besteht darin, Ihre eigene Bot-Filterlogik zu implementieren, bevor Sie das Braze SDK initialisieren. Zu den gängigen Ansätzen gehören:

Nutzerinteraktion erforderlich

Es wird empfohlen, die Initialisierung des SDK zu verzögern, bis Nutzer:innen eine sinnvolle Interaktion durchführen, wie beispielsweise das Akzeptieren eines Cookie-Consent-Banners, das Scrollen oder einen Klick. Dieser Ansatz ist häufig einfacher umzusetzen und kann beim Filtern von Bot-Traffic sehr effektiv sein.

Erkennung angepasster Bots

Implementieren Sie eine angepasste Erkennung basierend auf Ihren spezifischen Bot-Traffic-Mustern, wie zum Beispiel:

  • Analyse von User-Agent-Strings auf Muster, die Sie in Ihrem Datenverkehr identifiziert haben
  • Überprüfung auf Indikatoren für einen Headless-Browser
  • Nutzung von Bot-Erkennungsdiensten von Drittanbietern
  • Überwachung von Verhaltenssignalen, die für Ihre Website spezifisch sind

Beispiel für bedingte Initialisierung:

// Only initialize Braze if your custom bot detection determines this is not a bot
if (!isLikelyBot()) {
  braze.initialize('YOUR-API-KEY-HERE', {
    baseUrl: "YOUR-SDK-ENDPOINT-HERE"
  });
  braze.automaticallyShowInAppMessages();
  braze.openSession();
}

Best Practices

  • Analysieren Sie regelmäßig Ihre MAU-Daten und Web-Traffic-Muster, um neues Bot-Verhalten zu erkennen.
  • Führen Sie gründliche Tests durch, um sicherzustellen, dass Ihre Bot-Filterung keine legitimen Nutzer:innen vom Tracking ausschließt.
  • Aktualisieren Sie Ihre Filterlogik auf Grundlage der Bot-Traffic-Muster, die Sie in Ihrer Umgebung beobachten.

Optionale Konfigurationen

Protokollierung

Um die Protokollierung schnell zu aktivieren, können Sie ?brazeLogging=true als Parameter zu Ihrer Website-URL hinzufügen. Alternativ können Sie die einfache oder angepasste Protokollierung aktivieren. Eine zentralisierte Übersicht über alle Plattformen finden Sie unter Ausführliche Protokollierung.

Einfache Protokollierung

Verwenden Sie enableLogging, um einfache Debugging-Nachrichten in der JavaScript-Konsole zu protokollieren, bevor das SDK initialisiert wird.

enableLogging: true

Ihre Methode sollte in etwa so aussehen:

braze.initialize('API-KEY', {
    baseUrl: 'API-ENDPOINT',
    enableLogging: true
});
braze.openSession();

Verwenden Sie braze.toggleLogging(), um einfache Debugging-Nachrichten in der JavaScript-Konsole zu protokollieren, nachdem das SDK initialisiert wurde. Ihre Methode sollte in etwa so aussehen:

braze.initialize('API-KEY', {
    baseUrl: 'API-ENDPOINT',
});
braze.openSession();
...
braze.toggleLogging();

Angepasste Protokollierung

Verwenden Sie setLogger, um angepasste Debugging-Nachrichten in der JavaScript-Konsole zu protokollieren. Im Gegensatz zu einfachen Protokollen sind diese Protokolle nicht für Nutzer:innen sichtbar.

setLogger(loggerFunction: (message: STRING) => void): void

Ersetzen Sie STRING durch Ihre Nachricht als einzelnen String-Parameter. Ihre Methode sollte in etwa so aussehen:

braze.initialize('API-KEY');
braze.setLogger(function(message) {
    console.log("Braze Custom Logger: " + message);
});
braze.openSession();

Upgrade des SDK

Wenn Sie das Braze Web SDK über unser Content Delivery Network referenzieren, z. B. https://js.appboycdn.com/web-sdk/a.a/braze.min.js (wie in unseren Standard-Integrationsanweisungen empfohlen), erhalten Ihre Nutzer:innen automatisch kleinere Updates (Fehlerbehebungen und abwärtskompatible Features, in diesem Beispiel die Versionen a.a.a bis a.a.z), wenn sie Ihre Website aktualisieren.

Wenn wir jedoch größere Änderungen veröffentlichen, müssen Sie das Braze Web SDK manuell upgraden, um sicherzustellen, dass Breaking Changes Ihre Integration nicht beeinträchtigen. Wenn Sie unser SDK herunterladen und selbst hosten, erhalten Sie außerdem keine automatischen Versionsupdates und sollten manuell upgraden, um die neuesten Features und Fehlerbehebungen zu erhalten.

Sie können sich über unsere neuesten Releases auf dem Laufenden halten, indem Sie unseren Release-Feed abonnieren – mit dem RSS-Reader oder Dienst Ihrer Wahl – und in unserem Changelog eine vollständige Übersicht über die Release-Historie unseres Web SDK einsehen. So upgraden Sie das Braze Web SDK:

  • Aktualisieren Sie die Version der Braze-Bibliothek, indem Sie die Versionsnummer von https://js.appboycdn.com/web-sdk/[OLD VERSION NUMBER]/braze.min.js ändern oder die Abhängigkeiten in Ihrem Paketmanager anpassen.
  • Wenn Sie Web-Push integriert haben, aktualisieren Sie die Service-Worker-Datei auf Ihrer Website. Standardmäßig befindet sich diese unter /service-worker.js im Stammverzeichnis Ihrer Website. Der Speicherort kann jedoch bei einigen Integrationen angepasst worden sein. Sie müssen auf das Stammverzeichnis zugreifen können, um eine Service-Worker-Datei zu hosten.

Diese beiden Dateien müssen koordiniert aktualisiert werden, um die ordnungsgemäße Funktionalität sicherzustellen.

Andere Integrationsmethoden

Accelerated Mobile Pages (AMP)

Mehr erfahren

Schritt 1: AMP Web-Push-Skript einbinden

Fügen Sie das folgende asynchrone Script-Tag in Ihren Head-Bereich ein:

<script async custom-element="amp-web-push" src="https://cdn.ampproject.org/v0/amp-web-push-0.1.js"></script>

Schritt 2: Abo-Widgets hinzufügen

Fügen Sie ein Widget in den Body Ihres HTML ein, das es Nutzer:innen ermöglicht, Push-Benachrichtigungen zu abonnieren und abzubestellen.

<!-- A subscription widget -->
<amp-web-push-widget visibility="unsubscribed" layout="fixed" width="250" height="80">
  <button on="tap:amp-web-push.subscribe">Subscribe to Notifications</button>
</amp-web-push-widget>

<!-- An unsubscription widget -->
<amp-web-push-widget visibility="subscribed" layout="fixed" width="250" height="80">
  <button on="tap:amp-web-push.unsubscribe">Unsubscribe from Notifications</button>
</amp-web-push-widget>

Schritt 3: helper-iframe und permission-dialog hinzufügen

Die AMP Web-Push-Komponente erstellt ein Popup-Fenster zur Verarbeitung von Push-Abonnements. Daher müssen Sie die folgenden Hilfsdateien zu Ihrem Projekt hinzufügen, um dieses Feature zu aktivieren:

Schritt 4: Eine Service-Worker-Datei erstellen

Erstellen Sie eine service-worker.js-Datei im Stammverzeichnis Ihrer Website und fügen Sie das folgende Snippet ein:

Schritt 5: Das AMP Web-Push-HTML-Element konfigurieren

Fügen Sie das folgende amp-web-push-HTML-Element in Ihren HTML-Body ein. Beachten Sie, dass Sie Ihren apiKey und baseUrl als Abfrageparameter an die service-worker-URL anhängen müssen.

<amp-web-push
layout="nodisplay"
id="amp-web-push"
helper-iframe-url="FILE_PATH_TO_YOUR_HELPER_IFRAME"
permission-dialog-url="FILE_PATH_TO_YOUR_PERMISSION_DIALOG"
service-worker-url="FILE_PATH_TO_YOUR_SERVICE_WORKER?apiKey={YOUR_API_KEY}&baseUrl={YOUR_BASE_URL}"
>

Asynchronous Module Definition (AMD)

Unterstützung deaktivieren

Wenn Ihre Website RequireJS oder einen anderen AMD-Modullader verwendet, Sie das Braze Web SDK aber lieber über eine der anderen Optionen in dieser Liste laden möchten, können Sie eine Version der Bibliothek laden, die keine AMD-Unterstützung enthält. Diese Version der Bibliothek kann vom folgenden CDN-Standort geladen werden:

Modullader

Wenn Sie RequireJS oder andere AMD-Modullader verwenden, empfehlen wir, eine Kopie unserer Bibliothek selbst zu hosten und sie wie andere Ressourcen zu referenzieren:

require(['path/to/braze.min.js'], function(braze) {
  braze.initialize('YOUR-API-KEY-HERE', { baseUrl: 'YOUR-SDK-ENDPOINT' });
  // Required if you want in-app messages to display automatically
  braze.automaticallyShowInAppMessages();
  braze.openSession();
});

Electron

Electron unterstützt Web-Push-Benachrichtigungen nicht offiziell (siehe: dieses GitHub-Issue). Es gibt weitere Open-Source-Workarounds, die Sie ausprobieren können, die jedoch nicht von Braze getestet wurden.

Jest-Framework

Bei der Verwendung von Jest kann ein Fehler ähnlich wie SyntaxError: Unexpected token 'export' auftreten. Um diesen zu beheben, passen Sie Ihre Konfiguration in package.json an, um das Braze SDK zu ignorieren:

"jest": {
  "transformIgnorePatterns": [
    "/node_modules/(?!@braze)"
  ]
}

SSR-Frameworks

Das Web SDK wird in einer Browserumgebung ausgeführt. In SSR-Frameworks initialisieren Sie Braze in einer rein clientseitigen Komponente, damit Ihr Server niemals SDK-Code ausführt.

Framework-unabhängiger dynamischer Import

Wenn Ihr Framework nicht in diesem Abschnitt aufgeführt ist, können Sie Braze dynamisch aus einem rein clientseitigen Lifecycle-Hook importieren.

// MyComponent/braze-exports.js
// Export the parts of the SDK that you need.
export { initialize, openSession } from "@braze/web-sdk";

// MyComponent/MyComponent.js
useEffect(() => {
    import("./braze-exports.js").then(({ initialize, openSession }) => {
        initialize("YOUR-API-KEY-HERE", {
            baseUrl: "YOUR-SDK-ENDPOINT",
            enableLogging: true,
        });
        openSession();
    });
}, []);

Wenn Sie Webpack verwenden, können Sie dynamisch nur bestimmte SDK-Exporte importieren.

// 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();
    });
}, []);

Gemeinsamer Hook für Next.js und Remix

Erstellen Sie einen wiederverwendbaren useBraze-Hook und rufen Sie ihn in der Nähe Ihres App-Roots auf.

// hooks/useBraze.ts
import { useEffect, useRef } from "react";

export function useBraze() {
  const didInit = useRef(false);

  useEffect(() => {
    if (didInit.current) {
      return;
    }
    didInit.current = true;

    import("@braze/web-sdk")
      .then((braze) => {
        const initialized = braze.initialize("YOUR-API-KEY-HERE", {
          // Use your Braze Web SDK endpoint, such as sdk.iad-01.braze.com.
          baseUrl: "YOUR-SDK-ENDPOINT",
          enableLogging: false,
        });
        if (!initialized) {
          return;
        }

        // Optional: Identify signed-in users before opening a session.
        // braze.changeUser("external-id");

        // Optional: Automatically display in-app messages.
        // braze.automaticallyShowInAppMessages();
        braze.openSession();
      })
      .catch((error) => {
        console.error("Unable to load Braze SDK:", error);
      });
  }, []);
}

Next.js (App Router)

Rufen Sie useBraze in einer Client-Komponente auf, die Ihre App umschließt.

// app/components/AppRoot.tsx
"use client";

import type { ReactNode } from "react";
import { useBraze } from "../hooks/useBraze";

export function AppRoot({ children }: { children: ReactNode }) {
  useBraze();
  return <>{children}</>;
}
// app/layout.tsx
import type { ReactNode } from "react";
import { AppRoot } from "./components/AppRoot";

export default function RootLayout({
  children,
}: {
  children: ReactNode;
}) {
  return (
    <html lang="en">
      <body>
        <AppRoot>{children}</AppRoot>
      </body>
    </html>
  );
}

Next.js (Pages Router)

Rufen Sie useBraze am Anfang Ihrer angepassten App-Komponente auf.

// pages/_app.tsx
import type { AppProps } from "next/app";
import { useBraze } from "../hooks/useBraze";

export default function App({ Component, pageProps }: AppProps) {
  useBraze();

  return (
    <Component {...pageProps} />
  );
}

Remix

Rufen Sie useBraze am Anfang Ihrer Root-Route-Komponente auf.

Für lokale Remix-Validierungsbeispiele führen Sie PORT=4013 npm run dev aus.

// app/root.tsx
import { Outlet } from "@remix-run/react";
import { useBraze } from "./hooks/useBraze";

export default function App() {
  useBraze();

  return <Outlet />;
}

Ereignisse protokollieren und Nutzer:innen aktualisieren

Nachdem useBraze das SDK in Ihrem App-Root initialisiert hat, können andere Client-Komponenten Braze-Methoden aufrufen. Ein gängiges Muster ist der Aufruf innerhalb von Nutzer:innen-Aktionen, wie onClick oder onSubmit. Im Beispiel werden die SDK-Methoden innerhalb des Click-Handlers geladen, anstatt am Anfang der Datei. Dadurch bleibt das Web SDK aus dem Servercode heraus, und es wird nur das geladen, was die jeweilige Aktion benötigt. Der webpackExports-Kommentar teilt Webpack mit, welche Methoden eingebunden werden sollen, damit Ihr Bundle kleiner bleibt.

// app/components/BuyButton.tsx
"use client";

export function BuyButton() {
  const handleClick = async () => {
    const { logCustomEvent, logPurchase, getUser } = await import(
      /* webpackExports: ["logCustomEvent", "logPurchase", "getUser"] */
      "@braze/web-sdk"
    );

    getUser()?.setCustomUserAttribute("last_purchase_date", "2026-05-04");
    logCustomEvent("clicked_buy", { source: "product_page" });
    logPurchase("sku_123", 19.99, "USD");
  };

  return <button onClick={handleClick}>Buy</button>;
}

Dieses Beispiel zeigt eine BuyButton-Komponente, die Aktivitäten protokolliert, wenn jemand auf Buy klickt. Zunächst werden nur logCustomEvent, logPurchase und getUser zum Zeitpunkt des Klicks importiert. Dann wird ein Nutzer:innen-Attribut aktualisiert, ein angepasstes Event protokolliert und ein Kauf erfasst. Dieses Muster hilft Ihnen, die Initialisierung zentral in useBraze zu halten und gleichzeitig aussagekräftige Aktionen von jeder Client-Komponente aus zu verfolgen.

Wenn Sie Remix mit Vite verwenden und Paketroot-Importe zur Laufzeit fehlschlagen, nutzen Sie den bestehenden Vite-Workaround. Weitere Informationen finden Sie unter Vite.

Eine vollständige Liste der verfügbaren Methoden finden Sie in der Braze JavaScript-Referenzdokumentation.

Tealium iQ

Tealium iQ bietet eine einfache schlüsselfertige Braze-Integration. Um die Integration zu konfigurieren, suchen Sie in der Tealium Tag-Management-Oberfläche nach Braze und geben Sie den Web SDK-API-Schlüssel aus Ihrem Dashboard an.

Weitere Details oder ausführliche Unterstützung bei der Tealium-Konfiguration finden Sie in unserer Integrationsdokumentation oder wenden Sie sich an Ihren Tealium Account Manager.

Vite

Wenn Sie Vite verwenden und eine Warnung zu zirkulären Abhängigkeiten oder Uncaught TypeError: Class extends value undefined is not a constructor or null erhalten, müssen Sie möglicherweise das Braze SDK von der Abhängigkeitserkennung ausschließen:

optimizeDeps: {
    exclude: ['@braze/web-sdk']
},

Andere Tag-Manager

Braze ist möglicherweise auch mit anderen Tag-Management-Lösungen kompatibel, wenn Sie unsere Integrationsanweisungen innerhalb eines angepassten HTML-Tags befolgen. Wenden Sie sich an eine Braze-Vertretung, wenn Sie Hilfe bei der Evaluierung dieser Lösungen benötigen.

Das Android SDK integrieren

Schritt 1: Ihre Gradle-Build-Konfiguration aktualisieren

Fügen Sie in der Repository-Konfiguration Ihres Projekts (z. B. settings.gradle, settings.gradle.kts oder die build.gradle-Datei auf oberster Ebene) mavenCentral() zu Ihrer Liste der Repositories hinzu. Diese Syntax ist für Groovy und Kotlin DSL identisch.

repositories {
  mavenCentral()
}

Fügen Sie als Nächstes Braze zu Ihren Abhängigkeiten hinzu. Ersetzen Sie in den folgenden Beispielen SDK_VERSION durch die aktuelle Version Ihres Android Braze SDK. Eine vollständige Liste der Versionen finden Sie unter Changelogs.

Wenn Sie nicht vorhaben, Braze-UI-Komponenten zu verwenden, fügen Sie Folgendes zu Ihren Abhängigkeiten hinzu.

dependencies {
    implementation 'com.braze:android-sdk-base:SDK_VERSION' // (Required) Adds dependencies for the base Braze SDK.
    implementation 'com.braze:android-sdk-location:SDK_VERSION' // (Optional) Adds dependencies for Braze location services.
}
dependencies {
    implementation("com.braze:android-sdk-base:SDK_VERSION") // (Required) Adds dependencies for the base Braze SDK.
    implementation("com.braze:android-sdk-location:SDK_VERSION") // (Optional) Adds dependencies for Braze location services.
}

In Ihrer Datei gradle/libs.versions.toml:

[versions]
braze = "SDK_VERSION"

[libraries]
braze-android-sdk-base = { group = "com.braze", name = "android-sdk-base", version.ref = "braze" }
braze-android-sdk-location = { group = "com.braze", name = "android-sdk-location", version.ref = "braze" }

Fügen Sie anschließend in Ihrer Datei build.gradle oder build.gradle.kts die folgenden Abhängigkeiten hinzu. Diese Syntax ist für Groovy und Kotlin DSL identisch.

dependencies {
    implementation(libs.braze.android.sdk.base) // (Required) Adds dependencies for the base Braze SDK.
    implementation(libs.braze.android.sdk.location) // (Optional) Adds dependencies for Braze location services.
}

Wenn Sie vorhaben, Braze-UI-Komponenten zu verwenden, fügen Sie Folgendes zu Ihren Abhängigkeiten hinzu.

dependencies {
    implementation 'com.braze:android-sdk-ui:SDK_VERSION' // (Required) Adds dependencies for the Braze SDK and Braze UI components.
    implementation 'com.braze:android-sdk-location:SDK_VERSION' // (Optional) Adds dependencies for Braze location services.
}
dependencies {
    implementation("com.braze:android-sdk-ui:SDK_VERSION") // (Required) Adds dependencies for the Braze SDK and Braze UI components.
    implementation("com.braze:android-sdk-location:SDK_VERSION") // (Optional) Adds dependencies for Braze location services.
}

In Ihrer Datei gradle/libs.versions.toml:

[versions]
braze = "SDK_VERSION"

[libraries]
braze-android-sdk-ui = { group = "com.braze", name = "android-sdk-ui", version.ref = "braze" }
braze-android-sdk-location = { group = "com.braze", name = "android-sdk-location", version.ref = "braze" }

Fügen Sie anschließend in Ihrer Datei build.gradle oder build.gradle.kts die folgenden Abhängigkeiten hinzu. Diese Syntax ist für Groovy und Kotlin DSL identisch.

dependencies {
    implementation(libs.braze.android.sdk.ui) // (Required) Adds dependencies for the Braze SDK and Braze UI components.
    implementation(libs.braze.android.sdk.location) // (Optional) Adds dependencies for Braze location services.
}

Schritt 2: Ihre braze.xml konfigurieren

Erstellen Sie eine Datei braze.xml im Ordner res/values Ihres Projekts. Wenn Sie sich in einem bestimmten Datencluster befinden oder über einen bestehenden angepassten Endpunkt verfügen, müssen Sie den Endpunkt ebenfalls in Ihrer Datei braze.xml angeben.

Der Inhalt dieser Datei sollte dem folgenden Code-Snippet ähneln. Ersetzen Sie YOUR_APP_IDENTIFIER_API_KEY durch den Bezeichner, der auf der Seite Einstellungen verwalten im Braze-Dashboard zu finden ist. Melden Sie sich unter dashboard.braze.com an, um Ihre Cluster-Adresse zu finden.

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <string translatable="false" name="com_braze_api_key">YOUR_APP_IDENTIFIER_API_KEY</string>
  <string translatable="false" name="com_braze_custom_endpoint">YOUR_CUSTOM_ENDPOINT_OR_CLUSTER</string>
</resources>

Schritt 3: Berechtigungen zur AndroidManifest.xml hinzufügen

Fügen Sie als Nächstes die folgenden Berechtigungen zu Ihrer AndroidManifest.xml hinzu:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

Schritt 4: Verzögerte Initialisierung aktivieren (optional)

Für die verzögerte Initialisierung ist die folgende Mindestversion des Braze SDK erforderlich:

Schritt 4.1: Ihre braze.xml aktualisieren

Die verzögerte Initialisierung ist standardmäßig deaktiviert. Um sie zu aktivieren, verwenden Sie eine der folgenden Optionen:

Setzen Sie in der Datei braze.xml Ihres Projekts com_braze_enable_delayed_initialization auf true.

<bool name="com_braze_enable_delayed_initialization">true</bool>

Um die verzögerte Initialisierung zur Laufzeit zu aktivieren, verwenden Sie die folgende Methode.

Braze.enableDelayedInitialization(context);
Braze.enableDelayedInitialization(context)

Schritt 4.2: Push-Analytics konfigurieren (optional)

Wenn die verzögerte Initialisierung aktiviert ist, werden Push-Analytics standardmäßig in eine Warteschlange gestellt. Sie können jedoch wählen, ob Sie Push-Analytics explizit in die Warteschlange stellen oder verwerfen möchten.

Explizit in die Warteschlange stellen

Um Push-Analytics explizit in die Warteschlange zu stellen, wählen Sie eine der folgenden Optionen:

Setzen Sie in Ihrer Datei braze.xml den Wert com_braze_delayed_initialization_analytics_behavior auf QUEUE:

<string name="com_braze_delayed_initialization_analytics_behavior">QUEUE</string>

Fügen Sie QUEUE zu Ihrer Methode Braze.enableDelayedInitialization() hinzu:

Braze.enableDelayedInitialization(context, DelayedInitializationAnalyticsBehavior.QUEUE);
Braze.enableDelayedInitialization(context, DelayedInitializationAnalyticsBehavior.QUEUE)
Verwerfen

Um Push-Analytics zu verwerfen, wählen Sie eine der folgenden Optionen:

Setzen Sie in Ihrer Datei braze.xml den Wert com_braze_delayed_initialization_analytics_behavior auf DROP:

<string name="com_braze_delayed_initialization_analytics_behavior">DROP</string>

Fügen Sie DROP zur Methode Braze.enableDelayedInitialization() hinzu:

Braze.enableDelayedInitialization(context, DelayedInitializationAnalyticsBehavior.DROP);
Braze.enableDelayedInitialization(context, DelayedInitializationAnalyticsBehavior.DROP)

Schritt 4.3: Das SDK manuell initialisieren

Verwenden Sie nach der gewählten Verzögerungszeit die Methode Braze.disableDelayedInitialization(), um das SDK manuell zu initialisieren.

Braze.disableDelayedInitialization(context);
Braze.disableDelayedInitialization(context)

Schritt 5: Sitzungs-Tracking für Nutzer:innen aktivieren

Wenn Sie das Sitzungs-Tracking für Nutzer:innen aktivieren, werden Aufrufe von openSession(), closeSession(), ensureSubscribedToInAppMessageEvents() und die InAppMessageManager-Registrierung automatisch verarbeitet.

Um Activity-Lifecycle-Callbacks zu registrieren, fügen Sie den folgenden Code zur Methode onCreate() Ihrer Application-Klasse hinzu.

public class MyApplication extends Application {
  @Override
  public void onCreate() {
    super.onCreate();
    registerActivityLifecycleCallbacks(new BrazeActivityLifecycleCallbackListener());
  }
}
class MyApplication : Application() {
  override fun onCreate() {
    super.onCreate()
    registerActivityLifecycleCallbacks(BrazeActivityLifecycleCallbackListener())
  }
}

Eine Liste der verfügbaren Parameter finden Sie unter BrazeActivityLifecycleCallbackListener.

Testen des Sitzungs-Trackings

Wenn beim Testen Probleme auftreten, aktivieren Sie die ausführliche Protokollierung und verwenden Sie dann Logcat, um fehlende openSession- und closeSession-Aufrufe in Ihren Activities zu erkennen.

  1. Navigieren Sie in Braze zu Übersicht, wählen Sie Ihre App aus und wählen Sie dann im Dropdown Daten anzeigen für die Option Heute. Die Seite „Übersicht“ in Braze, mit dem Feld „Daten anzeigen für“ auf „Heute“ eingestellt.
  2. Öffnen Sie Ihre App und aktualisieren Sie dann das Braze-Dashboard. Überprüfen Sie, ob Ihre Metriken um 1 gestiegen sind.
  3. Navigieren Sie durch Ihre App und überprüfen Sie, ob nur eine Sitzung in Braze protokolliert wurde.
  4. Senden Sie die App für mindestens 10 Sekunden in den Hintergrund und bringen Sie sie dann wieder in den Vordergrund. Überprüfen Sie, ob eine neue Sitzung protokolliert wurde.

Optionale Konfigurationen

Laufzeitkonfiguration

Um Ihre Braze-Optionen im Code anstatt in Ihrer braze.xml-Datei festzulegen, verwenden Sie die Laufzeitkonfiguration. Wenn ein Wert an beiden Stellen vorhanden ist, wird stattdessen der Laufzeitwert verwendet. Sobald alle erforderlichen Einstellungen zur Laufzeit bereitgestellt wurden, können Sie Ihre braze.xml-Datei löschen.

Im folgenden Beispiel wird ein Builder-Objekt erstellt und dann an Braze.configure() übergeben. Beachten Sie, dass nur einige der verfügbaren Laufzeitoptionen angezeigt werden—die vollständige Liste finden Sie in unserem KDoc.

BrazeConfig brazeConfig = new BrazeConfig.Builder()
        .setApiKey("api-key-here")
        .setCustomEndpoint("YOUR_CUSTOM_ENDPOINT_OR_CLUSTER")
        .setSessionTimeout(60)
        .setHandlePushDeepLinksAutomatically(true)
        .setGreatNetworkDataFlushInterval(10)
        .build();
Braze.configure(this, brazeConfig);
val brazeConfig = BrazeConfig.Builder()
        .setApiKey("api-key-here")
        .setCustomEndpoint("YOUR_CUSTOM_ENDPOINT_OR_CLUSTER")
        .setSessionTimeout(60)
        .setHandlePushDeepLinksAutomatically(true)
        .setGreatNetworkDataFlushInterval(10)
        .build()
Braze.configure(this, brazeConfig)

Google Advertising ID

Die Google Advertising ID (GAID) ist eine optionale, nutzerspezifische, anonyme, eindeutige und zurücksetzbare ID für Werbung, die von den Google Play-Diensten bereitgestellt wird. Die GAID gibt Nutzer:innen die Möglichkeit, ihre Kennung zurückzusetzen, interessenbasierte Werbung in Google Play-Apps abzulehnen, und bietet Entwickler:innen ein einfaches, standardisiertes System, um ihre Apps weiterhin zu monetarisieren.

Die Google Advertising ID wird nicht automatisch vom Braze SDK erfasst und muss manuell über die Methode Braze.setGoogleAdvertisingId() gesetzt werden.

new Thread(new Runnable() {
  @Override
  public void run() {
    try {
      AdvertisingIdClient.Info idInfo = AdvertisingIdClient.getAdvertisingIdInfo(getApplicationContext());
      Braze.getInstance(getApplicationContext()).setGoogleAdvertisingId(idInfo.getId(), idInfo.isLimitAdTrackingEnabled());
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}).start();
suspend fun fetchAndSetAdvertisingId(
  context: Context,
  scope: CoroutineScope = GlobalScope
) {
  scope.launch(Dispatchers.IO) {
    try {
      val idInfo = AdvertisingIdClient.getAdvertisingIdInfo(context)
      Braze.getInstance(context).setGoogleAdvertisingId(
        idInfo.id,
        idInfo.isLimitAdTrackingEnabled
      )
    } catch (e: Exception) {
      e.printStackTrace()
    }
  }
}

Standort-Tracking

Um die Braze-Standorterfassung zu aktivieren, setzen Sie com_braze_enable_location_collection in Ihrer braze.xml-Datei auf true:

<bool name="com_braze_enable_location_collection">true</bool>

Protokollierung

Standardmäßig ist die Log-Stufe des Braze Android SDK auf INFO gesetzt. Sie können diese Logs unterdrücken oder eine andere Log-Stufe festlegen, z. B. VERBOSE, DEBUG oder WARN.

Logs aktivieren

Um bei der Fehlerbehebung in Ihrer App zu helfen oder die Bearbeitungszeiten beim Braze-Support zu verkürzen, können Sie ausführliche Logs für das SDK aktivieren. Wenn Sie ausführliche Logs an den Braze-Support senden, stellen Sie sicher, dass diese beginnen, sobald Sie Ihre Anwendung starten, und weit nach dem Auftreten Ihres Problems enden. Einen zentralen Überblick finden Sie unter Ausführliche Protokollierung. Informationen zur Interpretation der Log-Ausgabe finden Sie unter Ausführliche Protokolle lesen.

Beachten Sie, dass ausführliche Logs nur für Ihre Entwicklungsumgebung gedacht sind und Sie sie vor der Veröffentlichung Ihrer App deaktivieren sollten.

Um Logs direkt in Ihrer App zu aktivieren, fügen Sie Folgendes zur onCreate()-Methode Ihrer Anwendung hinzu, bevor andere Methoden aufgerufen werden.

BrazeLogger.setLogLevel(Log.MIN_LOG_LEVEL);
BrazeLogger.logLevel = Log.MIN_LOG_LEVEL

Ersetzen Sie MIN_LOG_LEVEL durch die Konstante der Log-Stufe, die Sie als minimale Log-Stufe festlegen möchten. Alle Logs mit einer Stufe >= Ihrer festgelegten MIN_LOG_LEVEL werden an die Standard-Log-Methode von Android weitergeleitet. Alle Logs < Ihrer festgelegten MIN_LOG_LEVEL werden verworfen.

Konstante Wert Beschreibung
VERBOSE 2 Protokolliert die detailliertesten Nachrichten für Debugging und Entwicklung.
DEBUG 3 Protokolliert beschreibende Nachrichten für Debugging und Entwicklung.
INFO 4 Protokolliert informative Nachrichten für allgemeine Highlights.
WARN 5 Protokolliert Warnungen zur Identifizierung potenziell schädlicher Situationen.
ERROR 6 Protokolliert Fehlermeldungen, die auf Anwendungsfehler oder schwerwiegende Probleme hinweisen.
ASSERT 7 Protokolliert Assertion-Nachrichten, wenn Bedingungen während der Entwicklung falsch sind.

Der folgende Code leitet z. B. die Log-Stufen 2, 3, 4, 5, 6 und 7 an die Log-Methode weiter.

BrazeLogger.setLogLevel(Log.VERBOSE);
BrazeLogger.logLevel = Log.VERBOSE

Um Logs in der braze.xml zu aktivieren, fügen Sie Folgendes zu Ihrer Datei hinzu:

<integer name="com_braze_logger_initial_log_level">MIN_LOG_LEVEL</integer>

Ersetzen Sie MIN_LOG_LEVEL durch den Wert der Log-Stufe, die Sie als minimale Log-Stufe festlegen möchten. Alle Logs mit einer Stufe >= Ihrer festgelegten MIN_LOG_LEVEL werden an die Standard-Log-Methode von Android weitergeleitet. Alle Logs < Ihrer festgelegten MIN_LOG_LEVEL werden verworfen.

Konstante Wert Beschreibung
VERBOSE 2 Protokolliert die detailliertesten Nachrichten für Debugging und Entwicklung.
DEBUG 3 Protokolliert beschreibende Nachrichten für Debugging und Entwicklung.
INFO 4 Protokolliert informative Nachrichten für allgemeine Highlights.
WARN 5 Protokolliert Warnungen zur Identifizierung potenziell schädlicher Situationen.
ERROR 6 Protokolliert Fehlermeldungen, die auf Anwendungsfehler oder schwerwiegende Probleme hinweisen.
ASSERT 7 Protokolliert Assertion-Nachrichten, wenn Bedingungen während der Entwicklung falsch sind.

Der folgende Code leitet z. B. die Log-Stufen 2, 3, 4, 5, 6 und 7 an die Log-Methode weiter.

<integer name="com_braze_logger_initial_log_level">2</integer>

Ausführliche Logs überprüfen

Um zu überprüfen, ob Ihre Logs auf VERBOSE gesetzt sind, prüfen Sie, ob V/Braze irgendwo in Ihren Logs vorkommt. Wenn ja, wurden ausführliche Logs erfolgreich aktiviert. Zum Beispiel:

2077-11-19 16:22:49.591 ? V/Braze v9.0.01 .bo.app.d3: Request started

Logs unterdrücken

Um alle Logs für das Braze Android SDK zu unterdrücken, setzen Sie die Log-Stufe in der onCreate()-Methode Ihrer Anwendung auf BrazeLogger.SUPPRESS, bevor andere Methoden aufgerufen werden.

BrazeLogger.setLogLevel(BrazeLogger.SUPPRESS);
BrazeLogger.setLogLevel(BrazeLogger.SUPPRESS)

Mehrere API-Schlüssel

Der häufigste Anwendungsfall für mehrere API-Schlüssel ist die Trennung von API-Schlüsseln für Debug- und Release-Build-Varianten.

Um einfach zwischen mehreren API-Schlüsseln in Ihren Builds zu wechseln, empfehlen wir, eine separate braze.xml-Datei für jede relevante Build-Variante zu erstellen. Eine Build-Variante ist eine Kombination aus Build-Typ und Produktgeschmack. Standardmäßig werden neue Android-Projekte mit den Build-Typen debug und release und ohne Produktgeschmäcker konfiguriert.

Erstellen Sie für jede relevante Build-Variante eine neue braze.xml im Verzeichnis src/<build variant name>/res/values/. Wenn die Build-Variante kompiliert wird, wird der neue API-Schlüssel verwendet.

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="com_braze_api_key">REPLACE_WITH_YOUR_BUILD_VARIANT_API_KEY</string>
</resources>

Exklusiver In-App-Nachrichten-TalkBack

In Übereinstimmung mit den Android-Barrierefreiheitsrichtlinien bietet das Braze Android SDK standardmäßig Android TalkBack an. Um sicherzustellen, dass nur der Inhalt von In-App-Nachrichten vorgelesen wird – ohne andere Bildschirmelemente wie die Titelleiste der App oder die Navigation einzubeziehen – können Sie den exklusiven Modus für TalkBack aktivieren.

So aktivieren Sie den exklusiven Modus für In-App-Nachrichten:

<bool name="com_braze_device_in_app_message_accessibility_exclusive_mode_enabled">true</bool>
val brazeConfigBuilder = BrazeConfig.Builder()
brazeConfigBuilder.setIsInAppMessageAccessibilityExclusiveModeEnabled(true)
Braze.configure(this, brazeConfigBuilder.build())
BrazeConfig.Builder brazeConfigBuilder = new BrazeConfig.Builder()
brazeConfigBuilder.setIsInAppMessageAccessibilityExclusiveModeEnabled(true);
Braze.configure(this, brazeConfigBuilder.build());

R8 und ProGuard

Die Konfiguration für Code-Shrinking ist automatisch in Ihrer Braze-Integration enthalten.

Client-Apps, die Braze-Code verschleiern, müssen Release-Mapping-Dateien speichern, damit Braze Stack-Traces interpretieren kann. Wenn Sie den gesamten Braze-Code beibehalten möchten, fügen Sie Folgendes zu Ihrer ProGuard-Datei hinzu:

-keep class bo.app.** { *; }
-keep class com.braze.** { *; }

Das Swift SDK integrieren

Sie können das Braze Swift SDK mit dem Swift-Paketmanager (SPM), CocoaPods oder manuellen Integrationsmethoden integrieren und anpassen. Weitere Informationen zu den verschiedenen SDK-Symbolen finden Sie in der Braze Swift-Referenzdokumentation.

Voraussetzungen

Bevor Sie beginnen, überprüfen Sie, ob Ihre Umgebung von der neuesten Version des Braze Swift SDK unterstützt wird.

Schritt 1: Das Braze Swift SDK installieren

Wir empfehlen die Verwendung des Swift-Paketmanagers (SwiftPM) oder von CocoaPods, um das Braze Swift SDK zu installieren. Alternativ können Sie das SDK auch manuell installieren.

Schritt 1.1: SDK-Version importieren

Öffnen Sie Ihr Projekt und navigieren Sie zu den Projekteinstellungen. Wählen Sie den Tab Swift Packages und klicken Sie auf den -Button unter der Paketliste.

Xcode-Projekteinstellungen mit dem Tab „Swift Packages“ und dem Button zum Hinzufügen von Paketen.

Geben Sie die URL unseres iOS Swift SDK-Repositorys https://github.com/braze-inc/braze-swift-sdk in das Textfeld ein. Wählen Sie im Bereich Dependency Rule die SDK-Version aus. Klicken Sie abschließend auf Add Package.

Xcode-Dialog „Add Package“ mit der eingegebenen URL des Braze Swift SDK-Repositorys.

Schritt 1.2: Pakete auswählen

Das Braze Swift SDK unterteilt Features in eigenständige Bibliotheken, um Entwickler:innen mehr Kontrolle darüber zu geben, welche Features sie in ihre Projekte importieren.

Paket Details
BrazeKit Haupt-SDK-Bibliothek mit Unterstützung für Analytics und Push-Benachrichtigungen.
BrazeLocation Standort-Bibliothek mit Unterstützung für Standort-Analytics und Geofence-Überwachung.
BrazeUI Von Braze bereitgestellte Benutzeroberflächen-Bibliothek für In-App-Nachrichten, Content Cards und Banner. Importieren Sie diese Bibliothek, wenn Sie die Standard-UI-Komponenten verwenden möchten.
Über Erweiterungsbibliotheken
Paket Details
BrazeNotificationService Notification-Service-Erweiterungsbibliothek mit Unterstützung für Rich-Push-Benachrichtigungen.
BrazePushStory Notification-Content-Erweiterungsbibliothek mit Unterstützung für Push Stories.

Wählen Sie das Paket aus, das Ihren Anforderungen am besten entspricht, und klicken Sie auf Add Package. Stellen Sie sicher, dass Sie mindestens BrazeKit auswählen.

Xcode-Paketproduktliste mit ausgewähltem BrazeKit vor dem Hinzufügen des Pakets.

Schritt 1.1: CocoaPods installieren

Eine vollständige Anleitung finden Sie im CocoaPods Getting Started Guide. Alternativ können Sie den folgenden Befehl ausführen, um schnell loszulegen:

$ sudo gem install cocoapods

Falls Sie nicht weiterkommen, lesen Sie den CocoaPods Troubleshooting Guide.

Schritt 1.2: Das Podfile erstellen

Erstellen Sie als Nächstes eine Datei in Ihrem Xcode-Projektverzeichnis mit dem Namen Podfile.

Fügen Sie die folgende Zeile zu Ihrem Podfile hinzu:

target 'YourAppTarget' do
  pod 'BrazeKit'
end

BrazeKit enthält die Haupt-SDK-Bibliothek mit Unterstützung für Analytics und Push-Benachrichtigungen.

Wir empfehlen, Braze zu versionieren, damit Pod-Updates automatisch alles einbeziehen, was kleiner als ein Minor-Versionsupdate ist. Das sieht so aus: pod 'BrazeKit' ~> Major.Minor.Build. Wenn Sie automatisch die neueste Braze SDK-Version integrieren möchten, auch bei wesentlichen Änderungen, können Sie pod 'BrazeKit' in Ihrem Podfile verwenden.

Über zusätzliche Bibliotheken

Das Braze Swift SDK unterteilt Features in eigenständige Bibliotheken, um Entwickler:innen mehr Kontrolle darüber zu geben, welche Features sie in ihre Projekte importieren. Zusätzlich zu BrazeKit können Sie die folgenden Bibliotheken zu Ihrem Podfile hinzufügen:

Bibliothek Details
pod 'BrazeLocation' Standort-Bibliothek mit Unterstützung für Standort-Analytics und Geofence-Überwachung.
pod 'BrazeUI' Von Braze bereitgestellte Benutzeroberflächen-Bibliothek für In-App-Nachrichten, Content Cards und Banner. Importieren Sie diese Bibliothek, wenn Sie die Standard-UI-Komponenten verwenden möchten.
Erweiterungsbibliotheken

BrazeNotificationService und BrazePushStory sind Erweiterungsmodule, die zusätzliche Funktionalität bieten und nicht direkt zum Haupt-App-Target hinzugefügt werden sollten. Stattdessen müssen Sie für jedes dieser Module separate Erweiterungs-Targets erstellen und die Braze-Module in die entsprechenden Targets importieren.

Bibliothek Details
pod 'BrazeNotificationService' Notification-Service-Erweiterungsbibliothek mit Unterstützung für Rich-Push-Benachrichtigungen.
pod 'BrazePushStory' Notification-Content-Erweiterungsbibliothek mit Unterstützung für Push Stories.

Schritt 1.3: Das SDK installieren

Um das Braze SDK CocoaPod zu installieren, navigieren Sie im Terminal zum Verzeichnis Ihres Xcode-App-Projekts und führen Sie den folgenden Befehl aus:

pod install

An diesem Punkt sollten Sie den neuen Xcode-Projektarbeitsbereich öffnen können, der von CocoaPods erstellt wurde. Stellen Sie sicher, dass Sie diesen Xcode-Arbeitsbereich anstelle Ihres Xcode-Projekts verwenden.

Ein erweiterter Braze-Beispielordner, der den neuen `BrazeExample.workspace` zeigt.

Das SDK mit CocoaPods aktualisieren

Um ein CocoaPod zu aktualisieren, führen Sie einfach den folgenden Befehl in Ihrem Projektverzeichnis aus:

pod update

Schritt 1.1: Das Braze SDK herunterladen

Gehen Sie zur Braze SDK-Release-Seite auf GitHub und laden Sie braze-swift-sdk-prebuilt.zip herunter.

Die Braze SDK-Release-Seite auf GitHub.

Schritt 1.2: Frameworks auswählen

Das Braze Swift SDK enthält verschiedene eigenständige XCFrameworks, die Ihnen die Freiheit geben, die gewünschten Features zu integrieren—ohne alle integrieren zu müssen. Nutzen Sie die folgende Tabelle zur Auswahl Ihrer XCFrameworks:

Paket Erforderlich? Beschreibung
BrazeKit Ja Haupt-SDK-Bibliothek mit Unterstützung für Analytics und Push-Benachrichtigungen.
BrazeLocation Nein Standort-Bibliothek mit Unterstützung für Standort-Analytics und Geofence-Überwachung.
BrazeUI Nein Von Braze bereitgestellte Benutzeroberflächen-Bibliothek für In-App-Nachrichten, Content Cards und Banner. Importieren Sie diese Bibliothek, wenn Sie die Standard-UI-Komponenten verwenden möchten.
BrazeNotificationService Nein Notification-Service-Erweiterungsbibliothek mit Unterstützung für Rich-Push-Benachrichtigungen. Fügen Sie diese Bibliothek nicht direkt zum Haupt-App-Target hinzu, sondern fügen Sie die BrazeNotificationService-Bibliothek separat hinzu.
BrazePushStory Nein Notification-Content-Erweiterungsbibliothek mit Unterstützung für Push Stories. Fügen Sie diese Bibliothek nicht direkt zum Haupt-App-Target hinzu, sondern fügen Sie die BrazePushStory-Bibliothek separat hinzu.
BrazeKitCompat Nein Kompatibilitätsbibliothek mit allen Appboy- und ABK*-Klassen und -Methoden, die in der Appboy-iOS-SDK Version 4.X.X verfügbar waren. Weitere Details zur Verwendung finden Sie im Szenario für die minimale Migration im Migrationsleitfaden.
BrazeUICompat Nein Kompatibilitätsbibliothek mit allen ABK*-Klassen und -Methoden, die in der AppboyUI-Bibliothek der Appboy-iOS-SDK Version 4.X.X verfügbar waren. Weitere Details zur Verwendung finden Sie im Szenario für die minimale Migration im Migrationsleitfaden.
SDWebImage Nein Abhängigkeit, die nur von BrazeUICompat im Szenario für die minimale Migration verwendet wird.

Schritt 1.3: Dateien vorbereiten

Entscheiden Sie, ob Sie statische oder dynamische XCFrameworks verwenden möchten, und bereiten Sie dann Ihre Dateien vor:

  1. Erstellen Sie ein temporäres Verzeichnis für Ihre XCFrameworks.
  2. Öffnen Sie in braze-swift-sdk-prebuilt das Verzeichnis dynamic und verschieben Sie BrazeKit.xcframework in Ihr Verzeichnis. Ihr Verzeichnis sollte in etwa so aussehen:
     temp_dir
     └── BrazeKit.xcframework
    
  3. Verschieben Sie jedes Ihrer ausgewählten XCFrameworks in Ihr temporäres Verzeichnis. Ihr Verzeichnis sollte in etwa so aussehen:
     temp_dir
     ├── BrazeKit.xcframework
     ├── BrazeKitCompat.xcframework
     ├── BrazeLocation.xcframework
     └── SDWebImage.xcframework
    

Schritt 1.4: Frameworks integrieren

Integrieren Sie als Nächstes die dynamischen oder statischen XCFrameworks, die Sie zuvor vorbereitet haben:

Wählen Sie in Ihrem Xcode-Projekt Ihr Build-Target und dann General aus. Ziehen Sie unter Frameworks, Libraries, and Embedded Content die zuvor vorbereiteten Dateien per Drag-and-Drop hinein.

Ein Beispiel-Xcode-Projekt, in dem jede Braze-Bibliothek auf „Embed & Sign“ eingestellt ist.

Häufige Fehler bei Objective-C-Projekten

Wenn Ihr Xcode-Projekt nur Objective-C-Dateien enthält, erhalten Sie möglicherweise „missing symbol“-Fehler beim Versuch, Ihr Projekt zu erstellen. Um diese Fehler zu beheben, öffnen Sie Ihr Projekt und fügen Sie eine leere Swift-Datei zu Ihrem Dateibaum hinzu. Dadurch wird Ihre Build-Toolchain gezwungen, die Swift Runtime einzubetten und die entsprechenden Frameworks während der Build-Zeit zu verlinken.

FILE_NAME.swift

Ersetzen Sie FILE_NAME durch einen beliebigen String ohne Leerzeichen. Ihre Datei sollte in etwa so aussehen:

empty_swift_file.swift

Schritt 2: Verzögerte Initialisierung einrichten (optional)

Sie können festlegen, dass die Initialisierung des Braze Swift SDK verzögert wird, was nützlich ist, wenn Ihre App eine Konfiguration laden oder auf die Zustimmung der Nutzer:innen warten muss, bevor das SDK gestartet wird. Die verzögerte Initialisierung stellt sicher, dass Push-Benachrichtigungen und Push-Token, die vor der SDK-Initialisierung empfangen werden, in die Warteschlange eingereiht und nach der Initialisierung des SDK verarbeitet werden.

Für die verzögerte Initialisierung ist die folgende Mindestversion des Braze SDK erforderlich:

Schritt 2.1: Verzögerte Initialisierung vorbereiten

Rufen Sie Braze.prepareForDelayedInitialization() so früh wie möglich im Lebenszyklus Ihrer App auf, idealerweise in oder vor application(_:didFinishLaunchingWithOptions:). Dies stellt sicher, dass Push-Benachrichtigungen, die vor der Initialisierung des SDK empfangen werden, ordnungsgemäß erfasst und später verarbeitet werden.

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
  // Prepare the SDK for delayed initialization
  Braze.prepareForDelayedInitialization()

  // ... Additional non-Braze setup code

  return true
}
@main
struct MyApp: App {
  @UIApplicationDelegateAdaptor var appDelegate: AppDelegate

  var body: some Scene {
    WindowGroup {
      ContentView()
    }
  }
}

class AppDelegate: NSObject, UIApplicationDelegate {
  func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
    // Prepare the SDK for delayed initialization
    Braze.prepareForDelayedInitialization()

    // ... Additional non-Braze setup code

    return true
  }
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  // Prepare the SDK for delayed initialization
  [Braze prepareForDelayedInitialization];

  // ... Additional non-Braze setup code

  return YES;
}

Bei der Verwendung der verzögerten Initialisierung wird die Push-Automatisierung implizit aktiviert. Sie können die Push-Automatisierungskonfiguration anpassen, indem Sie einen pushAutomation-Parameter übergeben.

Schritt 2.2: Push-Analytics-Verhalten konfigurieren (optional)

Wenn die verzögerte Initialisierung aktiviert ist, werden Push-Analytics standardmäßig in die Warteschlange eingereiht. Sie können jedoch festlegen, dass Push-Analytics explizit in die Warteschlange eingereiht oder verworfen werden.

Explizit in die Warteschlange einreihen

Um Push-Analytics explizit in die Warteschlange einzureihen (Standardverhalten), übergeben Sie .queue an den Parameter analyticsBehavior. Push-Analytics-Ereignisse, die vor der Initialisierung in die Warteschlange eingereiht wurden, werden bei der Initialisierung verarbeitet und an den Server übermittelt.

Braze.prepareForDelayedInitialization(analyticsBehavior: .queue)
[Braze prepareForDelayedInitializationWithAnalyticsBehavior:BRZPushEnqueueBehaviorQueue];
Verwerfen

Um Push-Analytics, die vor der SDK-Initialisierung empfangen werden, zu verwerfen, übergeben Sie .drop an den Parameter analyticsBehavior. Mit dieser Option werden alle Push-Analytics-Ereignisse, die auftreten, während das SDK nicht initialisiert ist, ignoriert.

Braze.prepareForDelayedInitialization(analyticsBehavior: .drop)
[Braze prepareForDelayedInitializationWithAnalyticsBehavior:BRZPushEnqueueBehaviorDrop];

Schritt 2.3: Push-Automatisierung anpassen (optional)

Sie können die Push-Automatisierungskonfiguration anpassen, indem Sie einen pushAutomation-Parameter übergeben. Standardmäßig sind alle Automatisierungsfunktionen aktiviert, mit Ausnahme von requestAuthorizationAtLaunch.

// Enable all push automation
featuresBraze.prepareForDelayedInitialization(pushAutomation: true)

// Or customize specific automation options
let automation = Braze.Configuration.Push.Automation()
automation.automaticSetup = true
automation.requestAuthorizationAtLaunch = false
Braze.prepareForDelayedInitialization(pushAutomation: automation)
// Enable all push automation features
[Braze prepareForDelayedInitializationWithPushAutomation:[[BRZConfigurationPushAutomation alloc] initWithAutomationEnabled:YES]];

// Or customize specific automation options
BRZConfigurationPushAutomation *automation = [[BRZConfigurationPushAutomation alloc] init];
automation.automaticSetup = YES;
automation.requestAuthorizationAtLaunch = NO;
[Braze prepareForDelayedInitializationWithPushAutomation:automation analyticsBehavior:BRZPushEnqueueBehaviorQueue];

Schritt 2.4: Das SDK initialisieren

Initialisieren Sie das SDK nach Ihrer gewünschten Verzögerungszeit (z. B. nach dem Abrufen einer Konfiguration von einem Server oder nach der Zustimmung der Nutzer:innen) wie gewohnt:

func initializeBraze() {
  let configuration = Braze.Configuration(apiKey: "YOUR-API-KEY", endpoint: "YOUR-ENDPOINT")

  // Enable push automation to match the delayed initialization configuration
  configuration.push.automation = true
  let braze = Braze(configuration: configuration)

  // Store the Braze instance for later use
  AppDelegate.braze = braze
}
- (void)initializeBraze {
  BRZConfiguration *configuration = [[BRZConfiguration alloc] initWithApiKey:@"YOUR-API-KEY" endpoint:@"YOUR-ENDPOINT"];

  // Enable push automation to match the delayed initialization configuration
  configuration.push.automation = [[BRZConfigurationPushAutomation alloc] initWithAutomationEnabled:YES];
  Braze *braze = [[Braze alloc] initWithConfiguration:configuration];

  // Store the Braze instance for later use
  AppDelegate.braze = braze;
}

Schritt 3: Ihren App-Delegate aktualisieren

Fügen Sie die folgende Codezeile zu Ihrer AppDelegate.swift-Datei hinzu, um die im Braze Swift SDK enthaltenen Features zu importieren:

import BrazeKit

Fügen Sie als Nächstes eine statische Eigenschaft zu Ihrer AppDelegate-Klasse hinzu, um während der gesamten Lebensdauer Ihrer Anwendung eine starke Referenz auf die Braze-Instanz zu halten:

class AppDelegate: UIResponder, UIApplicationDelegate {
  static var braze: Braze? = nil
}

Das SDK erfordert, dass Ihre Anwendung während der gesamten Nutzung eine starke Referenz auf die Braze-Instanz hält. Um unerwartete Nebeneffekte zu vermeiden, stellen Sie sicher, dass Sie diese Referenz vollständig erfasst haben, bevor Sie auf Eigenschaften oder Methoden der Braze-Instanz zugreifen oder diese ändern.

Fügen Sie abschließend in AppDelegate.swift das folgende Snippet in Ihre application:didFinishLaunchingWithOptions:-Methode ein:

let configuration = Braze.Configuration(
    apiKey: "YOUR-APP-IDENTIFIER-API-KEY",
    endpoint: "YOUR-BRAZE-ENDPOINT"
)
let braze = Braze(configuration: configuration)
AppDelegate.braze = braze

Aktualisieren Sie YOUR-APP-IDENTIFIER-API-KEY und YOUR-BRAZE-ENDPOINT mit dem korrekten Wert von Ihrer Seite App Settings. Weitere Informationen darüber, wo Sie Ihren App-Identifier-API-Schlüssel finden, erhalten Sie in unserer Dokumentation zu API-Bezeichnertypen.

Fügen Sie die folgende Codezeile zu Ihrer AppDelegate.m-Datei hinzu:

@import BrazeKit;

Fügen Sie als Nächstes eine statische Variable zu Ihrer AppDelegate.m-Datei hinzu, um während der gesamten Lebensdauer Ihrer Anwendung eine Referenz auf die Braze-Instanz zu halten:

static Braze *_braze;

@implementation AppDelegate
+ (Braze *)braze {
  return _braze;
}

+ (void)setBraze:(Braze *)braze {
  _braze = braze;
}
@end

Das SDK erfordert, dass Ihre Anwendung während der gesamten Nutzung eine starke Referenz auf die Braze-Instanz hält. Um unerwartete Nebeneffekte zu vermeiden, stellen Sie sicher, dass Sie diese Referenz vollständig erfasst haben, bevor Sie auf Eigenschaften oder Methoden der Braze-Instanz zugreifen oder diese ändern.

Fügen Sie abschließend in Ihrer AppDelegate.m-Datei das folgende Snippet in Ihre application:didFinishLaunchingWithOptions:-Methode ein:

BRZConfiguration *configuration = [[BRZConfiguration alloc] initWithApiKey:"YOUR-APP-IDENTIFIER-API-KEY"
                                                                  endpoint:"YOUR-BRAZE-ENDPOINT"];
Braze *braze = [[Braze alloc] initWithConfiguration:configuration];
AppDelegate.braze = braze;

Aktualisieren Sie YOUR-APP-IDENTIFIER-API-KEY und YOUR-BRAZE-ENDPOINT mit dem korrekten Wert von Ihrer Seite Einstellungen verwalten. Weitere Informationen darüber, wo Sie Ihren App-Identifier-API-Schlüssel finden, erhalten Sie in unserer API-Dokumentation.

Optionale Konfigurationen

Protokollierung

Einen zentralen Überblick über alle Plattformen finden Sie unter Ausführliche Protokollierung. Wie Sie die Protokollausgabe interpretieren, erfahren Sie unter Ausführliche Protokolle lesen.

Protokollebenen

Die Standard-Protokollebene für das Braze Swift SDK ist .error – dies ist auch die minimal unterstützte Ebene, wenn Protokolle aktiviert sind. Hier finden Sie die vollständige Liste der Protokollebenen:

Swift Objective-C Beschreibung
.debug BRZLoggerLevelDebug Debugging-Informationen protokollieren + .info + .error.
.info BRZLoggerLevelInfo Allgemeine SDK-Informationen protokollieren (Nutzer:innen-Änderungen usw.) + .error.
.error BRZLoggerLevelError Fehler protokollieren.
.disabled BRZLoggerLevelDisabled Es erfolgt keine Protokollierung.

Protokollebene festlegen

Sie können die Protokollebene zur Laufzeit in Ihrem Braze.Configuration-Objekt zuweisen. Vollständige Nutzungsdetails finden Sie unter Braze.Configuration.Logger.

let configuration = Braze.Configuration(
  apiKey: "<BRAZE_API_KEY>",
  endpoint: "<BRAZE_ENDPOINT>"
)
// Enable logging of general SDK information (such as user changes, etc.)
configuration.logger.level = .info
let braze = Braze(configuration: configuration)
BRZConfiguration *configuration = [[BRZConfiguration alloc] initWithApiKey:self.APIKey
                                                                  endpoint:self.apiEndpoint];
// Enable logging of general SDK information (such as user changes, etc.)
[configuration.logger setLevel:BRZLoggerLevelInfo];
Braze *braze = [[Braze alloc] initWithConfiguration:configuration];

Das Cordova SDK integrieren

Voraussetzungen

Bevor Sie beginnen, überprüfen Sie, ob Ihre Umgebung von der neuesten Version des Braze Cordova SDK unterstützt wird.

Schritt 1: Das SDK zu Ihrem Projekt hinzufügen

Wenn Sie Cordova 6 oder höher verwenden, können Sie das SDK direkt von GitHub hinzufügen. Alternativ können Sie eine ZIP-Datei des GitHub-Repositorys herunterladen und das SDK manuell hinzufügen.

Wenn Sie keine Standorterfassung und Geofences verwenden möchten, nutzen Sie den master-Branch von GitHub.

cordova plugin add https://github.com/braze-inc/braze-cordova-sdk#master

Wenn Sie Standorterfassung und Geofences verwenden möchten, nutzen Sie den geofence-branch von GitHub.

cordova plugin add https://github.com/braze-inc/braze-cordova-sdk#geofence-branch

Schritt 2: Ihr Projekt konfigurieren

Fügen Sie als Nächstes die folgenden Einstellungen zum platform-Element in der Datei config.xml Ihres Projekts hinzu.

<preference name="com.braze.ios_api_key" value="BRAZE_API_KEY" />
<preference name="com.braze.ios_api_endpoint" value="CUSTOM_API_ENDPOINT" />
<preference name="com.braze.android_api_key" value="BRAZE_API_KEY" />
<preference name="com.braze.android_api_endpoint" value="CUSTOM_API_ENDPOINT" />

Ersetzen Sie die folgenden Werte:

Wert Beschreibung
BRAZE_API_KEY Ihr Braze-REST-API-Schlüssel.
CUSTOM_API_ENDPOINT Ein angepasster API-Endpunkt. Dieser Endpunkt wird verwendet, um Ihre Braze-Instanzdaten an die richtige App-Gruppe in Ihrem Braze-Dashboard weiterzuleiten.

Das platform-Element in Ihrer config.xml-Datei sollte in etwa so aussehen:

<platform name="ios">
    <preference name="com.braze.ios_api_key" value="BRAZE_API_KEY" />
    <preference name="com.braze.ios_api_endpoint" value="sdk.fra-01.braze.eu" />
</platform>
<platform name="android">
    <preference name="com.braze.android_api_key" value="BRAZE_API_KEY" />
    <preference name="com.braze.android_api_endpoint" value="sdk.fra-01.braze.eu" />
</platform>

Plattformspezifische Syntax

Der folgende Abschnitt behandelt die plattformspezifische Syntax bei der Verwendung von Cordova mit iOS oder Android.

Ganzzahlen

Ganzzahl-Einstellungen werden als String-Darstellungen gelesen, wie im folgenden Beispiel:

<platform name="ios">
    <preference name="com.braze.ios_flush_interval_seconds" value="10" />
    <preference name="com.braze.ios_session_timeout" value="5" />
</platform>

Aufgrund der Art und Weise, wie das Cordova 8.0.0+-Framework Einstellungen verarbeitet, müssen rein ganzzahlige Einstellungen (wie z. B. Sender-IDs) als Strings mit dem Präfix str_ festgelegt werden, wie im folgenden Beispiel:

<platform name="android">
    <preference name="com.braze.android_fcm_sender_id" value="str_64422926741" />
    <preference name="com.braze.android_default_session_timeout" value="str_10" />
</platform>

Boolesche Werte

Boolesche Einstellungen werden vom SDK mithilfe der Schlüsselwörter YES und NO als String-Darstellung gelesen, wie im folgenden Beispiel:

<platform name="ios">
    <preference name="com.braze.should_opt_in_when_push_authorized" value="YES" />
    <preference name="com.braze.ios_disable_automatic_push_handling" value="NO" />
</platform>

Boolesche Einstellungen werden vom SDK mithilfe der Schlüsselwörter true und false als String-Darstellung gelesen, wie im folgenden Beispiel:

<platform name="android">
    <preference name="com.braze.should_opt_in_when_push_authorized" value="true" />
    <preference name="com.braze.is_session_start_based_timeout_enabled" value="false" />
</platform>

Optionale Konfigurationen

Sie können jede der folgenden Einstellungen zum Element platform in der Datei config.xml Ihres Projekts hinzufügen:

Methode Beschreibung
ios_api_key Legt den API-Schlüssel für Ihre Anwendung fest.
ios_api_endpoint Legt den SDK-Endpunkt für Ihre Anwendung fest.
ios_disable_automatic_push_registration Legt fest, ob die automatische Push-Registrierung deaktiviert werden soll.
ios_disable_automatic_push_handling Legt fest, ob die automatische Push-Behandlung deaktiviert werden soll.
ios_enable_idfa_automatic_collection Legt fest, ob das Braze SDK automatisch die IDFA-Informationen sammeln soll. Weitere Informationen finden Sie in der Dokumentation zur IDFA-Methode von Braze.
enable_location_collection Legt fest, ob die automatische Standorterfassung aktiviert ist (sofern die Nutzer:innen dies zulassen). Der geofence-branch
geofences_enabled Legt fest, ob Geofences aktiviert sind.
ios_session_timeout Legt das Braze-Session-Timeout für Ihre Anwendung in Sekunden fest. Der Standardwert ist 10 Sekunden.
sdk_authentication_enabled Legt fest, ob das Feature SDK-Authentifizierung aktiviert werden soll.
display_foreground_push_notifications Legt fest, ob Push-Benachrichtigungen angezeigt werden sollen, während sich die Anwendung im Vordergrund befindet.
ios_disable_un_authorization_option_provisional Legt fest, ob UNAuthorizationOptionProvisional deaktiviert werden soll.
trigger_action_minimum_time_interval_seconds Legt das minimale Zeitintervall in Sekunden zwischen Triggern fest. Der Standardwert ist 30 Sekunden.
ios_push_app_group Legt die ID der App-Gruppe für iOS-Push-Erweiterungen fest.
ios_forward_universal_links Legt fest, ob das SDK Universal Links automatisch erkennt und an die Systemmethoden weiterleitet. Erforderlich, damit Deeplinks aus Push-Benachrichtigungen unter iOS funktionieren. Standardmäßig deaktiviert.
ios_log_level Legt die minimale Protokollierungsstufe für Braze.Configuration.Logger fest.
ios_use_uuid_as_device_id Legt fest, ob eine zufällig generierte UUID als Geräte-ID verwendet werden soll.
ios_flush_interval_seconds Legt das Intervall in Sekunden zwischen automatischen Datenflushes fest. Der Standardwert ist 10 Sekunden.
ios_use_automatic_request_policy Legt fest, ob die Anfrage-Richtlinie für Braze.Configuration.Api automatisch oder manuell sein soll.
should_opt_in_when_push_authorized Legt fest, ob der Abo-Status für Benachrichtigungen eines Nutzers bzw. einer Nutzerin automatisch auf optedIn gesetzt werden soll, wenn die Push-Berechtigungen autorisiert werden.
Methode Beschreibung
android_api_key Legt den API-Schlüssel für Ihre Anwendung fest.
android_api_endpoint Legt den SDK-Endpunkt für Ihre Anwendung fest.
android_small_notification_icon Legt das kleine Benachrichtigungssymbol fest.
android_large_notification_icon Legt das große Benachrichtigungssymbol fest.
android_notification_accent_color Legt die Akzentfarbe der Benachrichtigung in hexadezimaler Darstellung fest.
android_default_session_timeout Legt das Braze-Session-Timeout für Ihre Anwendung in Sekunden fest. Der Standardwert ist 10 Sekunden.
android_handle_push_deep_links_automatically Legt fest, ob das Braze SDK Push-Deeplinks automatisch verarbeitet. Erforderlich, damit Deeplinks aus Push-Benachrichtigungen auf Android funktionieren. Standardmäßig deaktiviert.
android_log_level Legt die Protokollstufe für Ihre Anwendung fest. Die Standard-Protokollstufe ist 4 und protokolliert nur minimale Informationen. Um die ausführliche Protokollierung für die Fehlersuche zu aktivieren, verwenden Sie die Protokollstufe 2.
firebase_cloud_messaging_registration_enabled Legt fest, ob Firebase Cloud Messaging für Push-Benachrichtigungen verwendet werden soll.
android_fcm_sender_id Legt die Firebase Cloud Messaging Sender-ID fest.
enable_location_collection Legt fest, ob die automatische Standorterfassung aktiviert ist (sofern die Nutzer:innen dies zulassen).
geofences_enabled Legt fest, ob Geofences aktiviert sind.
android_disable_auto_session_tracking Deaktiviert das automatische Session-Tracking im Android Cordova Plugin. Weitere Informationen finden Sie unter Deaktivieren des automatischen Session-Trackings.
sdk_authentication_enabled Legt fest, ob das Feature SDK-Authentifizierung aktiviert werden soll.
trigger_action_minimum_time_interval_seconds Legt das minimale Zeitintervall in Sekunden zwischen Triggern fest. Der Standardwert ist 30 Sekunden.
is_session_start_based_timeout_enabled Legt fest, ob das Session-Timeout-Verhalten auf Sitzungsstart- oder Sitzungsend-Ereignissen basieren soll.
default_notification_channel_name Legt den für Nutzer:innen sichtbaren Namen fest, wie er über NotificationChannel.getName für den Braze-Standard-NotificationChannel angezeigt wird.
default_notification_channel_description Legt die für Nutzer:innen sichtbare Beschreibung fest, wie sie über NotificationChannel.getDescription für den Braze-Standard-NotificationChannel angezeigt wird.
does_push_story_dismiss_on_click Legt fest, ob eine Push Story beim Klicken automatisch geschlossen wird.
is_fallback_firebase_messaging_service_enabled Legt fest, ob die Verwendung eines Fallback-Firebase-Cloud-Messaging-Dienstes aktiviert ist.
fallback_firebase_messaging_service_classpath Legt den Klassenpfad für den Fallback-Firebase-Cloud-Messaging-Dienst fest.
is_content_cards_unread_visual_indicator_enabled Legt fest, ob die visuelle Anzeigeleiste für ungelesene Content Cards aktiviert ist.
is_firebase_messaging_service_on_new_token_registration_enabled Legt fest, ob das Braze SDK Token automatisch in com.google.firebase.messaging.FirebaseMessagingService.onNewToken registrieren soll.
is_push_deep_link_back_stack_activity_enabled Legt fest, ob Braze eine Aktivität zum Back Stack hinzufügt, wenn es automatisch Deeplinks für Push folgt.
push_deep_link_back_stack_activity_class_name Legt die Aktivität fest, die Braze zum Back Stack hinzufügt, wenn es automatisch Deeplinks für Push folgt.
should_opt_in_when_push_authorized Legt fest, ob Braze bei der Autorisierung von Push automatisch ein Opt-in für die Nutzer:innen durchführen soll.

Im Folgenden finden Sie ein Beispiel für eine config.xml-Datei mit zusätzlichen Konfigurationen:

<platform name="ios">
    <preference name="com.braze.ios_disable_automatic_push_registration" value="NO"/"YES" />
    <preference name="com.braze.ios_disable_automatic_push_handling" value="NO"/"YES" />
    <preference name="com.braze.ios_enable_idfa_automatic_collection" value="YES"/"NO" />
    <preference name="com.braze.enable_location_collection" value="NO"/"YES" />
    <preference name="com.braze.geofences_enabled" value="NO"/"YES" />
    <preference name="com.braze.ios_session_timeout" value="5" />
    <preference name="com.braze.sdk_authentication_enabled" value="YES"/"NO" />
    <preference name="com.braze.display_foreground_push_notifications" value="YES"/"NO" />
    <preference name="com.braze.ios_disable_un_authorization_option_provisional" value="NO"/"YES" />
    <preference name="com.braze.trigger_action_minimum_time_interval_seconds" value="30" />
    <preference name="com.braze.ios_push_app_group" value="PUSH_APP_GROUP_ID" />
    <preference name="com.braze.ios_forward_universal_links" value="YES"/"NO" />
    <preference name="com.braze.ios_log_level" value="2" />
    <preference name="com.braze.ios_use_uuid_as_device_id" value="YES"/"NO" />
    <preference name="com.braze.ios_flush_interval_seconds" value="10" />
    <preference name="com.braze.ios_use_automatic_request_policy" value="YES"/"NO" />
    <preference name="com.braze.should_opt_in_when_push_authorized" value="YES"/"NO" />
</platform>
<platform name="android">
    <preference name="com.braze.android_small_notification_icon" value="RESOURCE_ENTRY_NAME_FOR_ICON_DRAWABLE" />
    <preference name="com.braze.android_large_notification_icon" value="RESOURCE_ENTRY_NAME_FOR_ICON_DRAWABLE" />
    <preference name="com.braze.android_notification_accent_color" value="str_ACCENT_COLOR_INTEGER" />
    <preference name="com.braze.android_default_session_timeout" value="str_SESSION_TIMEOUT_INTEGER" />
    <preference name="com.braze.android_handle_push_deep_links_automatically" value="true"/"false" />
    <preference name="com.braze.android_log_level" value="str_LOG_LEVEL_INTEGER" />
    <preference name="com.braze.firebase_cloud_messaging_registration_enabled" value="true"/"false" />
    <preference name="com.braze.android_fcm_sender_id" value="str_YOUR_FCM_SENDER_ID" />
    <preference name="com.braze.enable_location_collection" value="true"/"false" />
    <preference name="com.braze.geofences_enabled" value="true"/"false" />
    <preference name="com.braze.android_disable_auto_session_tracking" value="true"/"false" />
    <preference name="com.braze.sdk_authentication_enabled" value="true"/"false" />
    <preference name="com.braze.trigger_action_minimum_time_interval_seconds" value="str_MINIMUM_INTERVAL_INTEGER" />
    <preference name="com.braze.is_session_start_based_timeout_enabled" value="false"/"true" />
    <preference name="com.braze.default_notification_channel_name" value="DEFAULT_NAME" />
    <preference name="com.braze.default_notification_channel_description" value="DEFAULT_DESCRIPTION" />
    <preference name="com.braze.does_push_story_dismiss_on_click" value="true"/"false" />
    <preference name="com.braze.is_fallback_firebase_messaging_service_enabled" value="true"/"false" />
    <preference name="com.braze.fallback_firebase_messaging_service_classpath" value="FALLBACK_FIREBASE_MESSAGING_CLASSPATH" />
    <preference name="com.braze.is_content_cards_unread_visual_indicator_enabled" value="true"/"false" />
    <preference name="com.braze.is_firebase_messaging_service_on_new_token_registration_enabled" value="true"/"false" />
    <preference name="com.braze.is_push_deep_link_back_stack_activity_enabled" value="true"/"false" />
    <preference name="com.braze.push_deep_link_back_stack_activity_class_name" value="DEEPLINK_BACKSTACK_ACTIVITY_CLASS_NAME" />
    <preference name="com.braze.should_opt_in_when_push_authorized" value="true"/"false" />
</platform>

Deaktivieren des automatischen Session-Trackings (nur Android)

Standardmäßig verfolgt das Android Cordova Plugin Sitzungen automatisch. Um das automatische Session-Tracking zu deaktivieren, fügen Sie die folgende Einstellung zum Element platform in der Datei config.xml Ihres Projekts hinzu:

<platform name="android">
    <preference name="com.braze.android_disable_auto_session_tracking" value="true" />
</platform>

Um das Session-Tracking erneut zu starten, rufen Sie BrazePlugin.startSessionTracking() auf. Beachten Sie, dass nur Sitzungen verfolgt werden, die nach dem nächsten Activity.onStart() gestartet werden.

Konfiguration von Benachrichtigungskanälen für Heads-up-Benachrichtigungen (nur Android)

Ab Android 8.0 (API-Level 26) wird das Benachrichtigungsverhalten über Benachrichtigungskanäle gesteuert. Um Heads-up-Benachrichtigungen anzuzeigen – Hinweise, die kurz am oberen Bildschirmrand erscheinen, während Nutzer:innen ihr Gerät verwenden – müssen Sie in Ihrem Android-Anwendungscode einen Benachrichtigungskanal mit NotificationManager.IMPORTANCE_HIGH erstellen.

Das Cordova SDK ermöglicht es Ihnen zwar, den standardmäßigen Benachrichtigungskanalnamen und die Beschreibung über config.xml-Einstellungen (default_notification_channel_name und default_notification_channel_description) festzulegen, aber die Wichtigkeitsstufe muss programmatisch in Ihrem nativen Android-Code konfiguriert werden.

Beispiel: Erstellen eines Benachrichtigungskanals mit hoher Wichtigkeit

Fügen Sie den folgenden Code zur onCreate()-Methode der Application-Klasse Ihrer Android-Anwendung hinzu:

import android.app.NotificationChannel
import android.app.NotificationManager
import android.content.Context
import android.os.Build

override fun onCreate() {
    super.onCreate()

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        val channelId = "high_priority_channel"
        val channelName = "High Priority Notifications"
        val importance = NotificationManager.IMPORTANCE_HIGH

        val channel = NotificationChannel(channelId, channelName, importance).apply {
            description = "Notifications that require immediate attention"
        }

        val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
        notificationManager.createNotificationChannel(channel)
    }
}
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.content.Context;
import android.os.Build;

@Override
public void onCreate() {
    super.onCreate();

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        String channelId = "high_priority_channel";
        String channelName = "High Priority Notifications";
        int importance = NotificationManager.IMPORTANCE_HIGH;

        NotificationChannel channel = new NotificationChannel(channelId, channelName, importance);
        channel.setDescription("Notifications that require immediate attention");

        NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        notificationManager.createNotificationChannel(channel);
    }
}

Nachdem Sie den Kanal in Ihrem Android-Code erstellt haben, verwenden Sie die Kanal-ID beim Senden von Push-Benachrichtigungen über das Braze-Dashboard. Weitere Informationen zu Benachrichtigungskanälen finden Sie unter Android-Benachrichtigungskanäle.

Fehlerbehebung bei iOS-Builds nach dem Upgrade des Plugins

Cordova Braze SDK 9.0.0 und höher verwenden Swift SDK 9.0.0 oder höher. Ab Swift SDK 8.0.0 wird das native SDK mit Xcode 15.2 kompiliert. Wenn Ihr iOS-Build nach dem Upgrade des Cordova-Plugins auf 9.0.0 oder höher fehlschlägt, aktualisieren Sie Xcode auf 15.2 oder neuer und stellen Sie sicher, dass es mit dem Swift-SDK-Changelog für die native iOS-Version übereinstimmt, die Ihr Plugin verwendet.

Über das Flutter Braze SDK

Nach der Integration des Flutter Braze SDK auf Android und iOS können Sie die Braze-API in Ihren Flutter-Apps verwenden, die in Dart geschrieben sind. Dieses Plugin bietet grundlegende Analytics-Funktionen und ermöglicht die Integration von In-App Messages und Content Cards für iOS und Android mit einer einzigen Codebasis.

Das Flutter SDK integrieren

Voraussetzungen

Bevor Sie das Braze Flutter SDK integrieren, müssen Sie Folgendes abschließen:

Voraussetzung Beschreibung
Braze-API-App-Bezeichner Um den Bezeichner Ihrer App zu finden, gehen Sie zu Einstellungen > APIs und Bezeichner > App-Bezeichner. Weitere Informationen finden Sie unter API-Bezeichnertypen.
Braze-SDK-Endpunkt Die URL Ihres SDK-Endpunkts (z. B. sdk.<cluster>.braze.com). Ihr Endpunkt hängt von der Braze-URL Ihrer Instanz ab.
Flutter SDK Installieren Sie das offizielle Flutter SDK und stellen Sie sicher, dass es die unterstützte Mindestversion des Braze Flutter SDK erfüllt.

Schritt 1: Die Braze-Bibliothek integrieren

Fügen Sie das Braze Flutter SDK-Paket über die Befehlszeile hinzu. Dadurch wird die entsprechende Zeile zu Ihrer pubspec.yaml hinzugefügt.

flutter pub add braze_plugin

Schritt 2: Natives SDK-Setup abschließen

2.1 Android einrichten {#21-set-up-android}

Zugangsdaten zur Kompilierzeit bereitstellen

Erstellen Sie eine braze.xml-Datei im Ordner android/res/values Ihres Projekts. Der API-Schlüssel und der Endpunkt werden zur Laufzeit von Dart bereitgestellt und sind daher in dieser Datei nicht erforderlich. Um die verzögerte Initialisierung zu aktivieren, fügen Sie com_braze_enable_delayed_initialization zur Datei hinzu:

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <bool name="com_braze_enable_delayed_initialization">true</bool>
  <!-- API key and endpoint are not required here. They are set at runtime via Dart. -->
</resources>
Zugangsdaten zur Laufzeit bereitstellen

Alternativ können Sie die verzögerte Initialisierung programmgesteuert in Ihrer MainActivity.kt aktivieren:

import com.braze.Braze

class MainActivity : FlutterActivity() {
  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    Braze.enableDelayedInitialization(context = this)
  }
}

Fügen Sie die erforderlichen Berechtigungen zu Ihrer AndroidManifest.xml-Datei hinzu:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

2.2 iOS einrichten {#22-set-up-ios}

Fügen Sie innerhalb Ihrer bestehenden application(_:didFinishLaunchingWithOptions:)-Methode einen Aufruf von BrazePlugin.configure(_:postInitialization:) hinzu, um Ihre Konfiguration zu speichern. Die Braze-Instanz wird erst erstellt, wenn initialize() von Dart aufgerufen wird. Der API-Schlüssel und der Endpunkt werden hier nicht festgelegt.

Fügen Sie den folgenden Code zu Ihrer AppDelegate.swift hinzu:

import BrazeKit
import braze_plugin

// ...

override func application(
  _ application: UIApplication,
  didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil
) -> Bool {
  // ... your existing didFinishLaunchingWithOptions setup ...

  BrazePlugin.configure(
    { configuration in
      configuration.logger.level = .info
      // Set other non-API-key configurations here, such as:
      // configuration.push.automation = true
      // configuration.sessionTimeout = 60
    },
    postInitialization: { braze in
      // Optional: Customize the Braze instance after creation.
      // For example, set a custom in-app message presenter:
      // let customPresenter = CustomInAppMessagePresenter()
      // braze.inAppMessagePresenter = customPresenter
    }
  )

  return true
}

Fügen Sie den folgenden Code zu Ihrer AppDelegate.m hinzu:

@import BrazeKit;
@import braze_plugin;

// ...

- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  [BrazePlugin configure:^(BRZConfiguration *configuration) {
    configuration.logger.level = BRZLoggerLevelInfo;
    // Set other non-API-key configurations here, such as:
    // configuration.push.automation = ...
    // configuration.sessionTimeout = 60;
  } postInitialization:^(Braze *braze) {
    // Optional: customize the Braze instance after creation.
  }];

  return YES;
}

2.1 Android einrichten

Um sich mit Braze-Servern zu verbinden, erstellen Sie eine braze.xml-Datei im Ordner android/res/values Ihres Projekts. Fügen Sie den folgenden Code ein und ersetzen Sie den API-Bezeichnerschlüssel und den Endpunkt durch Ihre Werte:

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <string translatable="false" name="com_braze_api_key">YOUR_APP_IDENTIFIER_API_KEY</string>
  <string translatable="false" name="com_braze_custom_endpoint">YOUR_CUSTOM_ENDPOINT_OR_CLUSTER</string>
</resources>

Fügen Sie die erforderlichen Berechtigungen zu Ihrer AndroidManifest.xml-Datei hinzu:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

2.2 iOS einrichten

Fügen Sie die Braze-SDK-Imports am Anfang der Datei AppDelegate.swift hinzu:

import BrazeKit
import braze_plugin

Erstellen Sie in derselben Datei das Braze-Konfigurationsobjekt in der Methode application(_:didFinishLaunchingWithOptions:) und ersetzen Sie den API-Schlüssel und den Endpunkt durch die Werte Ihrer App. Erstellen Sie dann die Braze-Instanz mithilfe der Konfiguration und erstellen Sie eine statische Eigenschaft auf dem AppDelegate für einfachen Zugriff:

static var braze: Braze? = nil

override func application(
  _ application: UIApplication,
  didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil
) -> Bool {
  // Setup Braze
  let configuration = Braze.Configuration(
    apiKey: "<BRAZE_API_KEY>",
    endpoint: "<BRAZE_ENDPOINT>"
  )
  // - Enable logging or customize configuration here
  configuration.logger.level = .info
  let braze = BrazePlugin.initBraze(configuration)
  AppDelegate.braze = braze

  return true
}

Importieren Sie das Braze SDK am Anfang der Datei AppDelegate.m:

@import BrazeKit;
@import braze_plugin;

Erstellen Sie in derselben Datei das Braze-Konfigurationsobjekt in der Methode application:didFinishLaunchingWithOptions: und ersetzen Sie den API-Schlüssel und den Endpunkt durch die Werte Ihrer App. Erstellen Sie dann die Braze-Instanz mithilfe der Konfiguration und erstellen Sie eine statische Eigenschaft auf dem AppDelegate für einfachen Zugriff:

- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  // Setup Braze
  BRZConfiguration *configuration =
      [[BRZConfiguration alloc] initWithApiKey:@"<BRAZE_API_KEY>"
                                      endpoint:@"<BRAZE_ENDPOINT>"];
  // - Enable logging or customize configuration here
  configuration.logger.level = BRZLoggerLevelInfo;
  Braze *braze = [BrazePlugin initBraze:configuration];
  AppDelegate.braze = braze;

  [self.window makeKeyAndVisible];
  return YES;
}

#pragma mark - AppDelegate.braze

static Braze *_braze = nil;

+ (Braze *)braze {
  return _braze;
}

+ (void)setBraze:(Braze *)braze {
  _braze = braze;
}

Schritt 3: Das Plugin einrichten

Importieren Sie das Plugin und erstellen Sie eine einzelne Instanz von BrazePlugin:

import 'package:braze_plugin/braze_plugin.dart';

final BrazePlugin braze = BrazePlugin();

Rufen Sie dann initialize() mit Ihrem App-Bezeichner-API-Schlüssel und SDK-Endpunkt auf, um die Braze-Instanz zu erstellen. Im Folgenden finden Sie Optionen, wo Sie diese Methode in Ihrem App-Ablauf aufrufen können.

Standard-Initialisierung

Um das SDK beim Start Ihrer App zu initialisieren, rufen Sie initialize() in initState() auf:

@override
void initState() {
  super.initState();
  braze.initialize("<BRAZE_API_KEY>", "<BRAZE_ENDPOINT>");
}

Verzögerte Initialisierung

Um die SDK-Initialisierung auf einen späteren Zeitpunkt in der Sitzung zu verschieben – z. B. nachdem die Nutzer:innen ihre Einwilligung erteilt oder die Anmeldung abgeschlossen haben – rufen Sie initialize() auf, wenn Sie bereit sind:

// ...
void onUserConsent() {
  braze.initialize("<BRAZE_API_KEY>", "<BRAZE_ENDPOINT>");
}

Plattformspezifische API-Schlüssel

Da Ihre Android- und iOS-Apps unterschiedliche API-Schlüssel verwenden, nutzen Sie die Plattformerkennung:

import 'dart:io' show Platform;

if (Platform.isAndroid) {
  braze.initialize("<ANDROID_API_KEY>", "<BRAZE_ENDPOINT>");
} else if (Platform.isIOS) {
  braze.initialize("<IOS_API_KEY>", "<BRAZE_ENDPOINT>");
}

Neuinitialisierung

Sie können initialize() mehrmals aufrufen, um das SDK während einer Sitzung mit einem anderen API-Schlüssel und Endpunkt neu zu initialisieren. Jeder Aufruf beendet die vorherige Braze-Instanz und erstellt eine neue.

Um das Plugin in Ihren Dart-Code zu importieren, verwenden Sie Folgendes:

import 'package:braze_plugin/braze_plugin.dart';

Initialisieren Sie dann eine Instanz des Braze-Plugins, indem Sie new BrazePlugin() aufrufen, wie in unserer Beispiel-App.

Testen der Integration

Sie können überprüfen, ob das SDK integriert ist, indem Sie die Sitzungsstatistiken im Dashboard prüfen. Wenn Sie Ihre Anwendung auf einer der beiden Plattformen ausführen, sollten Sie eine neue Sitzung im Dashboard sehen (im Abschnitt Übersicht).

Öffnen Sie eine Sitzung für eine:n bestimmte:n Nutzer:in, indem Sie den folgenden Code in Ihrer App aufrufen.

BrazePlugin braze = BrazePlugin();
braze.initialize("<BRAZE_API_KEY>", "<BRAZE_ENDPOINT>");
braze.changeUser("{some-user-id}");
BrazePlugin braze = BrazePlugin();
braze.changeUser("{some-user-id}");

Suchen Sie nach der/dem Nutzer:in mit {some-user-id} im Dashboard unter Zielgruppe > Nutzer:innen suchen. Dort können Sie überprüfen, ob Sitzungs- und Gerätedaten protokolliert wurden.

Über das React Native Braze SDK

Die Integration des React Native Braze SDK bietet grundlegende Analytics-Funktionalität und ermöglicht es Ihnen, In-App Messages und Content Cards für iOS und Android mit einer einzigen Codebasis zu integrieren.

Kompatibilität mit der neuen Architektur

Die folgende SDK-Mindestversion ist mit allen Apps kompatibel, die die neue Architektur von React Native verwenden:

Ab SDK-Version 6.0.0 verwendet Braze ein React Native Turbo Module, das sowohl mit der neuen Architektur als auch mit der Legacy-Bridge-Architektur kompatibel ist. Das bedeutet, dass keine zusätzliche Einrichtung erforderlich ist.

Anforderungen an React- und React Native-Versionen

Braze veröffentlicht keine separaten Mindestversionen für React über das hinaus, was das React Native SDK unterstützt. Um das SDK zu integrieren, verwenden Sie React Native Version 0.71 oder höher. Die vollständige Liste der unterstützten React Native-Versionen finden Sie im React Native SDK GitHub-Repository.

Wenn Sie React, React Native oder das Braze SDK aktualisieren, überprüfen Sie vor dem Deployment das SDK-CHANGELOG auf Breaking Changes.

Das React Native SDK integrieren

Voraussetzungen

Informationen zu unterstützten React Native-Versionen und Upgrade-Hinweise finden Sie unter Anforderungen an React- und React-Native-Versionen.

Schritt 1: Die Braze-Bibliothek integrieren

npm install @braze/react-native-sdk
yarn add @braze/react-native-sdk

Schritt 2: Native Einrichtung abschließen

Wenn Ihre App Expo verwendet, lesen Sie Das Expo-Plugin verwenden. Wenn Ihre App reines React Native verwendet, lesen Sie Die React Native CLI verwenden. Wählen Sie in jedem Versions-Tab eine Einrichtungsmethode: Expo-Plugin oder React Native CLI.

Methode 1: Das Expo-Plugin verwenden

2.1 Das Braze Expo-Plugin installieren {#21-install-the-braze-expo-plugin}

Stellen Sie sicher, dass Ihre Version des Braze Expo-Plugins mindestens 4.1.0 ist. Die vollständige Liste der unterstützten Versionen finden Sie im Braze Expo-Plugin-Repository.

Das folgende Code-Snippet zeigt den Befehl zur Installation des Braze Expo-Plugins:

npx expo install @braze/expo-plugin
2.2 Das Plugin zu Ihrer app.json hinzufügen {#22-add-the-plugin-to-your-appjson}

Fügen Sie in Ihrer app.json das Braze Expo-Plugin hinzu. Der API-Schlüssel und der Endpunkt werden hier nicht mehr festgelegt. Stellen Sie sie zur Laufzeit über Braze.initialize() aus JavaScript bereit. Fügen Sie die folgenden optionalen Konfigurationsparameter basierend auf Ihren Implementierungsanforderungen hinzu:

Methode Typ Beschreibung
enableBrazeIosPush boolean Nur iOS. Ob Braze für die Verarbeitung von Push-Benachrichtigungen unter iOS verwendet werden soll.
enableFirebaseCloudMessaging boolean Nur Android. Ob Firebase Cloud Messaging für Push-Benachrichtigungen verwendet werden soll.
firebaseCloudMessagingSenderId string Nur Android. Ihre Firebase Cloud Messaging Sender-ID.
sessionTimeout integer Das Braze-Sitzungs-Timeout für Ihre Anwendung in Sekunden.
enableSdkAuthentication boolean Ob das Feature SDK-Authentifizierung aktiviert werden soll.
logLevel integer Die Protokollierungsstufe für Ihre Anwendung. Die Standard-Protokollierungsstufe ist 8 und protokolliert minimal Info. Um ausführliche Protokollierung für die Fehlersuche zu aktivieren, verwenden Sie Protokollierungsstufe 0.
minimumTriggerIntervalInSeconds integer Das minimale Zeitintervall in Sekunden zwischen Triggern. Standardmäßig 30 Sekunden.
enableAutomaticLocationCollection boolean Ob die automatische Standorterfassung aktiviert ist (sofern der/die Nutzer:in dies zulässt).
enableGeofence boolean Ob Geofences aktiviert sind.
enableAutomaticGeofenceRequests boolean Ob Geofence-Anfragen automatisch gestellt werden sollen.
dismissModalOnOutsideTap boolean Nur iOS. Ob eine modale In-App-Nachricht geschlossen wird, wenn Nutzer:innen außerhalb der In-App-Nachricht klicken.
androidHandlePushDeepLinksAutomatically boolean Nur Android. Ob das Braze SDK Push-Deeplinks automatisch verarbeiten soll.
androidPushNotificationHtmlRenderingEnabled boolean Nur Android. Legt fest, ob der Textinhalt einer Push-Benachrichtigung als HTML mittels android.text.Html.fromHtml interpretiert und gerendert werden soll.
androidNotificationAccentColor string Nur Android. Legt die Akzentfarbe der Android-Benachrichtigung fest.
androidNotificationLargeIcon string Nur Android. Legt das große Symbol der Android-Benachrichtigung fest.
androidNotificationSmallIcon string Nur Android. Legt das kleine Symbol der Android-Benachrichtigung fest.
iosRequestPushPermissionsAutomatically boolean Nur iOS. Ob Nutzer:innen beim Start der App automatisch nach Push-Berechtigungen gefragt werden sollen.
enableBrazeIosRichPush boolean Nur iOS. Ob Rich-Push-Features für iOS aktiviert werden sollen.
enableBrazeIosPushStories boolean Nur iOS. Ob Braze Push Stories für iOS aktiviert werden sollen.
iosPushStoryAppGroup string Nur iOS. Die App-Gruppe, die für iOS Push Stories verwendet wird.
iosUseUUIDAsDeviceId boolean Nur iOS. Ob die Geräte-ID eine zufällig generierte UUID verwendet.
iosForwardUniversalLinks boolean Nur iOS. Gibt an, ob das SDK Universal Links automatisch erkennen und an die Systemmethoden weiterleiten soll (Standard: false).

Das folgende Code-Snippet zeigt eine beispielhafte app.json-Konfiguration:

{
  "expo": {
    "plugins": [
      [
        "@braze/expo-plugin",
        {
          "sessionTimeout": 60,
          "enableGeofence": false,
          "enableBrazeIosPush": false,
          "enableFirebaseCloudMessaging": false,
          "firebaseCloudMessagingSenderId": "YOUR-FCM-SENDER-ID",
          "androidHandlePushDeepLinksAutomatically": true,
          "enableSdkAuthentication": false,
          "logLevel": 0,
          "minimumTriggerIntervalInSeconds": 0,
          "enableAutomaticLocationCollection": false,
          "enableAutomaticGeofenceRequests": false,
          "dismissModalOnOutsideTap": true,
          "androidPushNotificationHtmlRenderingEnabled": true,
          "androidNotificationAccentColor": "#ff3344",
          "androidNotificationLargeIcon": "@drawable/custom_app_large_icon",
          "androidNotificationSmallIcon": "@drawable/custom_app_small_icon",
          "iosRequestPushPermissionsAutomatically": false,
          "enableBrazeIosPushStories": true,
          "iosPushStoryAppGroup": "group.com.example.myapp.PushStories",
          "iosForwardUniversalLinks": false
        }
      ]
    ]
  }
}
Android-Push-Benachrichtigungssymbole konfigurieren

Befolgen Sie bei Verwendung von androidNotificationLargeIcon und androidNotificationSmallIcon die folgenden Best Practices für die korrekte Symbolanzeige:

Platzierung und Format der Symbole

So verwenden Sie benutzerdefinierte Push-Benachrichtigungssymbole mit dem Braze Expo-Plugin:

  1. Erstellen Sie Ihre Symboldateien gemäß den unten aufgeführten Symbolanforderungen.
  2. Platzieren Sie sie in den nativen Android-Verzeichnissen Ihres Projekts unter android/app/src/main/res/drawable-<density>/. Verwenden Sie beispielsweise android/app/src/main/res/drawable-mdpi/ und android/app/src/main/res/drawable-hdpi/.
  3. Alternativ können Sie, wenn Sie Assets in Ihrem React Native-Verzeichnis verwalten, die app.json-Symbolkonfiguration von Expo nutzen oder ein Expo-Konfigurationsplugin erstellen, um die Symbole während des Prebuilds in die Android-Drawable-Ordner zu kopieren.

Das Braze Expo-Plugin referenziert diese Symbole über das Drawable-Ressourcensystem von Android.

Symbolanforderungen

  • Kleines Symbol: Muss eine weiße Silhouette auf transparentem Hintergrund sein (dies ist eine Android-Plattformanforderung).
  • Großes Symbol: Kann ein vollfarbiges Bild sein.
  • Format: Das PNG-Format wird empfohlen.
  • Benennung: Verwenden Sie nur Kleinbuchstaben, Zahlen und Unterstriche (zum Beispiel my_large_icon.png).

Konfiguration in app.json

Das folgende Code-Snippet zeigt, wie Sie Android-Benachrichtigungssymbole in app.json mit dem Präfix @drawable/ referenzieren:

{
  "expo": {
    "plugins": [
      [
        "@braze/expo-plugin",
        {
          "androidNotificationLargeIcon": "@drawable/large_icon",
          "androidNotificationSmallIcon": "@drawable/small_icon"
        }
      ]
    ]
  }
}

So funktioniert es

Das Braze Expo-Plugin referenziert Ihre Symboldateien aus den Android-drawable-Verzeichnissen. Wenn Sie npx expo prebuild ausführen, generiert Expo die native Android-Projektstruktur. Ihre Symbole müssen in den Android-drawable-Ordnern vorhanden sein (entweder manuell platziert oder über ein Konfigurationsplugin kopiert), bevor der Build-Prozess beginnt. Das Plugin konfiguriert dann das Braze SDK, diese Drawable-Ressourcen anhand ihrer Namen (ohne Pfad oder Erweiterung) zu verwenden – deshalb ist das Präfix @drawable/ in Ihrer Konfiguration erforderlich.

Weitere Informationen zu Android-Benachrichtigungssymbolen finden Sie in den Android-Richtlinien für Benachrichtigungssymbole.

2.3 Ihre Anwendung erstellen und ausführen {#23-build-and-run-your-application}

Das Prebuilding Ihrer Anwendung generiert die nativen Dateien, die für das Braze Expo-Plugin erforderlich sind.

Das folgende Code-Snippet zeigt den Befehl zum Prebuilden Ihrer Anwendung:

npx expo prebuild

Führen Sie Ihre Anwendung wie in der Expo-Dokumentation beschrieben aus. Wenn Sie Änderungen an den Konfigurationsoptionen vornehmen, müssen Sie die Anwendung erneut prebuilden und ausführen.

Methode 2: Die React Native CLI verwenden

Android einrichten

2.1 Das Kotlin-Gradle-Plugin hinzufügen

Das folgende Code-Snippet zeigt, wie Sie das Kotlin-Gradle-Plugin in der build.gradle Ihres Projekts auf oberster Ebene unter buildscript > dependencies hinzufügen:

buildscript {
    dependencies {
        ...
        // Choose your Kotlin version
        classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.10")
    }
}

Dies fügt Kotlin zu Ihrem Projekt hinzu.

2.2 Das Braze SDK konfigurieren

Erstellen Sie eine braze.xml-Datei im res/values-Ordner Ihres Projekts. Der API-Schlüssel und der Endpunkt werden zur Laufzeit aus JavaScript bereitgestellt und sind daher in dieser Datei nicht erforderlich. Das folgende Code-Snippet zeigt, wie Sie die verzögerte Initialisierung mit com_braze_enable_delayed_initialization aktivieren:

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <bool name="com_braze_enable_delayed_initialization">true</bool>
</resources>

Das folgende Code-Snippet zeigt die erforderlichen Berechtigungen für Ihre AndroidManifest.xml-Datei:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

2.3 Sitzungs-Tracking für Nutzer:innen implementieren

Die Aufrufe von openSession() und closeSession() werden automatisch verarbeitet. Das folgende Code-Snippet zeigt, was Sie zur onCreate()-Methode Ihrer MainApplication-Klasse hinzufügen müssen:

import com.braze.BrazeActivityLifecycleCallbackListener;

@Override
public void onCreate() {
    super.onCreate();
    ...
    registerActivityLifecycleCallbacks(new BrazeActivityLifecycleCallbackListener());
}
import com.braze.BrazeActivityLifecycleCallbackListener

override fun onCreate() {
    super.onCreate()
    ...
    registerActivityLifecycleCallbacks(BrazeActivityLifecycleCallbackListener())
}

2.4 Intent-Updates verarbeiten

Wenn Ihre MainActivity android:launchMode auf singleTask gesetzt hat, zeigt das folgende Code-Snippet, was Sie zu Ihrer MainActivity-Klasse hinzufügen müssen:

@Override
public void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    setIntent(intent);
}
override fun onNewIntent(intent: Intent) {
    super.onNewIntent(intent)
    setIntent(intent)
}
iOS einrichten

2.5 (Optional) Podfile für dynamische XCFrameworks konfigurieren

Um bestimmte Braze-Bibliotheken wie BrazeUI in eine Objective-C++-Datei zu importieren, müssen Sie die #import-Syntax verwenden. Ab Version 7.4.0 des Braze Swift SDK verfügen Binärdateien über einen optionalen Distributionskanal als dynamische XCFrameworks, die mit dieser Syntax kompatibel sind.

Wenn Sie diesen Distributionskanal verwenden möchten, überschreiben Sie die CocoaPods-Quellverzeichnisse in Ihrem Podfile manuell. Referenzieren Sie dieses Beispiel und ersetzen Sie {your-version} durch die relevante Version, die Sie importieren möchten:

pod 'BrazeKit', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeKit.podspec'
pod 'BrazeUI', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeUI.podspec'
pod 'BrazeLocation', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeLocation.podspec'

2.6 Pods installieren

Da React Native die Bibliotheken automatisch mit der nativen Plattform verknüpft, können Sie das SDK mit Hilfe von CocoaPods installieren.

Das folgende Code-Snippet zeigt, wie Sie Pods aus dem Stammordner des Projekts installieren:

# To install using the React Native New Architecture
cd ios && pod install

# To install using the React Native legacy architecture
cd ios && RCT_NEW_ARCH_ENABLED=0 pod install

2.7 Das Braze SDK konfigurieren

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.

Das folgende Code-Snippet zeigt, wie Sie das Braze SDK am Anfang der AppDelegate.swift-Datei importieren:

import BrazeKit
import braze_react_native_sdk

Registrieren Sie in der Methode application(_:didFinishLaunchingWithOptions:) Ihre native Konfiguration mit BrazeReactInitializer.configure. Setzen Sie hier nicht den API-Schlüssel oder den Endpunkt. Diese werden aus JavaScript über Braze.initialize() bereitgestellt.

  • configure-Closure: Empfängt eine Braze.Configuration und ermöglicht das Setzen nativer Konfigurationseigenschaften (Protokollierung, Push, Sitzungen und mehr).
  • postInitialization-Closure (optional): Empfängt die aktive Braze-Instanz nach der Erstellung für Einrichtungen, die die Instanz benötigen (zum Beispiel zum Speichern einer Referenz oder zum Setzen von Delegates).

Das folgende Code-Snippet zeigt eine beispielhafte AppDelegate.swift-Implementierung mit BrazeReactInitializer.configure:

@main
class AppDelegate: UIResponder, UIApplicationDelegate {
  static var braze: Braze? = nil

  func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil
  ) -> Bool {
    BrazeReactInitializer.configure { configuration in
      configuration.logger.level = .info
      configuration.push.automation = true
    } postInitialization: { braze in
      AppDelegate.braze = braze
    }

    // ... React Native setup

    return true
  }
}

Das folgende Code-Snippet zeigt, wie Sie das Braze SDK am Anfang der AppDelegate.m-Datei importieren:

@import BrazeKit;
@import braze_react_native_sdk;

Registrieren Sie in der Methode application:didFinishLaunchingWithOptions: Ihre native Konfiguration mit BrazeReactInitializer. Setzen Sie hier nicht den API-Schlüssel oder den Endpunkt. Diese werden aus JavaScript über Braze.initialize() bereitgestellt.

Das folgende Code-Snippet zeigt eine beispielhafte AppDelegate.m-Implementierung mit BrazeReactInitializer:

- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  [BrazeReactInitializer configure:^(BRZConfiguration *configuration) {
    configuration.logger.level = BRZLoggerLevelInfo;
    configuration.push.automation = [[BRZConfigurationPushAutomation alloc] initWithAutomationEnabled:YES];
  } postInitialization:^(Braze *braze) {
    // Store the Braze instance for later use.
  }];

  /* Other configuration */

  return YES;
}

Methode 1: Das Expo-Plugin verwenden

Schritt 2.1: Das Braze Expo-Plugin installieren

Stellen Sie sicher, dass Ihre Version des Braze React Native SDK mindestens 1.37.0 ist. Die vollständige Liste der unterstützten Versionen finden Sie im Braze React Native-Repository.

Das folgende Code-Snippet zeigt den Befehl zur Installation des Braze Expo-Plugins:

npx expo install @braze/expo-plugin
Schritt 2.2: Das Plugin zu Ihrer app.json hinzufügen

Fügen Sie in Ihrer app.json das Braze Expo-Plugin hinzu. Sie können die folgenden Konfigurationsoptionen angeben:

Methode Typ Beschreibung
androidApiKey string Erforderlich. Der API-Schlüssel für Ihre Android-Anwendung, zu finden in Ihrem Braze-Dashboard unter Einstellungen verwalten.
iosApiKey string Erforderlich. Der API-Schlüssel für Ihre iOS-Anwendung, zu finden in Ihrem Braze-Dashboard unter Einstellungen verwalten.
baseUrl string Erforderlich. Der SDK-Endpunkt für Ihre Anwendung, zu finden in Ihrem Braze-Dashboard unter Einstellungen verwalten.
enableBrazeIosPush boolean Nur iOS. Ob Braze für die Verarbeitung von Push-Benachrichtigungen unter iOS verwendet werden soll. Eingeführt in React Native SDK v1.38.0 und Expo Plugin v0.4.0.
enableFirebaseCloudMessaging boolean Nur Android. Ob Firebase Cloud Messaging für Push-Benachrichtigungen verwendet werden soll. Eingeführt in React Native SDK v1.38.0 und Expo Plugin v0.4.0.
firebaseCloudMessagingSenderId string Nur Android. Ihre Firebase Cloud Messaging Sender-ID. Eingeführt in React Native SDK v1.38.0 und Expo Plugin v0.4.0.
sessionTimeout integer Das Braze-Sitzungs-Timeout für Ihre Anwendung in Sekunden.
enableSdkAuthentication boolean Ob das Feature SDK-Authentifizierung aktiviert werden soll.
logLevel integer Die Protokollierungsstufe für Ihre Anwendung. Die Standard-Protokollierungsstufe ist 8 und protokolliert minimal Info. Um ausführliche Protokollierung für die Fehlersuche zu aktivieren, verwenden Sie Protokollierungsstufe 0.
minimumTriggerIntervalInSeconds integer Das minimale Zeitintervall in Sekunden zwischen Triggern. Standardmäßig 30 Sekunden.
enableAutomaticLocationCollection boolean Ob die automatische Standorterfassung aktiviert ist (sofern der/die Nutzer:in dies zulässt).
enableGeofence boolean Ob Geofences aktiviert sind.
enableAutomaticGeofenceRequests boolean Ob Geofence-Anfragen automatisch gestellt werden sollen.
dismissModalOnOutsideTap boolean Nur iOS. Ob eine modale In-App-Nachricht geschlossen wird, wenn Nutzer:innen außerhalb der In-App-Nachricht klicken.
androidHandlePushDeepLinksAutomatically boolean Nur Android. Ob das Braze SDK Push-Deeplinks automatisch verarbeiten soll.
androidPushNotificationHtmlRenderingEnabled boolean Nur Android. Legt fest, ob der Textinhalt einer Push-Benachrichtigung als HTML mittels android.text.Html.fromHtml interpretiert und gerendert werden soll.
androidNotificationAccentColor string Nur Android. Legt die Akzentfarbe der Android-Benachrichtigung fest.
androidNotificationLargeIcon string Nur Android. Legt das große Symbol der Android-Benachrichtigung fest.
androidNotificationSmallIcon string Nur Android. Legt das kleine Symbol der Android-Benachrichtigung fest.
iosRequestPushPermissionsAutomatically boolean Nur iOS. Ob Nutzer:innen beim Start der App automatisch nach Push-Berechtigungen gefragt werden sollen.
enableBrazeIosRichPush boolean Nur iOS. Ob Rich-Push-Features für iOS aktiviert werden sollen.
enableBrazeIosPushStories boolean Nur iOS. Ob Braze Push Stories für iOS aktiviert werden sollen.
iosPushStoryAppGroup string Nur iOS. Die App-Gruppe, die für iOS Push Stories verwendet wird.
iosUseUUIDAsDeviceId boolean Nur iOS. Ob die Geräte-ID eine zufällig generierte UUID verwenden wird.
iosForwardUniversalLinks boolean Nur iOS. Gibt an, ob das SDK Universal Links automatisch erkennen und an die Systemmethoden weiterleiten soll (Standard: false). Bei Aktivierung leitet das SDK Universal Links automatisch an die in Supporting universal links in your app definierten Systemmethoden weiter. Eingeführt in React Native SDK v11.1.0 und Expo Plugin v3.2.0.

Das folgende Code-Snippet zeigt eine beispielhafte app.json-Konfiguration:

{
  "expo": {
    "plugins": [
      [
        "@braze/expo-plugin",
        {
          "androidApiKey": "YOUR-ANDROID-API-KEY",
          "iosApiKey": "YOUR-IOS-API-KEY",
          "baseUrl": "YOUR-SDK-ENDPOINT",
          "sessionTimeout": 60,
          "enableGeofence": false,
          "enableBrazeIosPush": false,
          "enableFirebaseCloudMessaging": false,
          "firebaseCloudMessagingSenderId": "YOUR-FCM-SENDER-ID",
          "androidHandlePushDeepLinksAutomatically": true,
          "enableSdkAuthentication": false,
          "logLevel": 0,
          "minimumTriggerIntervalInSeconds": 0,
          "enableAutomaticLocationCollection": false,
          "enableAutomaticGeofenceRequests": false,
          "dismissModalOnOutsideTap": true,
          "androidPushNotificationHtmlRenderingEnabled": true,
          "androidNotificationAccentColor": "#ff3344",
          "androidNotificationLargeIcon": "@drawable/custom_app_large_icon",
          "androidNotificationSmallIcon": "@drawable/custom_app_small_icon",
          "iosRequestPushPermissionsAutomatically": false,
          "enableBrazeIosPushStories": true,
          "iosPushStoryAppGroup": "group.com.example.myapp.PushStories",
          "iosForwardUniversalLinks": false
        }
      ],
    ]
  }
}
Android-Push-Benachrichtigungssymbole konfigurieren

Befolgen Sie bei Verwendung von androidNotificationLargeIcon und androidNotificationSmallIcon die folgenden Best Practices für die korrekte Symbolanzeige:

Platzierung und Format der Symbole

So verwenden Sie benutzerdefinierte Push-Benachrichtigungssymbole mit dem Braze Expo-Plugin:

  1. Erstellen Sie Ihre Symboldateien gemäß den unten aufgeführten Symbolanforderungen.
  2. Platzieren Sie sie in den nativen Android-Verzeichnissen Ihres Projekts unter android/app/src/main/res/drawable-<density>/ (zum Beispiel android/app/src/main/res/drawable-mdpi/, drawable-hdpi/ oder ähnlich).
  3. Alternativ können Sie, wenn Sie Assets in Ihrem React Native-Verzeichnis verwalten, die app.json-Symbolkonfiguration von Expo nutzen oder ein Expo-Konfigurationsplugin erstellen, um die Symbole während des Prebuilds in die Android-Drawable-Ordner zu kopieren.

Das Braze Expo-Plugin referenziert diese Symbole über das Drawable-Ressourcensystem von Android.

Symbolanforderungen

  • Kleines Symbol: Muss eine weiße Silhouette auf transparentem Hintergrund sein (dies ist eine Android-Plattformanforderung).
  • Großes Symbol: Kann ein vollfarbiges Bild sein.
  • Format: Das PNG-Format wird empfohlen.
  • Benennung: Verwenden Sie nur Kleinbuchstaben, Zahlen und Unterstriche (zum Beispiel my_large_icon.png).

Konfiguration in app.json

Das folgende Code-Snippet zeigt, wie Sie Android-Benachrichtigungssymbole in app.json mit dem Präfix @drawable/ referenzieren:

{
  "expo": {
    "plugins": [
      [
        "@braze/expo-plugin",
        {
          "androidNotificationLargeIcon": "@drawable/large_icon",
          "androidNotificationSmallIcon": "@drawable/small_icon"
        }
      ]
    ]
  }
}

So funktioniert es

Das Braze Expo-Plugin referenziert Ihre Symboldateien aus den Android-drawable-Verzeichnissen. Wenn Sie npx expo prebuild ausführen, generiert Expo die native Android-Projektstruktur. Ihre Symbole müssen in den Android-drawable-Ordnern vorhanden sein (entweder manuell platziert oder über ein Konfigurationsplugin kopiert), bevor der Build-Prozess beginnt. Das Plugin konfiguriert dann das Braze SDK, diese Drawable-Ressourcen anhand ihrer Namen (ohne Pfad oder Erweiterung) zu verwenden – deshalb ist das Präfix @drawable/ in Ihrer Konfiguration erforderlich.

Weitere Informationen zu Android-Benachrichtigungssymbolen finden Sie in den Android-Richtlinien für Benachrichtigungssymbole.

Schritt 2.3: Ihre Anwendung erstellen und ausführen

Das Prebuilding Ihrer Anwendung generiert die nativen Dateien, die für das Braze Expo-Plugin erforderlich sind.

Das folgende Code-Snippet zeigt den Befehl zum Prebuilden Ihrer Anwendung:

npx expo prebuild

Führen Sie Ihre Anwendung wie in der Expo-Dokumentation beschrieben aus. Beachten Sie, dass Sie bei Änderungen an den Konfigurationsoptionen die Anwendung erneut prebuilden und ausführen müssen.

Methode 2: Die React Native CLI verwenden

Android einrichten

Schritt 2.1: Das Kotlin-Gradle-Plugin hinzufügen

Das folgende Code-Snippet zeigt, wie Sie das Kotlin-Gradle-Plugin in der build.gradle Ihres Projekts auf oberster Ebene unter buildscript > dependencies hinzufügen:

buildscript {
    dependencies {
        ...
        // Choose your Kotlin version
        classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.10")
    }
}

Dies fügt Kotlin zu Ihrem Projekt hinzu.

Schritt 2.2: Das Braze SDK konfigurieren

Um eine Verbindung zu Braze-Servern herzustellen, erstellen Sie eine braze.xml-Datei im res/values-Ordner Ihres Projekts. Das folgende Code-Snippet zeigt eine beispielhafte braze.xml-Konfiguration. Ersetzen Sie den API-Schlüssel und den Endpunkt durch Ihre Werte:

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <string translatable="false" name="com_braze_api_key">YOU_APP_IDENTIFIER_API_KEY</string>
  <string translatable="false" name="com_braze_custom_endpoint">YOUR_CUSTOM_ENDPOINT_OR_CLUSTER</string>
</resources>

Das folgende Code-Snippet zeigt die erforderlichen Berechtigungen für Ihre AndroidManifest.xml-Datei:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

Schritt 2.3: Sitzungs-Tracking für Nutzer:innen implementieren

Die Aufrufe von openSession() und closeSession() werden automatisch verarbeitet. Das folgende Code-Snippet zeigt, was Sie zur onCreate()-Methode Ihrer MainApplication-Klasse hinzufügen müssen:

import com.braze.BrazeActivityLifecycleCallbackListener;

@Override
public void onCreate() {
    super.onCreate();
    ...
    registerActivityLifecycleCallbacks(new BrazeActivityLifecycleCallbackListener());
}
import com.braze.BrazeActivityLifecycleCallbackListener

override fun onCreate() {
    super.onCreate()
    ...
    registerActivityLifecycleCallbacks(BrazeActivityLifecycleCallbackListener())
}

Schritt 2.4: Intent-Updates verarbeiten

Wenn Ihre MainActivity android:launchMode auf singleTask gesetzt hat, zeigt das folgende Code-Snippet, was Sie zu Ihrer MainActivity-Klasse hinzufügen müssen:

@Override
public void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    setIntent(intent);
}
override fun onNewIntent(intent: Intent) {
    super.onNewIntent(intent)
    setIntent(intent)
}
iOS einrichten

Schritt 2.5: (Optional) Podfile für dynamische XCFrameworks konfigurieren

Um bestimmte Braze-Bibliotheken wie BrazeUI in eine Objective-C++-Datei zu importieren, müssen Sie die #import-Syntax verwenden. Ab Version 7.4.0 des Braze Swift SDK verfügen Binärdateien über einen optionalen Distributionskanal als dynamische XCFrameworks, die mit dieser Syntax kompatibel sind.

Wenn Sie diesen Distributionskanal verwenden möchten, überschreiben Sie die CocoaPods-Quellverzeichnisse in Ihrem Podfile manuell. Das folgende Code-Snippet zeigt ein Beispiel für die Überschreibung. Ersetzen Sie {your-version} durch die relevante Version, die Sie importieren möchten:

pod 'BrazeKit', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeKit.podspec'
pod 'BrazeUI', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeUI.podspec'
pod 'BrazeLocation', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeLocation.podspec'

Schritt 2.6: Pods installieren

Da React Native die Bibliotheken automatisch mit der nativen Plattform verknüpft, können Sie das SDK mit Hilfe von CocoaPods installieren.

Das folgende Code-Snippet zeigt, wie Sie Pods aus dem Stammordner des Projekts installieren:

# To install using the React Native New Architecture
cd ios && pod install

# To install using the React Native legacy architecture
cd ios && RCT_NEW_ARCH_ENABLED=0 pod install

Schritt 2.7: Das Braze SDK konfigurieren

Das folgende Code-Snippet zeigt, wie Sie das Braze SDK am Anfang der AppDelegate.swift-Datei importieren:

import BrazeKit
import braze_react_native_sdk

Ersetzen Sie in der Methode application(_:didFinishLaunchingWithOptions:) den API-Schlüssel und den Endpunkt durch die Werte Ihrer App. Erstellen Sie dann die Braze-Instanz mithilfe der Konfiguration und erstellen Sie eine statische Eigenschaft auf dem AppDelegate für den einfachen Zugriff.

Das folgende Code-Snippet zeigt ein beispielhaftes AppDelegate.swift-Setup:

func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil
) -> Bool {
    // Setup Braze
    let configuration = Braze.Configuration(
        apiKey: "{BRAZE_API_KEY}",
        endpoint: "{BRAZE_ENDPOINT}")
    // Enable logging and customize the configuration here.
    configuration.logger.level = .info
    let braze = BrazeReactBridge.perform(
      #selector(BrazeReactBridge.initBraze(_:)),
      with: configuration
    ).takeUnretainedValue() as! Braze

    AppDelegate.braze = braze

    /* Other configuration */

    return true
}

// MARK: - AppDelegate.braze

static var braze: Braze? = nil

Das folgende Code-Snippet zeigt, wie Sie das Braze SDK am Anfang der AppDelegate.m-Datei importieren:

#import <BrazeKit/BrazeKit-Swift.h>
#import "BrazeReactBridge.h"

Ersetzen Sie in der Methode application:didFinishLaunchingWithOptions: den API-Schlüssel und den Endpunkt durch die Werte Ihrer App. Erstellen Sie dann die Braze-Instanz mithilfe der Konfiguration und erstellen Sie eine statische Eigenschaft auf dem AppDelegate für den einfachen Zugriff.

Das folgende Code-Snippet zeigt ein beispielhaftes AppDelegate.m-Setup:

- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  // Setup Braze
  BRZConfiguration *configuration = [[BRZConfiguration alloc] initWithApiKey:@"{BRAZE_API_KEY}"
                                                                    endpoint:@"{BRAZE_ENDPOINT}"];
  // Enable logging and customize the configuration here.
  configuration.logger.level = BRZLoggerLevelInfo;
  Braze *braze = [BrazeReactBridge initBraze:configuration];
  AppDelegate.braze = braze;

  /* Other configuration */

  return YES;
}

#pragma mark - AppDelegate.braze

static Braze *_braze = nil;

+ (Braze *)braze {
  return _braze;
}

+ (void)setBraze:(Braze *)braze {
  _braze = braze;
}

Schritt 3: Das SDK initialisieren

Das folgende Code-Snippet zeigt, wie Sie die Bibliothek in Ihrem React Native-Code importieren:

import Braze from "@braze/react-native-sdk";

Rufen Sie dann Braze.initialize() mit Ihrem App-Identifier-API-Schlüssel und SDK-Endpunkt auf, um die Braze-Instanz zu erstellen. Im Folgenden finden Sie die Optionen, wo Sie diese Methode in Ihrem App-Ablauf aufrufen können.

Standardinitialisierung

Das folgende Code-Snippet zeigt, wie Sie das SDK beim Start Ihrer App initialisieren, indem Sie Braze.initialize() in einem useEffect aufrufen:

import React, { useEffect } from "react";
import Braze from "@braze/react-native-sdk";

const App = () => {
  useEffect(() => {
    Braze.initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT");
  }, []);

  return (
    // Your app components
  );
};

Verzögerte Initialisierung

Das folgende Code-Snippet zeigt, wie Sie die SDK-Initialisierung auf einen späteren Zeitpunkt in der Sitzung verschieben können. Zum Beispiel nachdem Nutzer:innen ihre Einwilligung erteilt oder sich angemeldet haben:

function onUserConsent() {
  Braze.initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT");
}

Plattformspezifische API-Schlüssel

Das folgende Code-Snippet zeigt, wie Sie die Plattformerkennung verwenden, wenn Ihre Android- und iOS-Apps unterschiedliche API-Schlüssel verwenden:

import { Platform } from "react-native";
import Braze from "@braze/react-native-sdk";

const apiKey = Platform.select({
  android: "YOUR-ANDROID-API-KEY",
  ios: "YOUR-IOS-API-KEY",
}) ?? "";

Braze.initialize(apiKey, "YOUR-SDK-ENDPOINT");

Neuinitialisierung

Sie können Braze.initialize() mehrfach aufrufen, um das SDK mit einem anderen API-Schlüssel und Endpunkt während der Sitzung neu zu initialisieren. Jeder Aufruf löst die vorherige Braze-Instanz auf und erstellt eine neue.

Push-Benachrichtigungen beim Kaltstart

Wenn eine Benachrichtigung Ihre App aus einem beendeten Zustand startet, speichert Braze die Benachrichtigungs-Payload in der nativen Schicht, bevor React Native geladen wird. Daher ändert die Initialisierung aus der React Native-Schicht nicht, ob die Payload Ihre App erreicht. Um diese Benachrichtigungen zu verarbeiten, fügen Sie die nativen Hooks hinzu und lesen Sie dann die Payload in Ihrem React Native-Code.

Rufen Sie unter Android BrazeReactUtils.populateInitialPushPayloadFromIntent(intent) in der onCreate()-Methode Ihrer MainActivity-Klasse auf:

import com.braze.reactbridge.BrazeReactUtils

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    BrazeReactUtils.populateInitialPushPayloadFromIntent(intent)
}

Rufen Sie unter iOS populateInitialPayload(fromLaunchOptions:) in der Methode application(_:didFinishLaunchingWithOptions:) Ihres AppDelegate auf:

if let launchOptions {
  BrazeReactUtils.sharedInstance().populateInitialPayload(fromLaunchOptions: launchOptions)
}

Lesen Sie dann die Payload in Ihrem React Native-Code:

Braze.getInitialPushPayload((pushPayload) => {
  if (pushPayload) {
    // Handle the notification, such as navigating to the pushPayload.url value
  }
});

Ihre Push-Registrierungseinstellungen verbleiben in Ihrer nativen Konfiguration für beide Initialisierungsorte, und Braze wendet sie an, wenn Braze.initialize() ausgeführt wird:

  • Unter Android setzen Sie com_braze_firebase_cloud_messaging_registration_enabled und com_braze_firebase_cloud_messaging_sender_id in braze.xml.
  • Unter iOS setzen Sie die push-Eigenschaften auf dem Konfigurationsobjekt in der configure-Closure, die Sie an BrazeReactInitializer.configure übergeben.

Wenn Ihre App auf Deeplinks aus Benachrichtigungen angewiesen ist, die sie aus einem beendeten Zustand starten, verwenden Sie React Native SDK 21.1.0 oder höher. Diese Versionen enthalten Korrekturen für die Erfassung der anfänglichen Push-Payload und das Auflösen von Push-Deeplinks unter Android. Die vollständige Liste der Änderungen finden Sie im React Native SDK-Changelog.

Bei React Native SDK 19.1.0 und früher erfolgt die native Initialisierung in Schritt 2. Importieren Sie die Bibliothek in Ihrem React Native-Code, um Braze-Methoden aufzurufen. Weitere Details finden Sie in unserem Beispielprojekt.

import Braze from "@braze/react-native-sdk";

Schritt 4: Die Integration testen (optional)

Sie können überprüfen, ob das SDK integriert ist, indem Sie die Sitzungsstatistiken im Dashboard prüfen. Wenn Sie Ihre Anwendung auf einer der beiden Plattformen ausführen, sollte im Dashboard eine neue Sitzung erscheinen (im Abschnitt Übersicht).

Das folgende Code-Snippet zeigt, wie Sie eine Sitzung für eine/n bestimmte/n Nutzer:in in Ihrer App öffnen:

import Braze from "@braze/react-native-sdk";

Braze.initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT");
Braze.changeUser("{some-user-id}");

Suchen Sie nach dem/der Nutzer:in mit {some-user-id} im Dashboard unter Zielgruppe > Nutzer:innen suchen. Dort können Sie überprüfen, ob Sitzungs- und Gerätedaten protokolliert wurden.

Um Ihre SDK-Integration zu testen, zeigt das folgende Code-Snippet, wie Sie auf einer der beiden Plattformen eine neue Sitzung für eine/n Nutzer:in starten.

Braze.changeUser("userId");

Das folgende Code-Snippet zeigt ein Beispiel für die Zuweisung der Nutzer-ID beim App-Start:

import React, { useEffect } from "react";
import Braze from "@braze/react-native-sdk";

const App = () => {
  useEffect(() => {
    Braze.changeUser("some-user-id");
  }, []);

  return (
    <div>
      ...
    </div>
  )

Gehen Sie im Braze-Dashboard zur Nutzersuche und suchen Sie nach dem/der Nutzer:in mit der ID some-user-id. Dort können Sie überprüfen, ob Sitzungs- und Gerätedaten protokolliert wurden.

Testen mit Jest

React-Native-Unit-Tests, die das Braze SDK importieren, benötigen Mocks für native Module und das Braze Turbo Module. Das Braze React Native SDK-Repository enthält ein Referenz-Jest-Setup in __tests__/jest.setup.js. Fügen Sie diese Datei (oder eine angepasste Kopie) zu setupFiles in Ihrer Jest-Konfiguration hinzu, damit NativeEventEmitter, TurboModuleRegistry und BrazeReactBridge gemockt werden, wenn Sie Komponenten testen, die Braze-APIs aufrufen.

Nächste Schritte

Nach der Integration des Braze SDK können Sie mit der Implementierung gängiger Messaging-Features beginnen:

  • Push-Benachrichtigungen: Richten Sie Push-Benachrichtigungen ein und senden Sie sie an Ihre Nutzer:innen.
  • In-App Messages: Zeigen Sie kontextuelle Nachrichten innerhalb Ihrer App an.
  • Banner: Zeigen Sie persistente Banner in der Oberfläche Ihrer App an.

Das Roku SDK integrieren

Schritt 1: Dateien hinzufügen

Die Braze SDK-Dateien befinden sich im Verzeichnis sdk_files des Braze Roku SDK-Repositorys.

  1. Fügen Sie BrazeSDK.brs zu Ihrer App im Verzeichnis source hinzu.
  2. Fügen Sie BrazeTask.brs und BrazeTask.xml zu Ihrer App im Verzeichnis components hinzu.

Schritt 2: Referenzen hinzufügen

Fügen Sie in Ihrer Hauptszene eine Referenz zu BrazeSDK.brs hinzu:

<script type="text/brightscript" uri="pkg:/source/BrazeSDK.brs"/>

Dateien in source sind für main.brs verfügbar. Scene-Graph-Komponenten sehen nur Skripte, die in ihrer Komponenten-XML aufgeführt sind. Daher benötigt die Hauptszene diese Referenz, bevor sie getBrazeInstance() aufrufen kann.

Schritt 3: Konfigurieren

Legen Sie in main.brs die Braze-Konfiguration auf dem globalen Knoten vor CreateScene() fest. init() der Szene wird während CreateScene() ausgeführt – und dort initialisieren Sie Braze.

screen = CreateObject("roSGScreen")
globalNode = screen.getGlobalNode()
config = {}
config_fields = BrazeConstants().BRAZE_CONFIG_FIELDS
config[config_fields.API_KEY] = "YOUR_API_KEY_HERE"
' example endpoint: "https://sdk.iad-01.braze.com/"
config[config_fields.ENDPOINT] = "YOUR_SDK_ENDPOINT"
config[config_fields.HEARTBEAT_FREQ_IN_SECONDS] = 5
globalNode.addFields({brazeConfig: config})
screen.CreateScene("MainScene")

Ihren SDK-Endpunkt und API-Schlüssel finden Sie im Braze-Dashboard.

Um die SDK-Konsolenprotokollierung zu deaktivieren, setzen Sie logging_enabled auf false:

config[config_fields.LOGGING_ENABLED] = false

Um das Caching von Feature-Flags in der Geräte-Registry zu vermeiden, setzen Sie ff_cache_disable auf true:

config[config_fields.FF_CACHE_DISABLED] = true

Schritt 4: Braze initialisieren

Rufen Sie getBrazeInstance() in Ihrer Hauptszene auf, zum Beispiel in init().

m.BrazeTask = createObject("roSGNode", "BrazeTask")
m.Braze = getBrazeInstance(m.BrazeTask)

Optionale Konfigurationen

Protokollierung

Braze-Protokolle werden in der Roku-Debug-Konsole ausgegeben. Weitere Informationen finden Sie unter Debugging code von Roku Developers. Setzen Sie logging_enabled in Ihrer Braze-Konfiguration auf false, um diese Protokolle zu unterdrücken.

Feature-Flags

Feature-Flags sind ab Roku SDK 1.0.0 verfügbar. getFeatureFlag() gibt invalid zurück, wenn das Flag nicht existiert.

ff = m.Braze.getFeatureFlag("theme")
if ff <> invalid and ff.enabled
  bgcolor = ff.getStringProperty("bgcolor")
end if

allFeatureFlags = m.Braze.getAllFeatureFlags()
m.Braze.refreshFeatureFlags()
m.Braze.logFeatureFlagImpression(ff.id)

Beobachten Sie BrazeFeatureFlagsUpdated, um benachrichtigt zu werden, wenn eine Aktualisierung abgeschlossen ist. Dieses Feld wird beim ersten Laden aus dem Cache nicht ausgelöst. Beobachten Sie BrazeFeatureFlags, wenn Sie auch das Laden aus dem Cache benötigen.

m.BrazeTask.observeField("BrazeFeatureFlagsUpdated", "onFeatureFlagChanges")

Weitere Property-Getter sind getBooleanProperty(), getNumberProperty(), getJSONProperty(), getImageProperty() und getTimestampProperty().

Nächste Schritte

Über das Unity Braze SDK

Eine vollständige Liste der Typen, Funktionen, Variablen und mehr finden Sie in der Unity-Deklarationsdatei. Wenn Sie Unity für iOS bereits manuell integriert haben, können Sie außerdem stattdessen zu einer automatisierten Integration wechseln.

Integration des Unity SDK

Voraussetzungen

Bevor Sie beginnen, stellen Sie sicher, dass Ihre Umgebung von der aktuellen Braze Unity SDK-Version unterstützt wird.

Schritt 1: Wählen Sie Ihr Braze Unity-Paket

Das Braze .unitypackage bündelt native Bindings für die Android- und iOS-Plattformen zusammen mit einer C#-Schnittstelle.

Auf der Braze Unity Releases-Seite stehen mehrere Braze Unity-Pakete zum Download bereit:

  • Appboy.unitypackage
    • Dieses Paket bündelt die Braze Android und iOS SDKs sowie die SDWebImage-Abhängigkeit für das iOS SDK, die für die ordnungsgemäße Funktion von Braze In-App-Nachrichten und Content Cards Features auf iOS erforderlich ist. Das SDWebImage-Framework wird zum Herunterladen und Anzeigen von Bildern, einschließlich GIFs, verwendet. Wenn Sie die volle Braze-Funktionalität nutzen möchten, laden Sie dieses Paket herunter und importieren Sie es.
  • Appboy-nodeps.unitypackage
    • Dieses Paket ist ähnlich wie Appboy.unitypackage, enthält jedoch nicht das SDWebImage-Framework. Dieses Paket ist nützlich, wenn Sie das SDWebImage-Framework nicht in Ihrer iOS-App verwenden möchten.

Das Braze .unitypackage bündelt native Bindings für die Android- und iOS-Plattformen zusammen mit einer C#-Schnittstelle.

Das Braze Unity-Paket steht auf der Braze Unity Releases-Seite mit zwei Integrationsoptionen zum Download bereit:

  1. Nur Appboy.unitypackage
    • Dieses Paket bündelt die Braze Android und iOS SDKs ohne zusätzliche Abhängigkeiten. Mit dieser Integrationsmethode funktionieren Braze In-App-Nachrichten und Content Cards Features auf iOS nicht ordnungsgemäß. Wenn Sie die volle Braze-Funktionalität ohne angepassten Code nutzen möchten, verwenden Sie stattdessen die nächste Option.
    • Um diese Integrationsoption zu verwenden, stellen Sie sicher, dass das Kontrollkästchen neben Import SDWebImage dependency in der Unity-UI unter „Braze Configuration“ deaktiviert ist.
  2. Appboy.unitypackage mit SDWebImage
    • Diese Integrationsoption bündelt die Braze Android und iOS SDKs sowie die SDWebImage-Abhängigkeit für das iOS SDK, die für die ordnungsgemäße Funktion von Braze In-App-Nachrichten und Content Cards Features auf iOS erforderlich ist. Das SDWebImage-Framework wird zum Herunterladen und Anzeigen von Bildern, einschließlich GIFs, verwendet. Wenn Sie die volle Braze-Funktionalität nutzen möchten, laden Sie dieses Paket herunter und importieren Sie es.
    • Um SDWebImage automatisch zu importieren, aktivieren Sie das Kontrollkästchen neben Import SDWebImage dependency in der Unity-UI unter „Braze Configuration“.

Schritt 2: Importieren Sie das Paket

Importieren Sie im Unity Editor das Paket in Ihr Unity-Projekt, indem Sie zu Assets > Import Package > Custom Package navigieren. Klicken Sie anschließend auf Import.

Alternativ können Sie die Anleitung zum Unity-Asset-Paket-Import für eine detailliertere Anleitung zum Importieren von angepassten Unity-Paketen befolgen.

Importieren Sie im Unity Editor das Paket in Ihr Unity-Projekt, indem Sie zu Assets > Import Package > Custom Package navigieren. Klicken Sie anschließend auf Import.

Alternativ können Sie die Anleitung zum Unity-Asset-Paket-Import für eine detailliertere Anleitung zum Importieren von angepassten Unity-Paketen befolgen.

Schritt 3: Konfigurieren Sie das SDK

Schritt 3.1: Konfigurieren Sie AndroidManifest.xml

Konfigurieren Sie AndroidManifest.xml, damit das Braze SDK funktionieren kann. Wenn Ihre App keine AndroidManifest.xml hat, können Sie die folgende Vorlage verwenden. Wenn Sie bereits eine AndroidManifest.xml haben, stellen Sie sicher, dass alle fehlenden Abschnitte aus dem Folgenden zu Ihrer bestehenden AndroidManifest.xml hinzugefügt werden.

  1. Wechseln Sie in das Verzeichnis Assets/Plugins/Android/ und öffnen Sie Ihre AndroidManifest.xml-Datei. Dies ist der Standardspeicherort im Unity Editor.
  2. Fügen Sie in Ihrer AndroidManifest.xml die erforderlichen Berechtigungen und Activities aus der folgenden Vorlage hinzu.
  3. Wenn Sie fertig sind, sollte Ihre AndroidManifest.xml nur eine einzige Activity mit "android.intent.category.LAUNCHER" enthalten.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="REPLACE_WITH_YOUR_PACKAGE_NAME">

  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  <uses-permission android:name="android.permission.INTERNET" />

  <application android:icon="@drawable/app_icon"
               android:label="@string/app_name">

    <!-- Calls the necessary Braze methods to ensure that analytics are collected and that push notifications are properly forwarded to the Unity application. -->
    <activity android:name="com.braze.unity.BrazeUnityPlayerActivity"
      android:theme="@style/UnityThemeSelector"
      android:label="@string/app_name"
      android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"
      android:screenOrientation="sensor">
      <meta-data android:name="android.app.lib_name" android:value="unity" />
      <meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true" />
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
    </activity>

    <!-- A Braze specific FirebaseMessagingService used to handle push notifications. -->
    <service android:name="com.braze.push.BrazeFirebaseMessagingService"
      android:exported="false">
      <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT" />
      </intent-filter>
    </service>
  </application>
</manifest>

Schritt 3.2: Aktualisieren Sie AndroidManifest.xml mit Ihrem Paketnamen

Um Ihren Paketnamen zu finden, klicken Sie auf File > Build Settings > Player Settings > Android Tab.

Unity Player Settings Android-Tab mit dem Anwendungspaketnamen.

In Ihrer AndroidManifest.xml sollten alle Vorkommen von REPLACE_WITH_YOUR_PACKAGE_NAME durch Ihren Package Name aus dem vorherigen Schritt ersetzt werden.

Schritt 3.3: Fügen Sie Gradle-Abhängigkeiten hinzu

Um Gradle-Abhängigkeiten zu Ihrem Unity-Projekt hinzuzufügen, aktivieren Sie zunächst „Custom Main Gradle Template“ in Ihren Publishing-Einstellungen. Dadurch wird eine Gradle-Template-Datei erstellt, die Ihr Projekt verwenden wird. Eine Gradle-Datei verwaltet Abhängigkeiten und andere projektbezogene Build-Einstellungen. Weitere Informationen finden Sie in der mainTemplate.gradle der Braze Unity-Beispiel-App.

Die folgenden Abhängigkeiten sind erforderlich:

implementation 'com.google.firebase:firebase-messaging:22.0.0'
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0"
implementation "androidx.recyclerview:recyclerview:1.2.1"
implementation "org.jetbrains.kotlin:kotlin-stdlib:1.6.0"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1"
implementation 'androidx.core:core:1.6.0'

Sie können diese Abhängigkeiten auch über den External Dependency Manager einrichten.

Schritt 3.4: Automatisieren Sie die Unity-Android-Integration

Braze bietet eine native Unity-Lösung zur Automatisierung der Unity-Android-Integration.

  1. Öffnen Sie im Unity Editor die Braze-Konfigurationseinstellungen, indem Sie zu Braze > Braze Configuration navigieren.
  2. Aktivieren Sie das Kontrollkästchen Automate Unity Android Integration.
  3. Geben Sie im Feld Braze API Key den API-Schlüssel Ihrer Anwendung ein, den Sie unter Einstellungen verwalten im Braze-Dashboard finden.

Schritt 3.1: Legen Sie Ihren API-Schlüssel fest

Braze bietet eine native Unity-Lösung zur Automatisierung der Unity-iOS-Integration. Diese Lösung modifiziert das erstellte Xcode-Projekt mithilfe von Unitys PostProcessBuildAttribute und erstellt eine Unterklasse des UnityAppController mit dem Makro IMPL_APP_CONTROLLER_SUBCLASS.

  1. Öffnen Sie im Unity Editor die Braze-Konfigurationseinstellungen, indem Sie zu Braze > Braze Configuration navigieren.
  2. Aktivieren Sie das Kontrollkästchen Automate Unity iOS Integration.
  3. Geben Sie im Feld Braze API Key den API-Schlüssel Ihrer Anwendung ein, den Sie unter Einstellungen verwalten finden.

Unity Braze-Konfigurationsfenster mit den Feldern „Automate Unity iOS Integration“ und „Braze API Key“.

Wenn Ihre Anwendung bereits eine andere UnityAppController-Unterklasse verwendet, müssen Sie Ihre Unterklassen-Implementierung mit AppboyAppDelegate.mm zusammenführen.

Anpassen des Unity-Pakets

Schritt 1: Repository klonen

Klonen Sie in Ihrem Terminal das Braze Unity SDK GitHub-Repository und navigieren Sie dann zu diesem Ordner:

git clone [email protected]:braze-inc/braze-unity-sdk.git
cd ~/PATH/TO/DIRECTORY/braze-unity-sdk
git clone git@github.com:braze-inc/braze-unity-sdk.git
cd C:\PATH\TO\DIRECTORY\braze-unity-sdk

Schritt 2: Paket aus dem Repository exportieren

Starten Sie zunächst Unity und lassen Sie es im Hintergrund laufen. Führen Sie dann im Stammverzeichnis des Repositorys den folgenden Befehl aus, um das Paket nach braze-unity-sdk/unity-package/ zu exportieren.

/Applications/Unity/Unity.app/Contents/MacOS/Unity -batchmode -nographics -projectPath "$(pwd)" -executeMethod Appboy.Editor.Build.ExportAllPackages -quit
"%UNITY_PATH%" -batchmode -nographics -projectPath "%PROJECT_ROOT%" -executeMethod Appboy.Editor.Build.ExportAllPackages -quit

Schritt 3: Paket in Unity importieren

  1. Importieren Sie in Unity das gewünschte Paket in Ihr Unity-Projekt, indem Sie zu Assets > Import Package > Custom Package navigieren.
  2. Falls es Dateien gibt, die Sie nicht importieren möchten, deaktivieren Sie diese jetzt.
  3. Passen Sie das exportierte Unity-Paket unter Assets/Editor/Build.cs an.

Zu einer automatisierten Integration wechseln (nur Swift)

Um die Vorteile der automatisierten iOS-Integration des Braze Unity SDK zu nutzen, befolgen Sie diese Schritte für den Übergang von einer manuellen zu einer automatisierten Integration.

  1. Entfernen Sie den gesamten Braze-bezogenen Code aus der UnityAppController-Unterklasse Ihres Xcode-Projekts.
  2. Entfernen Sie die Braze iOS-Bibliotheken aus Ihrem Unity- oder Xcode-Projekt (z. B. Appboy_iOS_SDK.framework und SDWebImage.framework).
  3. Importieren Sie das Braze Unity-Paket erneut in Ihr Projekt. Eine vollständige Anleitung finden Sie unter Schritt 2: Paket importieren.
  4. Legen Sie Ihren API-Schlüssel erneut fest. Eine vollständige Anleitung finden Sie unter Schritt 3.1: API-Schlüssel festlegen.

Optionale Konfigurationen

Ausführliche Protokollierung

Um die ausführliche Protokollierung im Unity-Editor zu aktivieren, gehen Sie wie folgt vor:

  1. Öffnen Sie die Braze-Konfigurationseinstellungen, indem Sie zu Braze > Braze Configuration navigieren.
  2. Klicken Sie auf das Dropdown-Menü Show Braze Android Settings.
  3. Geben Sie im Feld SDK Log Level den Wert „0“ ein.

Prime 31-Kompatibilität

Um das Braze Unity-Plugin mit Prime31-Plugins zu verwenden, bearbeiten Sie die Datei AndroidManifest.xml Ihres Projekts, damit die Prime31-kompatiblen Activity-Klassen verwendet werden. Ändern Sie alle Verweise von com.braze.unity.BrazeUnityPlayerActivity zu com.braze.unity.prime31compatible.BrazeUnityPlayerActivity

Amazon Device Messaging (ADM)

Braze unterstützt die Integration von ADM-Push in Unity-Apps. Wenn Sie ADM-Push integrieren möchten, erstellen Sie eine Datei mit dem Namen api_key.txt, die Ihren ADM-API-Schlüssel enthält, und legen Sie diese im Ordner Plugins/Android/assets/ ab. Weitere Informationen zur Integration von ADM mit Braze finden Sie in unserer Anleitung zur ADM-Push-Integration.

Den Braze Unity Player erweitern (nur Android)

Die bereitgestellte Beispieldatei AndroidManifest.xml enthält eine registrierte Activity-Klasse, BrazeUnityPlayerActivity. Diese Klasse ist in das Braze SDK integriert und erweitert UnityPlayerActivity um Sitzungsverwaltung, In-App-Nachrichten-Registrierung, Protokollierung von Push-Benachrichtigungs-Analytics und mehr. Weitere Informationen zur Erweiterung der Klasse UnityPlayerActivity finden Sie in der Unity-Dokumentation.

Wenn Sie Ihre eigene angepasste UnityPlayerActivity in einem Bibliotheks- oder Plugin-Projekt erstellen, müssen Sie unsere BrazeUnityPlayerActivity erweitern, um Ihre angepasste Funktionalität in Braze zu integrieren. Bevor Sie mit der Erweiterung von BrazeUnityPlayerActivity beginnen, folgen Sie unserer Anleitung zur Integration von Braze in Ihr Unity-Projekt.

  1. Fügen Sie das Braze Android SDK als Abhängigkeit zu Ihrem Bibliotheks- oder Plugin-Projekt hinzu, wie in der Anleitung zur Integration des Braze Android SDK beschrieben.
  2. Integrieren Sie unser Unity-.aar, das unsere Unity-spezifische Funktionalität enthält, in Ihr Android-Bibliotheksprojekt, das Sie für Unity erstellen. Das appboy-unity.aar ist in unserem öffentlichen Repository verfügbar. Nachdem unsere Unity-Bibliothek erfolgreich integriert wurde, ändern Sie Ihre UnityPlayerActivity so, dass sie BrazeUnityPlayerActivity erweitert.
  3. Exportieren Sie Ihr Bibliotheks- oder Plugin-Projekt und legen Sie es wie gewohnt in /<your-project>/Assets/Plugins/Android ab. Fügen Sie keinen Braze-Quellcode in Ihre Bibliothek oder Ihr Plugin ein, da dieser bereits in /<your-project>/Assets/Plugins/Android vorhanden ist.
  4. Bearbeiten Sie Ihre Datei /<your-project>/Assets/Plugins/Android/AndroidManifest.xml, um Ihre BrazeUnityPlayerActivity-Unterklasse als Hauptaktivität festzulegen.

Sie sollten nun in der Lage sein, ein .apk aus der Unity-IDE zu erstellen, das vollständig in Braze integriert ist und Ihre angepasste UnityPlayerActivity-Funktionalität enthält.

Fehlerbehebung

Fehler: „File could not be read“

Fehler, die dem folgenden ähneln, können sicher ignoriert werden. Apple-Software verwendet eine proprietäre PNG-Erweiterung namens CgBI, die Unity nicht erkennt. Diese Fehler wirken sich weder auf Ihren iOS-Build noch auf die korrekte Anzeige der zugehörigen Bilder im Braze-Bundle aus.

Could not create texture from Assets/Plugins/iOS/AppboyKit/Appboy.bundle/...png: File could not be read

Integration des .NET MAUI SDK

Durch die Integration des Braze .NET MAUI (ehemals Xamarin) SDK erhalten Sie grundlegende Analytics-Funktionen sowie funktionierende In-App-Nachrichten, mit denen Sie Ihr Engagement mit den Nutzer:innen steigern können.

Voraussetzungen

Bevor Sie die .NET MAUI Braze SDK-Integration durchführen können, stellen Sie bitte sicher, dass Sie die folgenden Anforderungen erfüllen:

  • Ab version 3.0.0 erfordert dieses SDK die Verwendung von .NET 6+ und entfernt die Unterstützung für Projekte, die das Xamarin-Framework verwenden.
  • Ab version 4.0.0 hat dieses SDK die Unterstützung für Xamarin und Xamarin.Forms eingestellt und die Unterstützung für .NET MAUI hinzugefügt. Siehe Microsofts Richtlinie über das Supportende für Xamarin.

Schritt 1: .NET MAUI-Bindung herunterladen

Eine .NET MAUI-Bindung ermöglicht die Verwendung nativer Bibliotheken in .NET MAUI-Apps. Die Implementierung eines Bindings besteht darin, eine C#-Schnittstelle zur Bibliothek zu erstellen und diese Schnittstelle dann in Ihrer Anwendung zu verwenden. Siehe die .NET MAUI-Dokumentation. Es gibt zwei Möglichkeiten, das Braze SDK Binding einzuschließen: mit NuGet oder durch Kompilieren aus der Quelle.

Die einfachste Methode der Integration besteht darin, sich das Braze SDK aus dem zentralen NuGet.org-Repository zu holen. Klicken Sie in der Seitenleiste von Visual Studio mit der rechten Maustaste auf den Ordner Packages und dann auf Add Packages.... Suchen Sie nach „Braze“ und installieren Sie das Paket BrazePlatform.BrazeAndroidBinding in Ihr Projekt.

Um die Standortdienste und Geofences von Braze nutzen zu können, installieren Sie bitte auch das Paket BrazePlatform.BrazeAndroidLocationBinding.

Die zweite Methode besteht darin, die Binding-Quelle einzubeziehen. Unter appboy-component/src/androidnet6 finden Sie unseren Binding-Quellcode. Wenn Sie in Ihrer .NET MAUI-Anwendung eine Projektreferenz zu BrazeAndroidBinding.csproj hinzufügen, wird das Binding mit Ihrem Projekt erstellt und Sie erhalten Zugriff auf das Braze Android SDK.

Um die Standortdienste und Geofences von Braze zu nutzen, fügen Sie bitte auch eine Projektreferenz zu BrazeAndroidLocationBinding.csproj hinzu, die unter appboy-component/src/androidnet6/BrazeAndroidLocationBinding zu finden ist.

Eine .NET MAUI-Bindung ermöglicht die Verwendung nativer Bibliotheken in .NET MAUI-Apps. Die Implementierung eines Bindings besteht darin, eine C#-Schnittstelle zur Bibliothek zu erstellen und diese Schnittstelle dann in Ihrer Anwendung zu verwenden. Es gibt zwei Möglichkeiten, das Braze SDK Binding einzuschließen: mit NuGet oder durch Kompilieren aus der Quelle.

Die einfachste Methode der Integration besteht darin, sich das Braze SDK aus dem zentralen NuGet.org-Repository zu holen. Klicken Sie in der Seitenleiste von Visual Studio mit der rechten Maustaste auf den Ordner Packages und dann auf Add Packages.... Suchen Sie nach „Braze“ und installieren Sie die neuesten .NET MAUI iOS NuGet-Pakete: Braze.iOS.BrazeKit, Braze.iOS.BrazeUI und Braze.iOS.BrazeLocation in Ihrem Projekt.

Wir stellen auch die Pakete der Kompatibilitätsbibliotheken zur Verfügung: Braze.iOS.BrazeKitCompat und Braze.iOS.BrazeUICompat, um Ihnen die Migration zu .NET MAUI zu erleichtern.

Die zweite Methode besteht darin, die Binding-Quelle einzubeziehen. Unter appboy-component/src/iosnet6 finden Sie unseren Binding-Quellcode. Wenn Sie in Ihrer .NET MAUI-Anwendung eine Projektreferenz zu BrazeiOSBinding.csproj hinzufügen, wird das Binding mit Ihrem Projekt erstellt und Sie erhalten Zugriff auf das Braze iOS SDK. Stellen Sie sicher, dass BrazeiOSBinding.csproj im Ordner „Referenzen“ Ihres Projekts angezeigt wird.

Schritt 2: Konfigurieren Sie Ihre Braze-Instanz

Schritt 2.1: Konfigurieren Sie das Braze SDK in Braze.xml

Nachdem die Bibliotheken nun integriert wurden, müssen Sie eine Braze.xml-Datei im Resources/values-Ordner Ihres Projekts erstellen. Der Inhalt dieser Datei sollte dem folgenden Code-Snippet ähneln:

  <?xml version="1.0" encoding="utf-8"?>
  <resources>
    <string translatable="false" name="com_braze_api_key">YOUR_API_KEY</string>
    <string translatable="false" name="com_braze_custom_endpoint">YOUR_CUSTOM_ENDPOINT_OR_CLUSTER</string>
    <string-array name="com_braze_internal_sdk_metadata">
      <item>XAMARIN</item>
      <item>NUGET</item>
    </string-array>
  </resources>

Wenn Sie den Quellcode des Bindings manuell einbinden, entfernen Sie <item>NUGET</item> aus Ihrem Code.

Schritt 2.2: Erforderliche Berechtigungen zum Android-Manifest hinzufügen

Nachdem Sie den API-Schlüssel hinzugefügt haben, müssen Sie die folgenden Berechtigungen zur AndroidManifest.xml-Datei hinzufügen:

<uses-permission android:name="android.permission.INTERNET" />

Ein Beispiel für Ihre AndroidManifest.xml finden Sie in der Android MAUI Beispielanwendung.

Schritt 2.3: Tracking von Nutzer:innen-Sitzungen und Registrierung für In-App-Nachrichten

Um das Tracking von Nutzer:innen-Sitzungen zu aktivieren und Ihre App für In-App-Nachrichten zu registrieren, fügen Sie den folgenden Aufruf in die OnCreate()-Lebenszyklus-Methode der Klasse Application in Ihrer App ein:

RegisterActivityLifecycleCallbacks(new BrazeActivityLifecycleCallbackListener());

Wenn Sie Ihre Braze-Instanz einrichten, fügen Sie das folgende Snippet hinzu, um Ihre Instanz zu konfigurieren:

var configuration = new BRZConfiguration("YOUR_API_KEY", "YOUR_ENDPOINT");
configuration.Api.AddSDKMetadata(new[] { BRZSDKMetadata.Xamarin });
braze = new Braze(configuration);

Siehe die Datei App.xaml.cs in der iOS MAUI Beispielanwendung.

Schritt 3: Testen Sie die Integration

Jetzt können Sie Ihre Anwendung starten und sehen, wie die Sitzungen im Braze-Dashboard protokolliert werden (zusammen mit Geräteinformationen und anderen Analytics). Eine ausführlichere Erläuterung der Best Practices für die grundlegende SDK-Integration finden Sie in der Anleitung zur Android-Integration.

Jetzt können Sie Ihre Anwendung starten und sehen, wie die Sitzungen im Braze-Dashboard protokolliert werden. Eine ausführlichere Erläuterung der Best Practices für die grundlegende SDK-Integration finden Sie in der Anleitung zur iOS-Integration.

Integration der ChatGPT-App

Einrichtung

1. Schritt: Die Braze-Integrationsdatei herunterladen

Kopieren Sie die braze.js-Datei aus unserem ChatGPT-Apps-Integrations-Repository in Ihr Projekt. Diese Datei enthält alle erforderlichen Konfigurations- und Hilfsfunktionen für das Braze SDK.

2. Schritt: Abhängigkeiten installieren

Installieren Sie unser Web SDK, um die aktuellsten Features von Braze zu nutzen:

Für die clientseitige Integration:

npm install @braze/web-sdk

Implementierung

Es gibt zwei Möglichkeiten für die Integration von Braze in Ihre ChatGPT-App je nach Ihrem Anwendungsfall:

Clientseitige Integration (angepasste Widgets)

Um Braze-Nachrichten anzuzeigen und Benutzerinteraktionen innerhalb Ihrer angepassten ChatGPT-App-Widgets zu verfolgen, verwenden Sie bitte die Web-SDK-Integration. Ein vollständiges Beispiel für das Messaging finden Sie in unserem Beispiel-Repository hier.

Widget-Metadaten konfigurieren

Fügen Sie die folgenden Metadaten zu Ihrer MCP-Serverdatei hinzu, um Braze-Domains zulässig zu machen. Achten Sie dabei darauf, die CDN-Domain entsprechend Ihrer Region zu aktualisieren:

"openai/widgetCSP": {
  connect_domains: ["https://YOUR-SDK-ENDPOINT"],
  resource_domains: [
    "https://appboy-images.com",
    "https://braze-images.com",
    "https://cdn.braze.eu",
    "https://use.fontawesome.com"
  ],
}

Ersetzen Sie YOUR-SDK-ENDPOINT durch Ihren tatsächlichen Braze-SDK-Endpunkt.

Den useBraze-Hook einrichten

import { useBraze } from "./utils/braze";

function YourWidget() {
  const braze = useBraze({
    apiKey: "your-braze-api-key",
    baseUrl: "your-braze-endpoint.braze.com",
  });

  useEffect(() => {
    if (!braze.isInitialized) {
      return;
    }

    // Set user identity
    braze.changeUser("user-id-123");

    // Log widget interactions
    braze.logCustomEvent("viewed_pizzaz_list");
  }, [braze.isInitialized]);

  return (
    // Your widget JSX
  );
}

Braze Content Cards anzeigen

const [cards, setCards] = useState([]);

useEffect(() => {
  // Get cached content cards
  setCards(braze.getCachedContentCards()?.cards ?? []);

  // Subscribe to content card updates
  braze.subscribeToContentCardsUpdates((contentCards) => {
    setCards(contentCards.cards);
  });

  // Open session
  braze.openSession();

  return () => {
    braze.removeAllSubscriptions();
  }
}, []);

Widget-Events verfolgen

// Track user interactions within your widget
const handleButtonClick = () => {
  braze.logCustomEvent("widget_button_clicked", {
    button_type: "save_list",
    widget_name: "pizza_list"
  });
};

const handleItemInteraction = (itemId) => {
  braze.logCustomEvent("item_interacted", {
    item_id: itemId,
    interaction_type: "view_details"
  });
};

Serverseitige Integration (MCP-Server)

Sollten Sie auch eine serverseitige Integration für Messaging-Funktionen auf Ihrem MCP-Server benötigen, wenden Sie sich an [email protected]. Für das Tracking von Events und Käufen von Ihrem MCP-Server verwenden Sie unsere REST API.

Über das Braze Vega SDK

Mit dem Braze Vega SDK können Sie Analytics erfassen und Ihren Nutzer:innen vielfältige In-App-Nachrichten anzeigen. Die meisten Methoden im Braze Vega SDK sind asynchron und geben Promises zurück, auf die gewartet oder die aufgelöst werden sollten.

Das Braze Vega SDK integrieren

Schritt 1: Die Braze-Bibliothek installieren

Installieren Sie das Braze Vega SDK mit Ihrem bevorzugten Paketmanager.

Wenn Ihr Projekt NPM verwendet, können Sie das Braze Vega SDK als Abhängigkeit hinzufügen.

npm install @braze/vega-sdk --save

Nach der Installation können Sie die benötigten Methoden importieren:

import { initialize, changeUser, openSession } from "@braze/vega-sdk";

Wenn Ihr Projekt Yarn verwendet, können Sie das Braze Vega SDK als Abhängigkeit hinzufügen.

yarn add @braze/vega-sdk

Nach der Installation können Sie die benötigten Methoden importieren:

import { initialize, changeUser, openSession } from "@braze/vega-sdk";

Schritt 2: Das SDK initialisieren

Nachdem das Braze Vega SDK zu Ihrem Projekt hinzugefügt wurde, initialisieren Sie die Bibliothek mit dem API-Schlüssel und der SDK-Endpunkt-URL, die Sie im Braze-Dashboard unter Einstellungen > App-Einstellungen finden.

import { useEffect } from "react-native";
import {
  initialize,
  changeUser,
  logCustomEvent,
  openSession,
  setCustomUserAttribute,
  setUserCountry
} from "@braze/vega-sdk";

const App = () => {
  useEffect(() => {
    const initBraze = async () => {
      // Initialize the SDK
      await initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT", {
        sessionTimeoutInSeconds: 60,
        appVersionNumber: "1.2.3.4",
        enableLogging: true, // set to `true` for debugging
      });

      // Change user
      await changeUser("user-id-123");

      // Start a session
      await openSession();

      // Log custom events and set user attributes
      logCustomEvent("visited-page", { pageName: "home" });
      setCustomUserAttribute("my-attribute", "my-attribute-value");
      setUserCountry("USA");
    };

    initBraze();
  }, []);

  return (
    // Your app components
  );
};

Optionale Konfigurationen

Protokollierung

Sie können die SDK-Protokollierung aktivieren, um bei der Fehlersuche und Fehlerbehebung zu helfen. Es gibt mehrere Möglichkeiten, die Protokollierung zu aktivieren.

Protokollierung während der Initialisierung aktivieren

Übergeben Sie enableLogging: true an initialize(), um Debugging-Nachrichten in der Konsole zu protokollieren:

initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT", {
  enableLogging: true
});

Protokollierung nach der Initialisierung aktivieren

Verwenden Sie toggleLogging(), um die SDK-Protokollierung nach der Initialisierung zu aktivieren oder zu deaktivieren:

import { toggleLogging } from "@braze/vega-sdk";

// Enable logging
toggleLogging();

Angepasste Protokollierung

Verwenden Sie setLogger(), um eine angepasste Logger-Funktion bereitzustellen, mit der Sie mehr Kontrolle über die Verarbeitung von SDK-Protokollen haben:

import { setLogger } from "@braze/vega-sdk";

setLogger((message) => {
  console.log("Braze Custom Logger: " + message);
  // Add your custom logging logic here
});

Konfigurationsoptionen

Sie können zusätzliche Konfigurationsoptionen an initialize() übergeben, um das Verhalten des SDK anzupassen:

await initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT", {
  sessionTimeoutInSeconds: 60,        // Configure session timeout (default is 1800 seconds)
  appVersionNumber: "1.2.3.4",        // Set your app version
  enableLogging: true,                 // Enable SDK logging
});

Upgrade des SDK

Wenn Sie das Braze Vega SDK über NPM oder Yarn referenzieren, können Sie auf die neueste Version upgraden, indem Sie Ihre Paketabhängigkeit aktualisieren:

npm update @braze/vega-sdk
# or, using yarn:
yarn upgrade @braze/vega-sdk

Integration testen

So überprüfen Sie, ob Ihre SDK-Integration korrekt funktioniert:

  1. Initialisieren Sie das SDK mit enableLogging: true, um Debug-Nachrichten in der Konsole zu sehen.
  2. Stellen Sie sicher, dass Sie await changeUser() aufrufen, bevor Sie andere SDK-Methoden verwenden.
  3. Rufen Sie await openSession() auf, um eine Sitzung zu starten.
  4. Überprüfen Sie in Ihrem Braze-Dashboard unter Übersicht, ob die Sitzungsdaten aufgezeichnet werden.
  5. Testen Sie die Protokollierung eines angepassten Events und überprüfen Sie, ob es in Ihrem Dashboard angezeigt wird.
New Stuff!