Skip to content

Suivre les sessions

Apprenez à suivre les sessions à l’aide du SDK de Braze.

À propos du cycle de vie de la session

Une session désigne la période pendant laquelle le SDK Braze suit l’activité des utilisateurs dans votre application après son lancement. Vous pouvez également forcer une nouvelle session en appelant lachangeUser()méthode.

Par défaut, une session commence lorsque vous appelez pour la premièrebraze.openSession() fois . La session restera active pendant un maximum de30minutes d’inactivité (à moins que vous ne modifiiez le délai d’expiration par défaut de la session ou que l’utilisateur ne ferme l’application).

Par défaut, une session commence lorsqueopenSession() est appelé pour la première fois. Si votre application passe en arrière-plan puis revient au premier plan, le SDK vérifiera si plus de 10 secondes se sont écoulées depuis le début de la session (à moins que vous ne modifiiez le délai d’expiration par défaut de la session). Dans ce cas, une nouvelle session débutera. Veuillez noter que si l’utilisateur ferme votre application alors qu’elle est en arrière-plan, les données de session risquent de ne pas être envoyées à Braze tant qu’il n’aura pas rouvert l’application.

Appeler necloseSession() mettra pas immédiatement fin à la session. Au lieu de cela, la session prendra fin après 10 secondes si l’utilisateur openSession()ne la relance pas en démarrant une autre activité.

Par défaut, une session commence lorsque vous appelez Braze.init(configuration:). Cela se produit lorsque le déclencheurUIApplicationWillEnterForegroundNotificationde la notification est activé, ce qui signifie que l’application est passée au premier plan.

Si votre application passe en arrière-plan, le UIApplicationDidEnterBackgroundNotificationdéclencheur est activé. L’application ne reste pas dans une session active lorsqu’elle est en arrière-plan. Lorsque votre application revient au premier plan, le SDK compare le temps écoulé depuis le début de la session au délai d’expiration de la session (à moins que vous ne modifiiez le délai d’expiration par défaut). Si le temps écoulé depuis le début de la session dépasse le délai d’expiration, une nouvelle session commence.

Définition de l’inactivité

Il est essentiel de comprendre comment l’inactivité est définie et mesurée pour gérer efficacement les cycles de vie des sessions dans le SDK Web. L’inactivité désigne une période pendant laquelle le SDK Web Braze ne détecte aucun événement suivi de la part de l’utilisateur.

Comment l’inactivité est-elle évaluée ?

Le SDK Web surveille l’inactivité en fonction des événements suivis par le SDK. Le SDK gère un minuteur interne qui se réinitialise à chaque fois qu’un événement suivi est envoyé. Si aucun événement suivi par le SDK ne se produit pendant la période d’expiration configurée, la session est considérée comme inactive et prend fin.

Pour plus d’informations sur la manière dont le cycle de vie des sessions est implémenté dans le SDK Web, veuillez consulter le code source de gestion des sessions dans le référentiel GitHub du SDK Web Braze.

Ce qui est considéré comme une activité par défaut :

Ce qui n’est pas considéré comme une activité par défaut :

  • Passer à un autre onglet du navigateur
  • Réduire la fenêtre du navigateur
  • Événements de mise au point ou de flou du navigateur
  • Défilement ou mouvements de la souris sur la page

Configuration du délai d’expiration de la session

Par défaut, le SDK Web considère qu’une session est inactive après 30 minutes sans aucun événement suivi. Vous pouvez rendre ce seuil personnalisé lors de l’initialisation du SDK à l’aide dusessionTimeoutInSecondsparamètre. Pour plus de détails sur la configuration de ce paramètre, y compris des exemples de code, veuillez consulter la section Modification du délai d’expiration par défaut de la session.

Exemple : Comprendre les scénarios d’inactivité

Considérez le scénario suivant :

  1. Un utilisateur accède à votre site Web et le SDK démarre une session en appelant braze.openSession().
  2. L’utilisateur passe à un autre onglet du navigateur pour consulter un autre site web pendant 30 minutes.
  3. Pendant cette période, aucun événement suivi par le SDK ne se produit sur votre site Web.
  4. Après 30 minutes d’inactivité, la session prendra automatiquement fin.
  5. Lorsque l’utilisateur revient à l’onglet de votre site Web et déclenche un événement SDK (tel que la consultation d’une page ou l’interaction avec du contenu), une nouvelle session commence.

