Suivre les sessions
Découvrez comment suivre les sessions à l’aide du SDK de Braze.
Pour les SDK wrapper non répertoriés, utilisez plutôt la méthode native Android ou Swift correspondante.
À 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).
Si vous avez configuré le rappel du cycle de ](/docs/fr/developer_guide/platform_integration_guides/android/initial_sdk_setup/android_sdk_integration/#step-4-tracking-user-sessions-in-android)vie des activités pour Android, Braze appellera automatiquementopenSession() etcloseSession()pour chaque activité de votre 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 :
- Ouverture ou actualisation de l’application web
- Interaction avec les éléments d’interface générés par Braze (tels que les messages in-app ou les cartes de contenu)
- Appel de méthodes du SDK qui envoient des événements suivis (tels que des événements personnalisés ou des mises à jour d’attributs utilisateur)
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
Le SDK Web ne suit pas automatiquement les changements de visibilité du navigateur, les changements d’onglet ou le focus de l’utilisateur. Cependant, vous pouvez suivre ces interactions au niveau du navigateur en implémentant des écouteurs d’événements personnalisés à l’aide de l’API Page Visibility du navigateur et en envoyant des événements personnalisés à Braze. Pour un exemple d’implémentation, consultez la section Suivi de l’inactivité personnalisée.
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 :
- Un utilisateur accède à votre site web et le SDK démarre une session en appelant
braze.openSession(). - L’utilisateur passe à un autre onglet du navigateur pour consulter un autre site web pendant 30 minutes.
- Pendant cette période, aucun événement suivi par le SDK ne se produit sur votre site web.
- Après 30 minutes d’inactivité, la session prend automatiquement fin.
- 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.

Les détails spécifiques aux applications ne sont affichés que pour les utilisateurs qui ont utilisé plus d’une application.
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_timeoutdans votre fichierbraze.xml. Pour plus de détails, sélectionnez l’onglet Android. - iOS : Définissez
sessionTimeoutsur votre objetBraze.Configuration. Pour plus de détails, sélectionnez l’onglet Swift.
Si vous définissez un délai de session, toute la sémantique de session s’étendra automatiquement au délai défini.
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/trackavec unapp_iddans 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.
Modifier cette page sur GitHub