Zum Inhalt springen

Ausführliche Protokolle lesen

Auf dieser Seite wird erläutert, wie die ausführliche Protokollausgabe des Braze SDK interpretiert werden kann. Für jeden Messaging-Kanal finden Sie die wichtigsten Protokolleinträge, deren Bedeutung und häufige Probleme, auf die Sie achten sollten.

Bevor Sie beginnen, stellen Sie sicher, dass Sie die ausführliche Protokollierung aktiviert haben und wissen, wie Sie Protokolle auf Ihrer Plattform erfassen können.

Sessions

Sessions bilden die Grundlage der Braze-Analytics und der Nachrichtenzustellung. Viele Messaging-Features – darunter In-App Messages und Content Cards – sind darauf angewiesen, dass eine gültige Session gestartet wird, bevor sie funktionieren können. Wenn Sessions nicht korrekt protokolliert werden, sollten Sie dies zuerst untersuchen. Weitere Informationen zur Aktivierung des Session-Trackings finden Sie unter Schritt 5: Nutzer:innen-Session-Tracking aktivieren.

Wichtige Log-Einträge

Session-Start:

Started user session (id: <SESSION_ID>)

Session-Ende:

Ended user session (id: <SESSION_ID>, duration: <DURATION>s)
Logged event:
- userId: <USER_ID>
- sessionId: <SESSION_ID>
- data: sessionEnd(duration: <DURATION>)

Session-Start:

Achten Sie auf die folgenden Einträge:

New session created with ID: <SESSION_ID>
Session start event for new session received
Completed the openSession call
Opened session with activity: <ACTIVITY_NAME>

Filtern Sie Netzwerkanfragen nach Ihrem konfigurierten Braze-Endpunkt (zum Beispiel sdk.iad-01.braze.com), um das Session-Start-Event (ss) zu sehen.

Session-Ende:

Closed session with activity: <ACTIVITY_NAME>
Closed session with session ID: <SESSION_ID>
Requesting data flush on internal session close flush timer.

Was Sie überprüfen sollten

  • Stellen Sie sicher, dass ein Session-Start-Log erscheint, wenn die App gestartet wird.
  • Wenn Sie keinen Session-Start sehen, überprüfen Sie, ob das SDK korrekt initialisiert ist und ob openSession (Android) aufgerufen wird.
  • Bestätigen Sie unter Android, dass eine Netzwerkanfrage an den Braze-Endpunkt gesendet wird. Wenn Sie diese nicht sehen, überprüfen Sie Ihren API-Schlüssel und die Endpunkt-Konfiguration.

Push-Benachrichtigungen

Push-Benachrichtigungsprotokolle helfen Ihnen zu überprüfen, ob Geräte-Token registriert sind, Benachrichtigungen zugestellt werden und Klick-Events getrackt werden.

Token-Registrierung

Wenn eine Sitzung beginnt, registriert das SDK das Push-Token des Geräts bei Braze.

Updated push notification authorization:
- authorization: authorized

Received remote notifications device token: <PUSH_TOKEN>

Filtern Sie nach Anfragen an Ihren konfigurierten Braze-Endpunkt (zum Beispiel sdk.iad-01.braze.com) und suchen Sie nach push_token in den Attributen des Anfragekörpers:

"attributes": [
  {
    "push_token": "<PUSH_TOKEN>",
    "user_id": "<USER_ID>"
  }
]

Bestätigen Sie außerdem, dass die Geräteinformationen Folgendes enthalten:

"device": {
  "ios_push_auth": "authorized",
  "remote_notification_enabled": 1
}

Suchen Sie nach dem FCM-Registrierungsprotokoll:

Registering for Firebase Cloud Messaging token using sender id: <SENDER_ID>

Überprüfen Sie Folgendes:

  • com_braze_firebase_cloud_messaging_registration_enabled ist true.
  • Die FCM-Sender-ID stimmt mit Ihrem Firebase-Projekt überein.

Ein häufiger Fehler ist SENDER_ID_MISMATCH, was bedeutet, dass die konfigurierte Sender-ID nicht mit Ihrem Firebase-Projekt übereinstimmt.

