Sitzungen verfolgen
Erfahren Sie, wie Sie Sitzungen über das Braze SDK tracken können.

Für Wrapper-SDKs, die nicht aufgeführt sind, verwenden Sie stattdessen die entsprechende native Android- oder Swift-Methode.
Über den Lebenszyklus einer Sitzung
Eine Sitzung referenziert den Zeitraum, in dem das Braze SDK die Aktivitäten der Nutzer:in Ihrer App nach deren Start verfolgt. Sie können auch eine neue Sitzung erzwingen, indem Sie die Methode changeUser() aufrufen.
Standardmäßig beginnt eine Sitzung, wenn Sie braze.openSession() zum ersten Mal aufrufen. Die Sitzung bleibt bis zu 30 Minuten der Inaktivität aktiv (es sei denn, Sie ändern den Standard-Timeout für die Sitzung oder der Nutzer:innen schließt die App.

Wenn Sie den Aktivitätslebenszyklus-Callback für Android eingerichtet haben, ruft Braze automatischopenSession() undcloseSession() für jede Aktivität in Ihrer App auf.
Standardmäßig wird eine Sitzung gestartet, wenn openSession() zum ersten Mal aufgerufen wird. Wenn Ihre App in den Hintergrund wechselt und anschließend wieder in den Vordergrund zurückkehrt, überprüft das SDK, ob seit Beginn der Sitzung mehr als 10 Sekunden vergangen sind (es sei denn, Sie ändern die Standard-Sitzungszeitüberschreitung). In diesem Fall wird eine neue Sitzung beginnen. Wenn der Nutzer:innen Ihre App schließt, während sie im Hintergrund läuft, werden die Daten der Sitzung möglicherweise erst dann an Braze gesendet, wenn er die App erneut öffnet.
Wenn Sie closeSession() aufrufen, wird die Sitzung nicht sofort beendet. Stattdessen wird die Sitzung nach 10 Sekunden beendet, wenn openSession() nicht erneut vom Nutzer:innen aufgerufen wird, der eine andere Aktivität startet.
Standardmäßig beginnt eine Sitzung, wenn Sie Braze.init(configuration:) aufrufen. Dies geschieht, wenn die Benachrichtigung UIApplicationWillEnterForegroundNotification getriggert wird, was bedeutet, dass die App in den Vordergrund getreten ist.
Wenn Ihre App in den Hintergrund wechselt,UIApplicationDidEnterBackgroundNotificationwird getriggert. Die App bleibt im Hintergrund nicht in einer aktiven Sitzung. Wenn Ihre App wieder in den Vordergrund rückt, vergleicht das SDK die seit Beginn der Sitzung verstrichene Zeit mit dem Zeitlimit für die Sitzung (es sei denn, Sie ändern das Standard-Zeitlimit für die Sitzung). Wenn die seit Beginn der Sitzung verstrichene Zeit die Zeitüberschreitung überschreitet, wird eine neue Sitzung gestartet.
Definition von Inaktivität
Das Verständnis, wie Inaktivität definiert und gemessen wird, ist entscheidend für die effektive Verwaltung von Sitzungslebenszyklen im Web SDK. Inaktivität bezeichnet einen Zeitraum, in dem das Braze Web SDK keine getrackten Events von Nutzer:innen erkennt.
Wie Inaktivität gemessen wird
Das Web SDK trackt Inaktivität auf der Grundlage von SDK-getrackten Events. Das SDK verfügt über einen internen Timer, der bei jedem Senden eines getrackten Events zurückgesetzt wird. Wenn innerhalb des konfigurierten Timeout-Zeitraums keine vom SDK getrackten Events auftreten, wird die Sitzung als inaktiv betrachtet und beendet.
Weitere Informationen zur Implementierung des Sitzungslebenszyklus im Web SDK finden Sie im Quellcode für die Sitzungsverwaltung im GitHub-Repository des Braze Web SDK.
Was standardmäßig als Aktivität zählt:
- Öffnen oder Aktualisieren der Web-App
- Interaktion mit Braze-gesteuerten UI-Elementen (wie In-App-Nachrichten oder Content Cards)
- Aufruf von SDK-Methoden, die getrackte Events senden (z. B. angepasste Events oder Updates von Nutzerattributen)
Was standardmäßig nicht als Aktivität zählt:
- Wechseln zu einem anderen Browser-Tab
- Minimieren des Browserfensters
- Browser-Fokus- oder Blur-Events
- Scrollen oder Mausbewegungen auf der Seite

Das Web SDK trackt nicht automatisch Änderungen der Browser-Sichtbarkeit, Tab-Wechsel oder den Nutzerfokus. Sie können diese Interaktionen auf Browser-Ebene jedoch tracken, indem Sie angepasste Event-Listener mithilfe der Page Visibility API des Browsers implementieren und angepasste Events an Braze senden. Ein Beispiel für die Implementierung finden Sie unter Tracking angepasster Inaktivität.
Konfiguration des Sitzungs-Timeouts
Standardmäßig betrachtet das Web SDK eine Sitzung nach 30 Minuten ohne getrackte Events als inaktiv. Sie können diesen Schwellenwert bei der Initialisierung des SDK mithilfe des Parameters sessionTimeoutInSeconds anpassen. Ausführliche Informationen zur Konfiguration dieses Parameters, einschließlich Code-Beispielen, finden Sie unter Ändern des Standard-Sitzungs-Timeouts.
Beispiel: Szenarien der Inaktivität verstehen
Betrachten Sie das folgende Szenario:
- Ein:e Nutzer:in öffnet Ihre Website, und das SDK startet eine Sitzung, indem es
braze.openSession()aufruft. - Der/die Nutzer:in wechselt für 30 Minuten zu einem anderen Browser-Tab, um eine andere Website aufzurufen.
- Während dieser Zeit werden auf Ihrer Website keine SDK-getrackten Events erfasst.
- Nach 30 Minuten Inaktivität wird die Sitzung automatisch beendet.
- Wenn der/die Nutzer:in zurück zum Tab Ihrer Website wechselt und ein SDK-Event triggert (z. B. das Anzeigen einer Seite oder die Interaktion mit Inhalten), beginnt eine neue Sitzung.
Tracking angepasster Inaktivität
Sollten Sie Inaktivität basierend auf der Sichtbarkeit des Browsers oder dem Tab-Wechsel tracken müssen, implementieren Sie angepasste Event-Listener in Ihrem JavaScript-Code. Verwenden Sie Browser-Events wie visibilitychange, um zu erkennen, wann Nutzer:innen Ihre Seite verlassen, und senden Sie manuell angepasste Events an Braze oder rufen Sie braze.openSession() auf, wenn dies angemessen ist.
1
2
3
4
5
6
7
8
9
10
11
// Example: Track when user switches away from tab
document.addEventListener('visibilitychange', function() {
if (document.hidden) {
// User switched away - optionally log a custom event
braze.logCustomEvent('tab_hidden');
} else {
// User returned - optionally start a new session and/or log an event
// braze.openSession();
braze.logCustomEvent('tab_visible');
}
});
Weitere Informationen zum Protokollieren angepasster Events finden Sie unter Angepasste Events protokollieren. Weitere Informationen zum Sitzungslebenszyklus und zur Timeout-Konfiguration finden Sie unter Ändern des Standard-Sitzungs-Timeouts.
Sitzungs-Updates abonnieren
1. Schritt: Updates abonnieren
Um Sitzungs-Updates zu abonnieren, verwenden Sie die Methode subscribeToSessionUpdates().
Derzeit wird das Abonnieren von Sitzungs-Updates für das Braze Web SDK nicht unterstützt.
1
2
3
4
5
6
7
8
Braze.getInstance(this).subscribeToSessionUpdates(new IEventSubscriber<SessionStateChangedEvent>() {
@Override
public void trigger(SessionStateChangedEvent message) {
if (message.getEventType() == SessionStateChangedEvent.ChangeType.SESSION_STARTED) {
// A session has just been started
}
}
});
1
2
3
4
5
Braze.getInstance(this).subscribeToSessionUpdates { message ->
if (message.eventType == SessionStateChangedEvent.ChangeType.SESSION_STARTED) {
// A session has just been started
}
}
Wenn Sie einen Callback für das Sitzungsende registrieren, wird dieser ausgelöst, wenn die App in den Vordergrund zurückkehrt. Die Sitzungsdauer wird ab dem Öffnen oder In-den-Vordergrund-Bringen der App bis zum Schließen oder In-den-Hintergrund-Wechseln gemessen.
1
2
3
4
5
6
7
8
9
10
11
// This subscription is maintained through a Braze cancellable, which will observe changes until the subscription is cancelled.
// You must keep a strong reference to the cancellable to keep the subscription active.
// The subscription is canceled either when the cancellable is deinitialized or when you call its `.cancel()` method.
let cancellable = AppDelegate.braze?.subscribeToSessionUpdates { event in
switch event {
case .started(let id):
print("Session \(id) has started")
case .ended(let id):
print("Session \(id) has ended")
}
}
Um einen asynchronen Stream zu abonnieren, können Sie stattdessen sessionUpdatesStream verwenden.
1
2
3
4
5
6
7
8
for await event in braze.sessionUpdatesStream {
switch event {
case .started(let id):
print("Session \(id) has started")
case .ended(let id):
print("Session \(id) has ended")
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// This subscription is maintained through a Braze cancellable, which will observe changes until the subscription is cancelled.
// You must keep a strong reference to the cancellable to keep the subscription active.
// The subscription is canceled either when the cancellable is deinitialized or when you call its `.cancel()` method.
BRZCancellable *cancellable = [AppDelegate.braze subscribeToSessionUpdates:^(BRZSessionEvent * _Nonnull event) {
switch (event.state) {
case BRZSessionStateStarted:
NSLog(@"Session %@ has started", event.sessionId);
break;
case BRZSessionStateEnded:
NSLog(@"Session %@ has ended", event.sessionId);
break;
default:
break;
}
}];
Das React Native SDK stellt keine Methode zur Verfügung, um Sitzungs-Updates direkt zu abonnieren. Der Sitzungslebenszyklus wird vom zugrunde liegenden nativen SDK verwaltet. Um Updates zu abonnieren, verwenden Sie den nativen Plattformansatz für den Tab Android oder Swift.
2. Schritt: Sitzungs-Tracking testen (optional)
Um das Sitzungs-Tracking zu testen, starten Sie eine Sitzung auf Ihrem Gerät, öffnen Sie dann das Braze-Dashboard und suchen Sie nach dem/der entsprechenden Nutzer:in. Wählen Sie in dessen/deren Nutzerprofil die Sitzungsübersicht aus. Wenn die Metriken wie erwartet aktualisiert werden, funktioniert das Sitzungs-Tracking korrekt.


App-spezifische Details werden nur für Nutzer:innen angezeigt, die mehr als eine App verwendet haben.
Ändern des Standard-Sitzungs-Timeouts
Sie können die Zeitspanne ändern, die vergeht, bevor eine Sitzung automatisch beendet wird.
Standardmäßig ist das Sitzungs-Timeout auf 30 Minuten eingestellt. Um dies zu ändern, übergeben Sie die Option sessionTimeoutInSeconds an Ihre initialize-Funktion. Der Wert kann auf eine beliebige ganze Zahl größer oder gleich 1 gesetzt werden.
1
2
// Sets the session timeout to 15 minutes instead of the default 30
braze.initialize('YOUR-API-KEY-HERE', { sessionTimeoutInSeconds: 900 });
Standardmäßig ist das Sitzungs-Timeout auf 10 Sekunden eingestellt. Um dies zu ändern, öffnen Sie Ihre Datei braze.xml und fügen Sie den Parameter com_braze_session_timeout hinzu. Der Wert kann auf eine beliebige ganze Zahl größer oder gleich 1 gesetzt werden.
1
2
<!-- Sets the session timeout to 60 seconds. -->
<integer name="com_braze_session_timeout">60</integer>
Standardmäßig ist das Sitzungs-Timeout auf 10 Sekunden eingestellt. Um dies zu ändern, setzen Sie sessionTimeout in dem configuration-Objekt, das an init(configuration) übergeben wird. Der Wert kann auf eine beliebige ganze Zahl größer oder gleich 1 gesetzt werden.
1
2
3
4
5
6
7
8
// Sets the session timeout to 60 seconds
let configuration = Braze.Configuration(
apiKey: "<BRAZE_API_KEY>",
endpoint: "<BRAZE_ENDPOINT>"
)
configuration.sessionTimeout = 60;
let braze = Braze(configuration: configuration)
AppDelegate.braze = braze
1
2
3
4
5
6
7
// Sets the session timeout to 60 seconds
BRZConfiguration *configuration =
[[BRZConfiguration alloc] initWithApiKey:brazeApiKey
endpoint:brazeEndpoint];
configuration.sessionTimeout = 60;
Braze *braze = [[Braze alloc] initWithConfiguration:configuration];
AppDelegate.braze = braze;
Das React Native SDK stützt sich auf die nativen SDKs, um Sitzungen zu verwalten. Um das Standard-Sitzungs-Timeout zu ändern, konfigurieren Sie es in der nativen Ebene:
- Android: Setzen Sie
com_braze_session_timeoutin Ihrerbraze.xml-Datei. Für weitere Informationen wählen Sie den Tab Android. - iOS: Setzen Sie
sessionTimeoutin IhremBraze.Configuration-Objekt. Für weitere Informationen wählen Sie den Tab Swift.

Wenn Sie ein Sitzungs-Timeout festlegen, werden alle Sitzungssemantiken automatisch auf das festgelegte Timeout erweitert.
Fehlerbehebung
Nutzerprofil zeigt 0 Sitzungen
Ein Nutzerprofil kann 0 Sitzungen aufweisen, wenn der/die Nutzer:in außerhalb des SDK erstellt wurde:
- Über REST API erstellt: Wenn ein:e Nutzer:in über den Endpunkt
/users/trackmit einerapp_idin der Anfrage erstellt wird, erscheint das Profil zwar mit dieser App verknüpft, hat aber keine Sitzungsdaten, da das SDK für diese:n Nutzer:in nie initialisiert wurde. - Über CSV-Import erstellt: Wenn ein:e Nutzer:in per CSV ohne Werte für die Felder der ersten oder letzten Sitzung importiert wird, existiert das Profil mit 0 Sitzungen.
Einige Nutzer:innen protokollieren keine Sitzungen
Da Sitzungen erst nach der Initialisierung des SDK getrackt werden, protokollieren Nutzer:innen, die die SDK-Initialisierung nicht auslösen, keine Sitzungen. Dies geschieht typischerweise, wenn Ihre App bedingte Logik vor der Initialisierung des SDK verwendet, z. B. eine verzögerte Initialisierung hinter einem Anmeldevorgang, einer Einwilligungsabfrage oder einem Feature-Flag. Hinweise zur Implementierung finden Sie unter Verzögerte Initialisierung. In diesen Fällen startet kein:e Nutzer:in, der/die die Bedingung nicht erfüllt, jemals eine Sitzung.
Wenn einige Nutzer:innen Sitzungen protokollieren und andere nicht, überprüfen Sie Folgendes:
- Überprüfen Sie Ihre Initialisierungslogik. Stellen Sie sicher, dass das SDK für alle Nutzer:innen und App-Einstiegspunkte initialisiert wird, nicht nur für einige.
- Suchen Sie nach kürzlichen App-Änderungen. Neue bedingte Logik rund um die SDK-Initialisierung kann zu einem plötzlichen Rückgang der Sitzungszahlen führen.
- Vergleichen Sie betroffene und nicht betroffene Nutzer:innen. Identifizieren Sie Unterschiede in der App-Version, dem Gerätetyp oder dem Nutzerfluss, die erklären könnten, warum die Initialisierung für bestimmte Nutzer:innen übersprungen wird.
Wenn das Problem nach der Überprüfung Ihrer Implementierung weiterhin besteht, reproduzieren Sie das Problem und sammeln Sie die folgenden Informationen, bevor Sie den Support kontaktieren:
- Schritte zur Reproduktion des Problems
- Die betroffene App-Version
- Ausführliche SDK-Logs, die während des Auftretens des Problems erfasst wurden (oder nach Plattform: Android, Swift, Web)
- Das Code-Snippet für die SDK-Initialisierung
- Eine Zusammenfassung jeder bedingten Logik, die vor der Initialisierung angewendet wird