Seguimiento de sesiones
Aprende a realizar el seguimiento de las sesiones a través del SDK de Braze.
Para los SDK envolventes que no aparecen en la lista, utiliza el método nativo de Android o Swift correspondiente.
Acerca del ciclo de vida de la sesión
Una sesión se refiere al período de tiempo durante el cual el SDK de Braze realiza el seguimiento de la actividad de los usuarios en tu aplicación después de su inicio. También puedes forzar una nueva sesión llamando alchangeUser()método .
De forma predeterminada, una sesión comienza cuando llamas por primera vez a braze.openSession(). La sesión permanecerá activa durante un máximo de30 minutos de inactividad (a menos que cambies el tiempo de espera predeterminado de la sesión o que el usuario cierre la aplicación).
Si has configurado la devolución de llamada del ciclo de](/docs/es/developer_guide/platform_integration_guides/android/initial_sdk_setup/android_sdk_integration/#step-4-tracking-user-sessions-in-android) vida de la actividad para Android, Braze llamará automáticamente aopenSession() ycloseSession() para cada actividad de tu aplicación.
De forma predeterminada, una sesión comienza cuandoopenSession()se llama por primera vez a . Si tu aplicación pasa a segundo plano y luego vuelve al primer plano, el SDK comprobará si han pasado más de 10 segundos desde que se inició la sesión (a menos que cambies el tiempo de espera predeterminado de la sesión). Si es así, comenzará una nueva sesión. Ten en cuenta que si el usuario cierra tu aplicación mientras está en segundo plano, es posible que los datos de la sesión no se envíen a Braze hasta que vuelva a abrir la aplicación.
Llamar nocloseSession() terminará inmediatamente la sesión. En su lugar, finalizará la sesión tras 10 segundos si el usuarioopenSession() no vuelve a llamar a iniciando otra actividad.
De forma predeterminada, una sesión comienza cuando llamas a Braze.init(configuration:). Esto ocurre cuando se desencadena laUIApplicationWillEnterForegroundNotificationnotificación, lo que significa que la aplicación ha pasado a primer plano.
Si tu aplicación pasa a segundo plano,UIApplicationDidEnterBackgroundNotification se desencadena. La aplicación no permanece en una sesión activa mientras está en segundo plano. Cuando tu aplicación vuelve al primer plano, el SDK compara el tiempo transcurrido desde el inicio de la sesión con el tiempo de espera de la sesión (a menos que cambies el tiempo de espera predeterminado). Si el tiempo transcurrido desde el inicio de la sesión supera el periodo de tiempo de espera, se inicia una nueva sesión.
Definición de inactividad
Comprender cómo se define y se mide la inactividad es fundamental para gestionar eficazmente los ciclos de vida de las sesiones en el SDK Web. La inactividad se refiere al periodo durante el cual el SDK Web de Braze no detecta ningún evento de seguimiento del usuario.
Cómo se mide la inactividad
El SDK Web realiza el seguimiento de la inactividad basándose en los eventos rastreados por el SDK. El SDK mantiene un temporizador interno que se reinicia cada vez que se envía un evento de seguimiento. Si no se produce ningún evento rastreado por el SDK dentro del período de tiempo de espera configurado, la sesión se considera inactiva y finaliza.
Para obtener más información sobre cómo se implementa el ciclo de vida de la sesión en el SDK Web, consulta el código fuente de gestión de sesiones en el repositorio GitHub del SDK Web de Braze.
Lo que se considera actividad de forma predeterminada:
- Abrir o actualizar la aplicación web
- Interactuar con elementos de la interfaz de usuario impulsados por Braze (como mensajes dentro de la aplicación o Tarjetas de contenido)
- Llamar a métodos del SDK que envían eventos rastreados (como eventos personalizados o actualizaciones de atributos de usuario)
Lo que no se considera actividad de forma predeterminada:
- Cambiar a otra pestaña del navegador
- Minimizar la ventana del navegador
- Eventos de enfoque o desenfoque del navegador
- Desplazamiento o movimientos del ratón en la página
El SDK Web no realiza un seguimiento automático de los cambios de visibilidad del navegador, los cambios de pestaña o el foco del usuario. Sin embargo, puedes realizar el seguimiento de estas interacciones a nivel del navegador implementando detectores de eventos personalizados mediante la API de visibilidad de página del navegador y enviando eventos personalizados a Braze. Para ver un ejemplo de implementación, consulta Seguimiento de la inactividad personalizada.
Configuración del tiempo de espera de la sesión
De forma predeterminada, el SDK Web considera que una sesión está inactiva tras 30 minutos sin eventos de seguimiento. Puedes personalizar este umbral al inicializar el SDK utilizando el parámetro sessionTimeoutInSeconds. Para obtener más información sobre cómo configurar este parámetro, incluidos ejemplos de código, consulta Cambiar el tiempo de espera predeterminado de la sesión.
Ejemplo: comprender los escenarios de inactividad
Considera el siguiente escenario:
- Un usuario abre tu sitio web y el SDK inicia una sesión llamando a
braze.openSession(). - El usuario cambia a otra pestaña del navegador para ver otro sitio web durante 30 minutos.
- Durante este tiempo, no se producen eventos de seguimiento del SDK en tu sitio web.
- Tras 30 minutos de inactividad, la sesión finaliza automáticamente.
- Cuando el usuario vuelve a la pestaña de tu sitio web y desencadena un evento del SDK (como ver una página o interactuar con el contenido), comienza una nueva sesión.
Seguimiento de la inactividad personalizada
Si necesitas realizar un seguimiento de la inactividad basándote en la visibilidad del navegador o el cambio de pestañas, implementa detectores de eventos personalizados en tu código JavaScript. Utiliza eventos del navegador como visibilitychange para detectar cuándo los usuarios abandonan tu página y envía manualmente eventos personalizados a Braze o llama a braze.openSession() cuando sea apropiado.
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 obtener más información sobre cómo registrar eventos personalizados, consulta Registrar eventos personalizados. Para obtener más información sobre el ciclo de vida de la sesión y la configuración del tiempo de espera, consulta Cambiar el tiempo de espera predeterminado de la sesión.
Suscribirse a las actualizaciones de la sesión
Paso 1: Suscribirse a las actualizaciones
Para suscribirte a las actualizaciones de la sesión, utiliza el método subscribeToSessionUpdates().
En este momento, la suscripción a las actualizaciones de sesión no es compatible con el SDK Web de 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
}
}
Si registras una devolución de llamada de fin de sesión, esta se activa cuando la aplicación vuelve al primer plano. La duración de la sesión se mide desde el momento en que se abre la aplicación o pasa a primer plano, hasta que se cierra o pasa a 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 suscribirte a un flujo asíncrono, puedes utilizar sessionUpdatesStream en su lugar.
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;
}
}];
El SDK de React Native no ofrece un método para suscribirse directamente a las actualizaciones de la sesión. El ciclo de vida de la sesión lo gestiona el SDK nativo subyacente, por lo que, para suscribirte a las actualizaciones, utiliza el enfoque de plataforma nativa en la pestaña Android o Swift.
Paso 2: Probar el seguimiento de sesiones (opcional)
Para probar el seguimiento de sesiones, inicia una sesión en tu dispositivo, luego abre el panel de Braze y busca al usuario correspondiente. En su perfil de usuario, selecciona Resumen de sesiones. Si las métricas se actualizan según lo esperado, el seguimiento de sesiones funciona correctamente.