Was Sie überprüfen sollten

  • Wenn push_token im Anfragekörper fehlt, wurde das Token nicht erfasst. Überprüfen Sie die Push-Einrichtung in Ihrer App-Konfiguration.
  • Wenn ios_push_auth den Wert denied oder provisional anzeigt, hat die bzw. der Nutzer:in keine vollständige Push-Berechtigung erteilt.
  • Wenn auf Android SENDER_ID_MISMATCH angezeigt wird, aktualisieren Sie Ihre FCM-Sender-ID, damit sie mit Ihrem Firebase-Projekt übereinstimmt.

Push-Zustellung und Klick

Wenn eine Push-Benachrichtigung angetippt wird, protokolliert das SDK die Verarbeitung und Klick-Events.

Processing push notification:
- date: <TIMESTAMP>
- silent: false
- userInfo: {
  "ab": { ... },
  "ab_uri": "<DEEP_LINK_OR_URL>",
  "aps": {
    "alert": {
      "body": "<MESSAGE_BODY>",
      "title": "<MESSAGE_TITLE>"
    }
  }
}

Gefolgt vom Klick-Event:

Logged event:
- userId: <USER_ID>
- sessionId: <SESSION_ID>
- data: pushClick(campaignId: ...)

Wenn die Push-Benachrichtigung einen Deeplink enthält, sehen Sie außerdem:

Opening '<URL>':
- channel: notification
- useWebView: false
- isUniversalLink: false
BrazeFirebaseMessagingService: Got Remote Message from FCM

Gefolgt vom Push-Payload und den Anzeigeprotokollen. Für Deeplinks suchen Sie nach dem Deep Link Delegate oder den UriAction-Einträgen.

Was Sie überprüfen sollten

  • Überprüfen Sie, ob der Push-Payload den erwarteten title, body und etwaige Deeplinks (ab_uri) enthält.
  • Bestätigen Sie, dass nach dem Antippen ein pushClick-Event protokolliert wird.
  • Wenn das Klick-Event fehlt, prüfen Sie, ob Ihr App-Delegate oder Benachrichtigungs-Handler Push-Events korrekt an das Braze SDK weiterleitet.

In-App-Nachrichten

In-App-Nachrichten-Logs zeigen Ihnen den gesamten Lebenszyklus: Zustellung vom Server, Auslösung basierend auf Events, Anzeige, Impression-Protokollierung und Klick-Tracking.

Nachrichtenzustellung

Wenn Nutzer:innen eine Sitzung starten und für eine In-App-Nachricht infrage kommen, empfängt das SDK den Nachrichten-Payload vom Server.

Filtern Sie nach Antworten von Ihrem konfigurierten Braze-Endpunkt (z. B. sdk.iad-01.braze.com), die die In-App-Nachrichten-Daten enthalten.

Der Antwort-Body enthält den Nachrichten-Payload, einschließlich:

"templated_message": {
  "data": {
    "message": "...",
    "type": "HTML",
    "message_close": "SWIPE",
    "trigger_id": "<TRIGGER_ID>"
  },
  "type": "inapp"
}

Suchen Sie nach dem passenden Trigger-Event-Log:

Triggering action: <CAMPAIGN_BSON_ID>

Dies bestätigt, dass die In-App-Nachricht einem Trigger-Event zugeordnet wurde.

Nachrichtenanzeige und Impression

In-app message ready for display:
- triggerId: (campaignId: <CAMPAIGN_ID>, ...)
- extras: { ... }

Darauf folgt das Impression-Log:

Logged event:
- userId: <USER_ID>
- sessionId: <SESSION_ID>
- data: inAppMessageImpression(triggerIds: [...])
handleExistingInAppMessagesInStackWithDelegate:: Displaying in-app message

Klick- und Button-Events

Wenn Nutzer:innen auf einen Button tippen oder die Nachricht schließen:

Logged event:
- userId: <USER_ID>
- sessionId: <SESSION_ID>
- data: inAppMessageButtonClick(triggerIds: [...], buttonId: "<BUTTON_ID>")

Wenn keine weiteren getriggerten Nachrichten übereinstimmen, sehen Sie außerdem:

