Skip to content

Suivre les sessions

Découvrez comment 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é

Comprendre comment l’inactivité est définie et mesurée est essentiel 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 de Braze ne détecte aucun événement suivi de la part de l’utilisateur.

Comment l’inactivité est-elle mesuré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 envoi d’un événement suivi. 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 en savoir plus sur l’implémentation du cycle de vie des sessions dans le SDK Web, consultez le code source de gestion des sessions dans le dépôt GitHub du SDK Web de 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 focus ou de perte de focus 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 personnaliser ce seuil lors de l’initialisation du SDK à l’aide du paramètre sessionTimeoutInSeconds. Pour plus de détails sur la configuration de ce paramètre, y compris des exemples de code, consultez la section Modifier le délai de session par défaut.

Exemple : comprendre les scénarios d’inactivité

Prenons 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 prend automatiquement fin.
  5. Lorsque l’utilisateur revient sur l’onglet de votre site web et déclenche un événement SDK (comme 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, implémentez des écouteurs d’événements personnalisés dans votre code JavaScript. Utilisez les événements du navigateur tels que visibilitychange pour détecter le moment où les utilisateurs quittent votre page, et envoyez manuellement des événements personnalisés à Braze ou appelez braze.openSession() lorsque c’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 en savoir plus sur la journalisation des événements personnalisés, consultez la section Journaliser des événements personnalisés. Pour plus d’informations sur le cycle de vie des sessions et la configuration des délais d’expiration, consultez la section Modifier le délai de session par défaut.

S’abonner aux mises à jour de session

Étape 1 : S’abonner aux mises à jour

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

Pour l’instant, l’abonnement aux mises à jour de session n’est pas pris en charge par le 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 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 ou passe au premier plan et le moment où elle se ferme ou passe 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 vous 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. Pour vous abonner aux mises à jour, utilisez l’approche native de la plateforme dans l’onglet Android ou Swift.

Étape 2 : Tester le suivi de session (facultatif)

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 le modifier, passez l’option sessionTimeoutInSeconds à votre fonction initialize. La valeur peut être n’importe quel 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’expiration de la session est fixé à 10 secondes. Pour le modifier, ouvrez votre fichier braze.xml et ajoutez le paramètre com_braze_session_timeout. La valeur peut être n’importe quel 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’expiration de la session est fixé à 10 secondes. Pour le modifier, définissez sessionTimeout dans l’objet configuration transmis à init(configuration). La valeur peut être n’importe quel 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, configurez-le dans la couche native :

  • Android : Définissez com_braze_session_timeout dans votre fichier braze.xml. Pour plus de détails, sélectionnez l’onglet Android.
  • iOS : Définissez sessionTimeout sur votre objet Braze.Configuration. Pour plus de détails, sélectionnez l’onglet Swift.

Résolution des problèmes

Le profil utilisateur affiche 0 session

Un profil utilisateur peut afficher 0 session si l’utilisateur a été créé en dehors du SDK :

  • Créé via l’API REST : Si un utilisateur est créé via l’endpoint /users/track avec un app_id dans la requête, le profil apparaît associé à cette application mais ne contient aucune donnée de session, car le SDK n’a jamais été initialisé pour cet utilisateur.
  • Créé par import CSV : Si un utilisateur est importé via CSV sans valeurs pour les champs de première ou dernière session, le profil existe avec 0 session.
New Stuff!