Los detalles específicos de la aplicación solo se muestran para los usuarios que han utilizado más de una aplicación.
Cambiar el tiempo de espera predeterminado de la sesión
Puedes cambiar el tiempo que transcurre antes de que una sesión caduque automáticamente.
De forma predeterminada, el tiempo de espera de la sesión está establecido en 30 minutos. Para cambiarlo, pasa la opción sessionTimeoutInSeconds a tu función initialize. Se puede establecer en cualquier número entero mayor o igual que 1.
1
2
// Sets the session timeout to 15 minutes instead of the default 30
braze.initialize('YOUR-API-KEY-HERE', { sessionTimeoutInSeconds: 900 });
De forma predeterminada, el tiempo de espera de la sesión está establecido en 10 segundos. Para cambiarlo, abre tu archivo braze.xml y añade el parámetro com_braze_session_timeout. Se puede establecer en cualquier número entero mayor o igual que 1.
1
2
<!-- Sets the session timeout to 60 seconds. -->
<integer name="com_braze_session_timeout">60</integer>
De forma predeterminada, el tiempo de espera de la sesión está establecido en 10 segundos. Para cambiarlo, configura sessionTimeout en el objeto configuration que se pasa a init(configuration). Se puede establecer en cualquier número entero mayor o igual que 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;
El SDK de React Native depende de los SDK nativos para gestionar las sesiones. Para cambiar el tiempo de espera predeterminado de la sesión, configúralo en la capa nativa:
- Android: Configura
com_braze_session_timeouten tu archivobraze.xml. Para obtener más información, selecciona la pestaña Android. - iOS: Configura
sessionTimeouten tu objetoBraze.Configuration. Para obtener más información, selecciona la pestaña Swift.
Si estableces un tiempo de espera para la sesión, toda la semántica de la sesión se ampliará automáticamente hasta el tiempo de espera establecido.
Solución de problemas
El perfil de usuario tiene 0 sesiones
Un perfil de usuario puede tener 0 sesiones si el usuario fue creado fuera del SDK:
- Creado mediante la API REST: Si un usuario se crea a través del punto de conexión
/users/trackcon unapp_iden la solicitud, el perfil aparece asociado a esa aplicación pero no tiene datos de sesión porque el SDK nunca se inicializó para ese usuario. - Creado mediante importación CSV: Si un usuario se importa a través de CSV sin valores para los campos de primera o última sesión, el perfil existe con 0 sesiones.
Editar esta página en GitHub