No matching trigger for event.

Dies ist erwartetes Verhalten, wenn keine zusätzlichen In-App-Nachrichten für das Event konfiguriert sind.

Filtern Sie nach Anfragen an Ihren konfigurierten Braze-Endpunkt (z. B. sdk.iad-01.braze.com) und suchen Sie im Anfrage-Body nach Events mit dem Namen sbc (Button-Klick) oder si (Impression).

Was Sie überprüfen sollten

  • Wenn die In-App-Nachricht nicht angezeigt wird, überprüfen Sie, ob zuerst ein Sitzungsstart protokolliert wurde.
  • Filtern Sie nach Antworten von Ihrem konfigurierten Braze-Endpunkt, um zu bestätigen, dass der Nachrichten-Payload zugestellt wurde.
  • Wenn Impressionen nicht protokolliert werden, überprüfen Sie, ob Sie einen benutzerdefinierten inAppMessageDisplay-Delegate implementiert haben, der die Protokollierung unterdrückt.
  • Wenn „No matching trigger for event“ erscheint, ist das normal und bedeutet, dass keine zusätzlichen In-App-Nachrichten für dieses Event konfiguriert sind.

Content Cards

Mithilfe von Content-Card-Protokollen können Sie überprüfen, ob Karten mit dem Gerät synchronisiert und den Nutzer:innen angezeigt werden und ob Interaktionen (Impressionen, Klicks, Ablehnungen) nachverfolgt werden.

Kartensynchronisierung

Content Cards werden zu Beginn der Sitzung und bei einer manuellen Aktualisierung synchronisiert. Wenn keine Sitzung protokolliert ist, werden keine Content Cards angezeigt.

Filtern Sie die Antworten von Ihrem konfigurierten Braze-Endpunkt (z. B. sdk.iad-01.braze.com), die die Kartendaten enthalten.

Der Antworttext enthält die Kartendaten, darunter:

"cards": [
  {
    "id": "<CARD_ID>",
    "tt": "<CARD_TITLE>",
    "ds": "<CARD_DESCRIPTION>",
    "tp": "short_news",
    "v": 0,
    "cl": 0,
    "p": 1
  }
]

Schlüsselfelder:

  • v (angesehen): 0 = nicht angesehen, 1 = angesehen
  • cl (angeklickt): 0 = nicht angeklickt, 1 = angeklickt
  • p (angeheftet): 0 = nicht angeheftet, 1 = angeheftet
  • tp (Typ): short_news, captioned_image, classic usw.
Requesting content cards sync.

Gefolgt von einer POST-Anfrage an Ihren konfigurierten Braze-Endpunkt (z. B. sdk.iad-01.braze.com), die Nutzer:innen- und Geräteinformationen enthält.

Impressionen, Klicks und Ablehnungen

Impression:

Logged event:
- userId: <USER_ID>
- sessionId: <SESSION_ID>
- data: contentCardImpression(cardIds: [...])

Klick:

Logged event:
- userId: <USER_ID>
- sessionId: <SESSION_ID>
- data: contentCardClick(cardIds: [...])

Wenn die Karte eine URL enthält, sehen Sie außerdem:

Opening '<URL>':
- channel: contentCard
- useWebView: true

Ablehnung:

Logged event:
- userId: <USER_ID>
- sessionId: <SESSION_ID>
- data: contentCardDismissed(cardIds: [...])

Filtern Sie Anfragen an Ihren konfigurierten Braze-Endpunkt (z. B. sdk.iad-01.braze.com) und suchen Sie nach Ereignisnamen im Anfragetext:

  • cci — Content-Card-Impression
  • ccc — Content-Card-Klick
  • ccd — Content Card abgelehnt

