Lendo logs verbosos
Esta página explica como interpretar a saída de logs verbosos do SDK da Braze. Para cada canal de envio de mensagens, você encontrará as entradas de log principais, o que elas significam e problemas comuns a serem observados.
Antes de começar, certifique-se de que você ativou o registro verboso e sabe como coletar logs na sua plataforma.
Sessões
As sessões são a base da análise de dados e da entrega de mensagens da Braze. Muitos recursos de envio de mensagens — incluindo In-App Messages e Content Cards — dependem de uma sessão válida para funcionar. Se as sessões não estiverem sendo registradas corretamente, investigue isso primeiro. Para saber mais sobre como ativar o rastreamento de sessões, consulte Etapa 5: Ativar o rastreamento de sessão do usuário.

Comece a solução de problemas do SDK pelas sessões. Se as sessões não estiverem sendo registradas, In-App Messages, Content Cards e muitos eventos de análise de dados não funcionarão conforme esperado. Depois de confirmar as entradas de início/fim de sessão, revise as linhas de eventos personalizados na mesma captura de log. Consulte Registro detalhado para ativar o registro e coletar uma exportação compartilhável.
Entradas de log principais
Início da sessão:
Started user session (id: <SESSION_ID>)
Fim da sessão:
Ended user session (id: <SESSION_ID>, duration: <DURATION>s)
Logged event:
- userId: <USER_ID>
- sessionId: <SESSION_ID>
- data: sessionEnd(duration: <DURATION>)
Início da sessão:
Procure pelas seguintes entradas:
New session created with ID: <SESSION_ID>
Session start event for new session received
Completed the openSession call
Opened session with activity: <ACTIVITY_NAME>
Filtre as requisições de rede pelo endpoint configurado da Braze (por exemplo, sdk.iad-01.braze.com) para ver o evento de início de sessão (ss).
Fim da sessão:
Closed session with activity: <ACTIVITY_NAME>
Closed session with session ID: <SESSION_ID>
Requesting data flush on internal session close flush timer.
O que verificar
- Verifique se um log de início de sessão aparece quando o app é iniciado.
- Se você não vir um início de sessão, verifique se o SDK foi inicializado corretamente e se o
openSession(Android) está sendo chamado. - No Android, confirme se uma requisição de rede está sendo feita para o endpoint da Braze. Se você não vir essa requisição, verifique a configuração da sua chave de API e do endpoint.
Notificações por push
Os registros de notificações por push ajudam a verificar se os tokens de dispositivo estão registrados, se as notificações estão sendo entregues e se os eventos de clique estão sendo rastreados.
Registro de token
Quando uma sessão é iniciada, o SDK registra o token por push do dispositivo na Braze.
Updated push notification authorization:
- authorization: authorized
Received remote notifications device token: <PUSH_TOKEN>
Filtre as solicitações para o endpoint da Braze configurado (por exemplo, sdk.iad-01.braze.com) e procure por push_token nos atributos do corpo da solicitação:
"attributes": [
{
"push_token": "<PUSH_TOKEN>",
"user_id": "<USER_ID>"
}
]
Confirme também que as informações do dispositivo incluem:
"device": {
"ios_push_auth": "authorized",
"remote_notification_enabled": 1
}
Procure o registro de registro do FCM:
Registering for Firebase Cloud Messaging token using sender id: <SENDER_ID>
Verifique o seguinte:
com_braze_firebase_cloud_messaging_registration_enabledestá definido comotrue.- O ID do remetente FCM corresponde ao seu projeto Firebase.
Um erro comum é SENDER_ID_MISMATCH, que significa que o ID do remetente configurado não corresponde ao seu projeto Firebase.
O que verificar
- Se
push_tokenestiver ausente do corpo da solicitação, o token não foi capturado. Verifique a configuração de push na configuração do seu app. - Se
ios_push_authmostrardeniedouprovisional, o usuário não concedeu permissão total de push. - No Android, se você vir
SENDER_ID_MISMATCH, atualize o ID do remetente FCM para corresponder ao seu projeto Firebase.
Entrega e clique de push
Quando uma notificação por push é tocada, o SDK registra os eventos de processamento e clique.
Processing push notification:
- date: <TIMESTAMP>
- silent: false
- userInfo: {
"ab": { ... },
"ab_uri": "<DEEP_LINK_OR_URL>",
"aps": {
"alert": {
"body": "<MESSAGE_BODY>",
"title": "<MESSAGE_TITLE>"
}
}
}
Seguido pelo evento de clique:
Logged event:
- userId: <USER_ID>
- sessionId: <SESSION_ID>
- data: pushClick(campaignId: ...)
Se o push contiver um deep link, você também verá:
Opening '<URL>':
- channel: notification
- useWebView: false
- isUniversalLink: false
BrazeFirebaseMessagingService: Got Remote Message from FCM
Seguido pela carga útil do push e registros de exibição. Para deep links, procure as entradas de Deep Link Delegate ou UriAction.
O que verificar
- Verifique se a carga útil do push contém o
title,bodye quaisquer deep links (ab_uri) esperados. - Confirme que um evento
pushClické registrado após o toque. - Se o evento de clique estiver ausente, verifique se o app delegate ou o manipulador de notificações está encaminhando corretamente os eventos de push para o SDK da Braze.
Mensagens no app
Os logs de mensagens no app mostram o ciclo de vida completo: entrega do servidor, disparo com base em eventos, exibição, registro de impressão e rastreamento de cliques.
Entrega da mensagem
Quando um usuário inicia uma sessão e é elegível para uma mensagem no app, o SDK recebe a carga útil da mensagem do servidor.
Filtre as respostas do seu endpoint da Braze configurado (por exemplo, sdk.iad-01.braze.com) que contenham os dados da mensagem no app.
O corpo da resposta contém a carga útil da mensagem, incluindo:
"templated_message": {
"data": {
"message": "...",
"type": "HTML",
"message_close": "SWIPE",
"trigger_id": "<TRIGGER_ID>"
},
"type": "inapp"
}
Procure o log de correspondência do evento-gatilho:
Triggering action: <CAMPAIGN_BSON_ID>
Isso confirma que a mensagem no app foi associada a um evento-gatilho.
Exibição e impressão da mensagem
In-app message ready for display:
- triggerId: (campaignId: <CAMPAIGN_ID>, ...)
- extras: { ... }
Seguido pelo log de impressão:
Logged event:
- userId: <USER_ID>
- sessionId: <SESSION_ID>
- data: inAppMessageImpression(triggerIds: [...])
handleExistingInAppMessagesInStackWithDelegate:: Displaying in-app message
Eventos de clique e botão
Quando um usuário toca em um botão ou fecha a mensagem:
Logged event:
- userId: <USER_ID>
- sessionId: <SESSION_ID>
- data: inAppMessageButtonClick(triggerIds: [...], buttonId: "<BUTTON_ID>")
Se nenhuma mensagem disparada adicional corresponder, você também verá:
No matching trigger for event.
Esse é o comportamento esperado quando não há mensagens no app adicionais configuradas para o evento.
Filtre as requisições para o seu endpoint da Braze configurado (por exemplo, sdk.iad-01.braze.com) e procure eventos com o nome sbc (clique no botão) ou si (impressão) no corpo da requisição.
O que verificar
- Se a mensagem no app não for exibida, verifique se um início de sessão foi registrado primeiro.
- Filtre as respostas do seu endpoint da Braze configurado para confirmar que a carga útil da mensagem foi entregue.
- Se as impressões não estiverem sendo registradas, verifique se você não implementou um delegate personalizado
inAppMessageDisplayque suprime o registro. - Se “No matching trigger for event” aparecer, isso é normal e indica que não há mensagens no app adicionais configuradas para esse evento.
Content Cards
Os logs de Content Cards ajudam você a verificar se os cartões estão sincronizados com o dispositivo, exibidos para o usuário e que as interações (impressões, cliques, dispensas) estão sendo rastreadas.
Sincronização do cartão
Os Content Cards são sincronizados no início da sessão e quando uma atualização manual é solicitada. Se nenhuma sessão for registrada, nenhum Content Card será exibido.
Filtre as respostas do seu endpoint da Braze configurado (por exemplo, sdk.iad-01.braze.com) contendo os dados do cartão.
O corpo da resposta contém os dados do cartão, incluindo:
"cards": [
{
"id": "<CARD_ID>",
"tt": "<CARD_TITLE>",
"ds": "<CARD_DESCRIPTION>",
"tp": "short_news",
"v": 0,
"cl": 0,
"p": 1
}
]
Campos principais:
v(visualizado):0= não visualizado,1= visualizadocl(clicado):0= não clicado,1= clicadop(fixado):0= não fixado,1= fixadotp(tipo):short_news,captioned_image,classic, etc.
Requesting content cards sync.
Seguido por uma solicitação POST para o seu endpoint da Braze configurado (por exemplo, sdk.iad-01.braze.com) contendo informações do usuário e do dispositivo.
Impressões, cliques e dispensas
Impressão:
Logged event:
- userId: <USER_ID>
- sessionId: <SESSION_ID>
- data: contentCardImpression(cardIds: [...])
Clique:
Logged event:
- userId: <USER_ID>
- sessionId: <SESSION_ID>
- data: contentCardClick(cardIds: [...])
Se o cartão tiver uma URL, você também verá:
Opening '<URL>':
- channel: contentCard
- useWebView: true
Dispensa:
Logged event:
- userId: <USER_ID>
- sessionId: <SESSION_ID>
- data: contentCardDismissed(cardIds: [...])
Filtre as solicitações para o seu endpoint da Braze configurado (por exemplo, sdk.iad-01.braze.com) e procure nomes de eventos no corpo da solicitação:
cci— impressão de Content Cardccc— clique em Content Cardccd— Content Card dispensado
O que verificar
- Nenhum cartão exibido: Verifique se o início da sessão está registrado. Content Cards requerem uma sessão ativa para sincronizar.
- Cartões ausentes para novos usuários: Novos usuários em sua primeira sessão podem não ver Content Cards até a próxima sessão. Esse é um comportamento esperado.
- Cartão excede o limite de tamanho: Content Cards acima de 2 KB não são exibidos e a mensagem é abortada.
- Cartão persiste após parar a Campaign: Verifique se a sincronização foi concluída após a Campaign ser parada. Os Content Cards são removidos do dispositivo após uma sincronização bem-sucedida. Ao parar uma Campaign, certifique-se de que a opção de remover cartões ativos dos feeds dos usuários esteja selecionada.
Deep links
Os logs de deep links aparecem em notificações por push, mensagens no app e Content Cards. A estrutura do log é consistente independentemente do canal de origem.
Quando o SDK processa um deep link:
Opening '<DEEP_LINK_URL>':
- channel: <SOURCE_CHANNEL>
- useWebView: false
- isUniversalLink: false
- extras: { ... }
Onde <SOURCE_CHANNEL> é um dos seguintes valores: notification, inAppMessage ou contentCard.
Para deep links, procure as entradas Deep Link Delegate ou UriAction no Logcat. Para testar a resolução do deep link de forma independente, execute o seguinte comando:
adb shell am start -W -a android.intent.action.VIEW -d "<YOUR_DEEP_LINK>" "<YOUR_PACKAGE_NAME>"
Isso confirma se o deep link é resolvido corretamente fora do SDK da Braze.
O que verificar
- Verifique se a URL do deep link corresponde ao que você configurou na Campaign.
- Se o deep link funciona em um canal (por exemplo, push), mas não em outro (por exemplo, Content Cards), verifique se a implementação de tratamento de deep links é compatível com todos os canais.
- No iOS, universal links exigem tratamento adicional. Se os universal links não estiverem funcionando nos canais da Braze, verifique se o seu app implementa o protocolo
BrazeDelegatepara o tratamento de URLs. - No Android, verifique se o tratamento automático de deep links está desativado caso você use um handler personalizado. Caso contrário, o handler padrão pode entrar em conflito com a sua implementação.
Identificação de usuário
Quando um usuário é identificado com um external_id, o SDK registra um evento de mudança de usuário.
changeUser called with: <EXTERNAL_ID>
Pontos importantes:
- Chame
changeUserassim que o usuário fizer login — quanto antes, melhor. - Se um usuário fizer logout, não há como chamar
changeUserpara revertê-lo a um usuário anônimo. - Se você não quiser usuários anônimos, chame
changeUserdurante o início da sessão ou a inicialização do app.
Filtre as solicitações para o endpoint da Braze configurado (por exemplo, sdk.iad-01.braze.com) e procure a identificação do usuário no corpo da solicitação:
"user_id": "<EXTERNAL_ID>"
Requisições de rede
Os logs detalhados incluem informações completas de requisições e respostas HTTP para a comunicação do SDK com os servidores da Braze. Eles são úteis para diagnosticar problemas de conectividade.
Estrutura da requisição
Filtre as requisições para o endpoint da Braze configurado (por exemplo, sdk.iad-01.braze.com). A estrutura da requisição inclui:
[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>
O que verificar
- Chave de API: verifique se
XBraze-ApiKeycorresponde à chave de API do seu espaço de trabalho. - Endpoint: confirme se a URL da requisição corresponde ao endpoint de SDK configurado.
- Tentativas de reenvio:
XBraze-Req-Attemptmaior que 1 indica que o SDK está reenviando uma requisição que falhou, o que pode sinalizar problemas de conectividade. - Limite de frequência:
XBraze-Req-Tokens-Remainingmostra os tokens de requisição restantes. Um número baixo pode indicar que o SDK está se aproximando dos limites de frequência. - Requisições ausentes: no Android, se você não vir uma requisição para o endpoint da Braze após o início da sessão, verifique a configuração da chave de API e do endpoint.
Abreviações comuns de eventos
Nos payloads de log detalhados, a Braze usa nomes de eventos abreviados. Veja a referência:
| Abreviação | Evento |
|---|---|
ss |
Início de sessão |
se |
Fim de sessão |
si |
Impressão de mensagem no app |
sbc |
Clique no botão de mensagem no app |
cci |
Impressão de Content Card |
ccc |
Clique em Content Card |
ccd |
Content Card descartado |
lr |
Local registrado |
Solução de problemas
Geofences não disparam no Android SDK 13.1.0–15.x
O Android SDK da Braze nas versões 13.1.0 a 15.x teve uma regressão que podia impedir o registro de eventos de atualização de geofence. Em dispositivos com Android 10 ou anterior, atualizações de local no início da sessão também podiam falhar. Faça upgrade para o Android SDK 16.0.0 ou posterior. Para configuração do SDK, consulte Geofences.
Quando um usuário pode ter 0 sessões registradas no perfil?
Um perfil de usuário pode exibir 0 sessões quando você importa o usuário pela REST API (/users/track) ou por importação de CSV sem os campos First session ou Last session. As sessões são registradas quando os usuários interagem com o seu app por meio do SDK. Para saber mais, consulte O perfil de usuário tem 0 sessões.
Discrepâncias de dados de usuários ao usar o SDK e a REST API juntos
Quando você usa o SDK e a REST API ao mesmo tempo, condições de corrida podem causar discrepâncias nos dados. Após chamar changeUser(), permita que o SDK envie os dados pendentes antes de fazer chamadas críticas à REST API, evite agrupar atualizações sensíveis ao tempo e considere adicionar um pequeno atraso entre as solicitações do SDK e da API. Para entender o comportamento de changeUser(), consulte Como o changeUser() funciona.
Dados não estão chegando à Braze
Se os dados não estão chegando à Braze, confirme se o seu firewall permite tráfego de saída para os endpoints da API da Braze e provedores de rede de distribuição de conteúdo (CDN). Execute um teste MTR e use o Fastly Debug enquanto o problema estiver ocorrendo. Para solução de problemas de conectividade e lista de permissões, consulte Problemas de conectividade de rede da API.