Suivi de l’inactivité personnalisée

Si vous avez besoin de suivre l’inactivité en fonction de la visibilité du navigateur ou du changement d’onglet, veuillez implémenter des écouteurs d’événements personnalisés dans votre code JavaScript. Veuillez utiliser les événements du navigateur tels quevisibilitychangepour détecter le moment où les utilisateurs quittent votre page, et envoyez manuellement des custom events à Braze ou appelezbraze.openSession()lorsque cela est approprié.

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');
  }
});

Pour plus d’informations sur la journalisation des événements personnalisés, veuillez vous référer à la section Journalisation des événements personnalisés. Pour plus d’informations sur le cycle de vie des sessions et la configuration des délais d’expiration, veuillez vous référer à la section Modification du délai d’expiration par défaut des sessions.

S’abonner aux mises à jour de session

Étape 1 : S’abonner aux mises à jour

Pour s’abonner aux mises à jour de la session, utilisez la méthode subscribeToSessionUpdates().

Pour l’instant, s’abonner aux mises à jour de session n’est pas pris en charge pour le 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
  }
}

Si vous enregistrez un rappel de fin de session, il se déclenche lorsque l’application revient au premier plan. La durée de la session est mesurée entre le moment où l’application s’ouvre (en avant-plan) et le moment où elle se ferme (en arrière-plan).

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")
  }
}

Pour s’abonner à un flux asynchrone, vous pouvez utiliser sessionUpdatesStream à la place.

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;
  }
}];

Le SDK React native ne fournit pas de méthode permettant de s’abonner directement aux mises à jour de session. Le cycle de vie de la session est géré par le SDK natif sous-jacent. Par conséquent, pour vous abonner aux mises à jour, veuillez utiliser l’approche native de la plateforme pour l’onglet Android ou Swift.

Étape 2 : Suivi de la session de test (optionnel)

Pour tester le suivi des sessions, démarrez une session sur votre appareil, puis ouvrez le tableau de bord de Braze et recherchez l’utilisateur concerné. Dans son profil utilisateur, sélectionnez Aperçu des sessions. Si les indicateurs se mettent à jour comme prévu, le suivi de session fonctionne correctement.

La section « Aperçu des sessions » d'un profil utilisateur affiche le nombre de sessions, la date de la dernière utilisation et la date de la première utilisation.

Modifier le délai de session par défaut

Vous pouvez modifier le délai qui s’écoule avant qu’une session ne se termine automatiquement.

Par défaut, le délai d’expiration de la session est fixé à 30 minutes. Pour changer cela, passez l’option sessionTimeoutInSeconds à votre fonction initialize fonction. Il peut être défini comme tout nombre entier supérieur ou égal à 1.

1
2
// Sets the session timeout to 15 minutes instead of the default 30
braze.initialize('YOUR-API-KEY-HERE', { sessionTimeoutInSeconds: 900 });

Par défaut, le délai d’attente de la session est fixé à 10 secondes. Pour modifier cela, ouvrez votre fichier braze.xml et ajoutez le paramètre com_braze_session_timeout. Il peut être défini comme tout nombre entier supérieur ou égal à 1.

1
2
<!-- Sets the session timeout to 60 seconds. -->
<integer name="com_braze_session_timeout">60</integer>

Par défaut, le délai d’attente de la session est fixé à 10 secondes. Pour modifier cela, définissez sessionTimeout dans l’objet configuration qui est transmis à init(configuration). Il peut être défini comme tout nombre entier supérieur ou égal à 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;

Le SDK React native s’appuie sur les SDK natifs pour gérer les sessions. Pour modifier le délai d’expiration de session par défaut, veuillez le configurer dans la couche native :

  • Android : Veuillez définircom_braze_session_timeoutdans votrebraze.xmlfichier. Pour plus de détails, veuillez sélectionner l’onglet Android.
  • iOS : Veuillez définirsessionTimeoutsur votreBraze.Configurationobjet. Pour plus de détails, veuillez sélectionner l’onglet Swift.
New Stuff!