Skip to content

Rastrear sessões

Aprenda como rastrear sessões através do SDK do Braze.

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).

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:

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

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:

  1. Um usuário abre seu site, e o SDK inicia uma sessão chamando braze.openSession().
  2. O usuário troca para uma guia de navegador diferente para visualizar outro site por 30 minutos.
  3. Durante esse tempo, nenhum evento rastreado pelo SDK ocorre em seu site.
  4. Após 30 minutos de inatividade, a sessão termina automaticamente.
  5. 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.

A seção de visão geral das sessões de um perfil de usuário mostrando o número de sessões, data da última utilização e data da primeira utilização.

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_timeout no seu arquivo braze.xml. Para detalhes, selecione a guia Android.
  • iOS: Defina sessionTimeout no seu objeto Braze.Configuration. Para detalhes, selecione a guia SWIFT.
New Stuff!