Rastrear sessões
Aprenda como rastrear sessões através do SDK do Braze.
Para SDKs wrapper não listados, use o método nativo relevante do Android ou Swift.
Sobre o ciclo de vida da sessão
Uma sessão refere-se ao período de tempo em que o SDK do Braze rastreia a atividade do usuário em seu app após ser iniciado. Você também pode forçar uma nova sessão chamando o método changeUser().
Por padrão, uma sessão começa quando você chama braze.openSession() pela primeira vez. A sessão permanecerá ativa por até 30 minutos de inatividade (a menos que você altere o tempo limite padrão da sessão ou o usuário feche o app).
Se você configurou o callback do ciclo de vida da atividade para Android, o Braze chamará automaticamente openSession() e closeSession() para cada atividade em seu app.
Por padrão, uma sessão começa quando openSession() é chamado pela primeira vez. Se seu app for para o segundo plano e depois retornar ao primeiro plano, o SDK verificará se mais de 10 segundos se passaram desde que a sessão começou (a menos que você altere o tempo limite padrão da sessão). Se sim, uma nova sessão começará. Lembre-se de que, se o usuário fechar seu app enquanto ele estiver em segundo plano, os dados da sessão podem não ser enviados ao Braze até que eles reabram o app.
Chamar closeSession() não encerrará imediatamente a sessão. Em vez disso, encerrará a sessão após 10 segundos se openSession() não for chamado novamente pelo usuário iniciando outra atividade.
Por padrão, uma sessão começa quando você chama Braze.init(configuration:). Isso ocorre quando a notificação UIApplicationWillEnterForegroundNotification é acionada, significando que o app entrou no primeiro plano.
Se seu app for para o segundo plano, UIApplicationDidEnterBackgroundNotification é acionado. O app não permanece em uma sessão ativa enquanto está em segundo plano. Quando seu app retorna ao primeiro plano, o SDK compara o tempo decorrido desde o início da sessão com o tempo limite da sessão (a menos que você altere o tempo limite padrão da sessão). Se o tempo desde o início da sessão exceder o período de tempo limite, uma nova sessão começa.
Definindo inatividade
Entender como a inatividade é definida e medida é fundamental para gerenciar ciclos de vida de sessão de forma eficaz no SDK Web. Inatividade refere-se a um período durante o qual o SDK Web do Braze não detecta nenhum evento rastreado do usuário.
Como a inatividade é medida
O SDK Web rastreia a inatividade com base em eventos rastreados pelo SDK. O SDK mantém um temporizador interno que é redefinido cada vez que um evento rastreado é enviado. Se nenhum evento rastreado pelo SDK ocorrer dentro do período de tempo configurado, a sessão é considerada inativa e termina.
Para mais informações sobre como o ciclo de vida da sessão é implementado no SDK Web, veja o código-fonte de gerenciamento de sessão no repositório do Braze Web SDK no GitHub.
O que conta como atividade por padrão:
- Abrir ou atualizar o aplicativo web
- Interagir com elementos de UI impulsionados pelo Braze (como Mensagens no aplicativo ou Cartões de Conteúdo)
- Chamar métodos do SDK que enviam eventos rastreados (como eventos personalizados ou atualizações de atributos do usuário)
O que não conta como atividade por padrão:
- Alternar para uma guia de navegador diferente
- Minimizar a janela do navegador
- Eventos de foco ou desfoque do navegador
- Rolagem ou movimentos do mouse na página
O SDK da Web não rastreia automaticamente as mudanças de visibilidade do navegador, troca de guia ou foco do usuário. No entanto, você pode rastrear essas interações em nível de navegador implementando ouvintes de eventos personalizados usando a API de Visibilidade da Página do navegador e enviando eventos personalizados para a Braze. Para um exemplo de implementação, consulte Rastreamento de inatividade personalizada.
Configuração de tempo limite de sessão
Por padrão, o SDK da Web considera uma sessão inativa após 30 minutos sem nenhum evento rastreado. Você pode personalizar esse limite ao inicializar o SDK usando o parâmetro sessionTimeoutInSeconds. Para detalhes sobre como configurar esse parâmetro, incluindo exemplos de código, veja Alterando o tempo limite de sessão padrão.
Exemplo: Entendendo cenários de inatividade
Considere o seguinte cenário:
- Um usuário abre seu site, e o SDK inicia uma sessão chamando
braze.openSession(). - O usuário troca para uma guia de navegador diferente para visualizar outro site por 30 minutos.
- Durante esse tempo, nenhum evento rastreado pelo SDK ocorre em seu site.
- Após 30 minutos de inatividade, a sessão termina automaticamente.
- Quando o usuário volta para a guia do seu site e aciona um evento do SDK (como visualizar uma página ou interagir com o conteúdo), uma nova sessão começa.
Rastreamento de inatividade personalizada
Se você precisar rastrear inatividade com base na visibilidade do navegador ou troca de guia, implemente ouvintes de eventos personalizados em seu código JavaScript. Use eventos do navegador, como visibilitychange, para detectar quando os usuários saem da sua página e envie manualmente eventos personalizados para a Braze ou chame braze.openSession() quando apropriado.
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');
}
});
Para mais informações sobre o registro de eventos personalizados, consulte Registro de eventos personalizados. Para detalhes sobre o ciclo de vida da sessão e configuração de tempo limite, consulte Alterando o tempo limite de sessão padrão.
Inscrever-se para receber atualizações de sessões
Etapa 1: Inscrever-se para receber atualizações
Para se inscrever em atualizações de sessão, use o método subscribeToSessionUpdates().
Neste momento, a assinatura de atualizações de sessão não é suportada para o SDK Web Braze.
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
}
}
Se você registrar um retorno de chamada de fim de sessão, ele será acionado quando o app retornar ao primeiro plano. A duração da sessão é medida desde que o app é aberto ou colocado em primeiro plano, até que ele seja fechado ou colocado em segundo plano.
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")
}
}
Para assinar um fluxo assíncrono, você pode usar sessionUpdatesStream em vez disso.
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;
}
}];
O SDK React Native não expõe um método para assinar atualizações de sessão diretamente. O ciclo de vida da sessão é gerenciado pelo SDK nativo subjacente, então, para assinar atualizações, use a abordagem da plataforma nativa para a Android ou Swift guia.
Etapa 2: Testar rastreamento de sessão (opcional)
Para testar o rastreamento de sessão, inicie uma sessão no seu dispositivo, depois abra o dashboard do Braze e procure o usuário relevante. No perfil do usuário, selecione Visão Geral das Sessões. Se as métricas forem atualizadas como esperado, o rastreamento de sessão está funcionando corretamente.