Was zu überprüfen ist

  • Keine Karten angezeigt: Überprüfen Sie, ob ein Sitzungsstart protokolliert wurde. Content Cards erfordern eine aktive Sitzung, um synchronisiert zu werden.
  • Fehlende Karten für neue Nutzer:innen: Neue Nutzer:innen sehen möglicherweise bei ihrer ersten Sitzung keine Content Cards bis zur nächsten Sitzung. Dies ist das erwartete Verhalten.
  • Karte überschreitet die Größenbeschränkung: Content Cards über 2 KB werden nicht angezeigt, und die Nachricht wird abgebrochen.
  • Karte bleibt nach Beendigung der Campaign bestehen: Überprüfen Sie, ob die Synchronisierung nach Beendigung der Campaign abgeschlossen wurde. Content Cards werden nach einer erfolgreichen Synchronisierung vom Gerät entfernt. Stellen Sie beim Beenden einer Campaign sicher, dass die Option zum Entfernen aktiver Karten aus den Feeds der Nutzer:innen ausgewählt ist.

Deeplink-Protokolle erscheinen kanalübergreifend bei Push-Benachrichtigungen, In-App-Nachrichten und Content Cards. Die Protokollstruktur ist unabhängig vom Quellkanal konsistent.

Wenn das SDK einen Deeplink verarbeitet:

Opening '<DEEP_LINK_URL>':
- channel: <SOURCE_CHANNEL>
- useWebView: false
- isUniversalLink: false
- extras: { ... }

Dabei ist <SOURCE_CHANNEL> einer der folgenden Werte: notification, inAppMessage oder contentCard.

Suchen Sie für Deeplinks nach den Einträgen Deep Link Delegate oder UriAction in Logcat. Um die Deeplink-Auflösung unabhängig zu testen, führen Sie den folgenden Befehl aus:

adb shell am start -W -a android.intent.action.VIEW -d "<YOUR_DEEP_LINK>" "<YOUR_PACKAGE_NAME>"

Damit wird bestätigt, ob der Deeplink außerhalb des Braze SDK korrekt aufgelöst wird.

Worauf Sie achten sollten

  • Überprüfen Sie, ob die Deeplink-URL mit der in der Campaign konfigurierten URL übereinstimmt.
  • Wenn der Deeplink über einen Kanal (z. B. Push) funktioniert, aber über einen anderen nicht (z. B. Content Cards), prüfen Sie, ob Ihre Deeplink-Verarbeitungsimplementierung alle Kanäle unterstützt.
  • Unter iOS erfordern Universal Links eine zusätzliche Verarbeitung. Wenn Universal Links über Braze-Kanäle nicht funktionieren, stellen Sie sicher, dass Ihre App das BrazeDelegate-Protokoll für die URL-Verarbeitung implementiert.
  • Unter Android prüfen Sie, ob die automatische Deeplink-Verarbeitung deaktiviert ist, wenn Sie einen benutzerdefinierten Handler verwenden. Andernfalls kann der Standard-Handler mit Ihrer Implementierung in Konflikt geraten.

Nutzer:innen-Identifizierung

Wenn ein:e Nutzer:in mit einer external_id identifiziert wird, protokolliert das SDK ein Change-User-Event.

changeUser called with: <EXTERNAL_ID>

Wichtige Hinweise:

  • Rufen Sie changeUser auf, sobald sich der/die Nutzer:in anmeldet – je früher, desto besser.
  • Wenn sich ein:e Nutzer:in abmeldet, gibt es keine Möglichkeit, changeUser aufzurufen, um ihn/sie wieder zu einem/einer anonymen Nutzer:in zurückzusetzen.
  • Wenn Sie keine anonymen Nutzer:innen möchten, rufen Sie changeUser beim Sitzungsstart oder beim App-Start auf.

Filtern Sie nach Anfragen an Ihren konfigurierten Braze-Endpunkt (zum Beispiel sdk.iad-01.braze.com) und suchen Sie im Anfragekörper nach der Nutzer:innen-Identifizierung:

"user_id": "<EXTERNAL_ID>"

Netzwerk-Anfragen

Ausführliche Protokolle enthalten vollständige HTTP-Anfrage- und Antwortdetails für die SDK-Kommunikation mit Braze-Servern. Diese sind nützlich für die Diagnose von Verbindungsproblemen.

Anfragestruktur

Filtern Sie nach Anfragen an Ihren konfigurierten Braze-Endpunkt (z. B. sdk.iad-01.braze.com). Die Anfragestruktur umfasst:

