Skip to content

Rastrear sessões

Aprenda como rastrear sessões através do SDK 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 depois que ele é iniciado. Você também pode forçar uma nova sessão chamando o método changeUser() .

Por padrão, uma sessão é iniciada 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 é iniciada quando openSession() é chamado pela primeira vez. Se o seu app acessar o plano de fundo e depois retornar ao primeiro plano, o SDK verificará se mais de 10 segundos se passaram desde o início da sessão (a menos que você altere o tempo limite padrão da sessão). Se for o caso, uma nova sessão será iniciada. Lembre-se de que, se o usuário fechar seu aplicativo enquanto ele estiver em segundo plano, os dados da sessão poderão não ser enviados ao Braze até que ele reabra o app.

A chamada para closeSession() não encerrará imediatamente a sessão. Em vez disso, ele encerrará a sessão após 10 segundos se o openSession() não for chamado novamente pelo usuário para iniciar outra atividade.

Por padrão, uma sessão é iniciada quando você chama Braze.init(configuration:). Isso ocorre quando a notificação UIApplicationWillEnterForegroundNotification é disparada, o que significa que o app entrou em primeiro plano.

Se o seu app ficar em segundo plano, o UIApplicationDidEnterBackgroundNotification será disparado. Quando seu app retornar ao primeiro plano, o SDK verificará se mais de 10 segundos se passaram desde o início da sessão (a menos que você altere o tempo limite padrão da sessão). Se for o caso, uma nova sessão será iniciada.

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 inscrição em 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 se inscrever em 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;
  }
}];

Etapa 2: Testar rastreamento de sessão (opcional)

Para testar o rastreamento de sessão, inicie uma sessão em 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. Pode ser definido para 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). Pode ser definido para 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;
New Stuff!