Detalhes específicos do app são mostrados apenas para usuários que usaram mais de um app.
Alterando o tempo limite padrão da sessão
Você pode alterar a duração do tempo que passa antes que uma sessão expire automaticamente.
Por padrão, o tempo limite da sessão é definido para 30 minutos. Para mudar isso, passe a opção sessionTimeoutInSeconds para sua função initialize. Ele pode ser definido como qualquer inteiro maior ou igual a 1.
1
2
// Sets the session timeout to 15 minutes instead of the default 30
braze.initialize('YOUR-API-KEY-HERE', { sessionTimeoutInSeconds: 900 });
Por padrão, o tempo limite da sessão é definido para 10 segundos. Para mudar isso, abra seu arquivo braze.xml e adicione o parâmetro com_braze_session_timeout. Ele pode ser definido como qualquer inteiro maior ou igual a 1.
1
2
<!-- Sets the session timeout to 60 seconds. -->
<integer name="com_braze_session_timeout">60</integer>
Por padrão, o tempo limite da sessão é definido para 10 segundos. Para mudar isso, defina sessionTimeout no objeto configuration que é passado para init(configuration). Ele pode ser definido como qualquer inteiro maior ou igual a 1.
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;
O SDK do React Native depende dos SDKs nativos para gerenciar sessões. Para mudar o tempo limite da sessão padrão, configure-o na camada nativa:
- Android: Defina
com_braze_session_timeoutno seu arquivobraze.xml. Para detalhes, selecione a guia Android. - iOS: Defina
sessionTimeoutno seu objetoBraze.Configuration. Para detalhes, selecione a guia SWIFT.
Se você definir um tempo limite de sessão, todas as semânticas de sessão serão automaticamente estendidas para o tempo limite definido.
Editar esta página no GitHub