[http] request POST: <YOUR_BRAZE_ENDPOINT>
- Headers:
  - Content-Type: application/json
  - X-Braze-Api-Key: <REDACTED>
  - X-Braze-Req-Attempt: 1
  - X-Braze-Req-Tokens-Remaining: <COUNT>
- Body: { ... }
Making request(id = <REQUEST_ID>) to <YOUR_BRAZE_ENDPOINT>

Was Sie prüfen sollten

  • API-Schlüssel: Überprüfen Sie, ob XBraze-ApiKey mit dem API-Schlüssel Ihres Workspace übereinstimmt.
  • Endpunkt: Bestätigen Sie, dass die Anfrage-URL mit Ihrem konfigurierten SDK-Endpunkt übereinstimmt.
  • Wiederholungsversuche: XBraze-Req-Attempt größer als 1 zeigt an, dass das SDK eine fehlgeschlagene Anfrage erneut versucht, was auf Verbindungsprobleme hindeuten kann.
  • Rate-Limiting: XBraze-Req-Tokens-Remaining zeigt die verbleibenden Anfrage-Token an. Ein niedriger Wert kann darauf hinweisen, dass das SDK die Rate-Limits erreicht.
  • Fehlende Anfragen: Wenn Sie auf Android nach dem Sitzungsstart keine Anfrage an den Braze-Endpunkt sehen, überprüfen Sie Ihren API-Schlüssel und die Endpunkt-Konfiguration.

Häufige Event-Abkürzungen

In ausführlichen Log-Payloads verwendet Braze abgekürzte Event-Namen. Hier ist eine Übersicht:

Abkürzung Event
ss Session-Start
se Session-Ende
si In-App-Nachricht-Impression
sbc In-App-Nachricht-Button-Klick
cci Content-Card-Impression
ccc Content-Card-Klick
ccd Content-Card abgelehnt
lr Standort erfasst

Fehlerbehebung

Geofences werden auf Android SDK 13.1.0–15.x nicht ausgelöst

Das Braze Android SDK 13.1.0 bis 15.x hatte eine Regression, die dazu führen konnte, dass Geofence-Update-Events nicht aufgezeichnet wurden. Auf Geräten mit Android 10 oder älter konnten auch Standortaktualisierungen beim Sitzungsstart fehlschlagen. Führen Sie ein Upgrade auf Android SDK 16.0.0 oder höher durch. Informationen zur SDK-Einrichtung finden Sie unter Geofences.

Wann kann ein:e Nutzer:in 0 Sitzungen in ihrem Profil aufweisen?

Ein Nutzerprofil kann 0 Sitzungen anzeigen, wenn Sie den/die Nutzer:in über die REST API (/users/track) oder einen CSV-Import ohne die Felder First session oder Last session importieren. Sitzungen werden aufgezeichnet, wenn Nutzer:innen über das SDK mit Ihrer App interagieren. Weitere Details finden Sie unter Nutzerprofil hat 0 Sitzungen.

Diskrepanzen bei Nutzerdaten bei gleichzeitiger Verwendung von SDK und REST API

Wenn Sie das SDK und die REST API gleichzeitig verwenden, können Race-Conditions zu Datendiskrepanzen führen. Nachdem Sie changeUser() aufgerufen haben, lassen Sie das SDK ausstehende Daten senden, bevor Sie kritische REST-API-Aufrufe durchführen. Vermeiden Sie die Stapelverarbeitung zeitkritischer Updates und erwägen Sie, eine kurze Verzögerung zwischen SDK- und API-Anfragen einzufügen. Informationen zum Verhalten von changeUser() finden Sie unter Wie changeUser() funktioniert.

Daten erreichen Braze nicht

Wenn Daten Braze nicht erreichen, stellen Sie sicher, dass Ihre Firewall ausgehenden Datenverkehr zu Braze-API-Endpunkten und CDN-Anbietern zulässt. Führen Sie einen MTR-Test durch und verwenden Sie Fastly Debug, während das Problem auftritt. Informationen zu Allowlisting und Fehlerbehebung bei der Konnektivität finden Sie unter API-Netzwerkverbindungsprobleme.

New Stuff!