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 mensagens no app e Content Cards, dependem de uma sessão válida ser iniciada antes de poderem funcionar. Se as sessões não estiverem sendo registradas corretamente, investigue isso primeiro. Para saber mais sobre como ativar o rastreamento de sessão, consulte Etapa 5: Ativar o rastreamento de sessão do usuário.
Principais entradas de log
Início da sessão:
1
Started user session (id: <SESSION_ID>)
Fim da sessão:
1
2
3
4
5
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 as seguintes entradas:
1
2
3
4
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 solicitações de rede para o endpoint da Braze configurado (por exemplo, sdk.iad-01.braze.com) para ver o evento de início de sessão (ss).
Fim da sessão:
1
2
3
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
- Confirme que um log de início de sessão aparece quando o app é aberto.
- Se você não vir um início de sessão, verifique se o SDK foi inicializado corretamente e se
openSession(Android) está sendo chamado. - No Android, confirme que uma solicitação de rede está sendo feita para o endpoint da Braze. Se você não vir isso, verifique a configuração da sua chave de API e do endpoint.
Notificações por push
Os logs 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.
1
2
3
4
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:
1
2
3
4
5
6
"attributes": [
{
"push_token": "<PUSH_TOKEN>",
"user_id": "<USER_ID>"
}
]
Confirme também que as informações do dispositivo incluem:
1
2
3
4
"device": {
"ios_push_auth": "authorized",
"remote_notification_enabled": 1
}
Procure pelo log de registro do FCM:
1
Registering for Firebase Cloud Messaging token using sender id: <SENDER_ID>
Verifique o seguinte:
com_braze_firebase_cloud_messaging_registration_enabledestá comotrue.- O ID do remetente do FCM corresponde ao seu projeto do Firebase.
Um erro comum é SENDER_ID_MISMATCH, que significa que o ID do remetente configurado não corresponde ao seu projeto do Firebase.
O que verificar
- Se
push_tokenestiver ausente no 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 aparecer
SENDER_ID_MISMATCH, atualize o ID do remetente do FCM para que corresponda ao seu projeto do Firebase.
Entrega e clique de push
Quando uma notificação por push é tocada, o SDK registra os eventos de processamento e clique.
1
2
3
4
5
6
7
8
9
10
11
12
13
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:
1
2
3
4
Logged event:
- userId: <USER_ID>
- sessionId: <SESSION_ID>
- data: pushClick(campaignId: ...)
Se o push contiver um deep link, você também verá:
1
2
3
4
Opening '<URL>':
- channel: notification
- useWebView: false
- isUniversalLink: false
1
BrazeFirebaseMessagingService: Got Remote Message from FCM
Seguido pela carga útil do push e pelos logs de exibição. Para deep links, procure pelas entradas do 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 handler de notificações está encaminhando corretamente os eventos de push para o SDK da Braze.
Mensagens no app
Os registros de mensagens no app mostram o ciclo de vida completo: entrega a partir 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:
1
2
3
4
5
6
7
8
9
"templated_message": {
"data": {
"message": "...",
"type": "HTML",
"message_close": "SWIPE",
"trigger_id": "<TRIGGER_ID>"
},
"type": "inapp"
}
Procure o registro de correspondência do evento-gatilho:
1
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
1
2
3
In-app message ready for display:
- triggerId: (campaignId: <CAMPAIGN_ID>, ...)
- extras: { ... }
Seguido pelo registro de impressão:
1
2
3
4
Logged event:
- userId: <USER_ID>
- sessionId: <SESSION_ID>
- data: inAppMessageImpression(triggerIds: [...])
1
handleExistingInAppMessagesInStackWithDelegate:: Displaying in-app message
Eventos de clique e botão
Quando um usuário toca em um botão ou fecha a mensagem:
1
2
3
4
Logged event:
- userId: <USER_ID>
- sessionId: <SESSION_ID>
- data: inAppMessageButtonClick(triggerIds: [...], buttonId: "<BUTTON_ID>")
Se nenhuma outra mensagem disparada corresponder, você também verá:
1
No matching trigger for event.
Esse é o comportamento esperado quando nenhuma mensagem no app adicional está configurada para o evento.
Filtre as requisições para o seu endpoint da Braze configurado (por exemplo, sdk.iad-01.braze.com) e procure por 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
inAppMessageDisplaypersonalizado que suprime o registro. - Se “No matching trigger for event” aparecer, isso é normal e indica que nenhuma mensagem no app adicional está configurada 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:
1
2
3
4
5
6
7
8
9
10
11
"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.
1
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:
1
2
3
4
Logged event:
- userId: <USER_ID>
- sessionId: <SESSION_ID>
- data: contentCardImpression(cardIds: [...])
Clique:
1
2
3
4
Logged event:
- userId: <USER_ID>
- sessionId: <SESSION_ID>
- data: contentCardClick(cardIds: [...])
Se o cartão tiver uma URL, você também verá:
1
2
3
Opening '<URL>':
- channel: contentCard
- useWebView: true
Dispensa:
1
2
3
4
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 registros de deep links aparecem em notificações por push, mensagens no app e Content Cards. A estrutura do registro é consistente independentemente do canal de origem.
Quando o SDK processa um deep link:
1
2
3
4
5
Opening '<DEEP_LINK_URL>':
- channel: <SOURCE_CHANNEL>
- useWebView: false
- isUniversalLink: false
- extras: { ... }
Onde <SOURCE_CHANNEL> é um dos seguintes: notification, inAppMessage ou contentCard.
Para deep links, procure as entradas Deep Link Delegate ou UriAction no Logcat. Para testar a resolução de deep links de forma independente, execute o seguinte comando:
1
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 a partir de um canal (por exemplo, push), mas não de outro (por exemplo, Content Cards), verifique se sua implementação de tratamento de deep links é compatível com todos os canais.
- No iOS, links universais exigem tratamento adicional. Se os links universais não estiverem funcionando a partir dos canais da Braze, verifique se o seu app implementa o protocolo
BrazeDelegatepara 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ários
Quando um usuário é identificado com um external_id, o SDK registra um evento de mudança de usuário.
1
changeUser called with: <EXTERNAL_ID>
Informações 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:
1
"user_id": "<EXTERNAL_ID>"
Solicitações de rede
Os logs detalhados incluem informações completas de solicitaçõ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 solicitação
Filtre as solicitações para o endpoint da Braze configurado (por exemplo, sdk.iad-01.braze.com). A estrutura da solicitação inclui:
1
2
3
4
5
6
7
[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: { ... }
1
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 solicitação corresponde ao endpoint de SDK configurado.
- Tentativas de reenvio:
XBraze-Req-Attemptmaior que 1 indica que o SDK está reenviando uma solicitação que falhou, o que pode sinalizar problemas de conectividade. - Limite de frequência:
XBraze-Req-Tokens-Remainingmostra os tokens de solicitação restantes. Uma contagem baixa pode indicar que o SDK está se aproximando dos limites de frequência. - Solicitações ausentes: No Android, se você não visualizar uma solicitaçã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 da sessão |
se |
Fim da 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 dispensado |
lr |
Local registrado |
Solução de problemas
Geofences não sendo disparadas no Android SDK 13.1.0–15.x
O Android SDK da Braze nas versões 13.1.0 a 15.x apresentou uma regressão que podia impedir o registro de eventos de atualização de geofences. Em dispositivos com Android 10 ou anterior, as 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 mostrar 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 Perfil de usuário com 0 sessões.
Discrepâncias nos 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. Depois de 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 requisições do SDK e da API. Para entender o comportamento de changeUser(), consulte Como o changeUser() funciona.
Dados nã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 de 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.