Developer guide
Ce guide est conçu pour vous aider à intégrer notre SDK en quelques minutes et à commencer à exécuter des expériences dans vos applications Java.Getting started
Starter kit
Pour faciliter la prise en main, Kameleoon fournit un starter kit et une application de démonstration permettant de tester le SDK. Le starter kit inclut une application entièrement configurée avec des exemples illustrant l’utilisation des méthodes du SDK dans une application. Le starter kit, l’application de démonstration et les instructions détaillées sont disponibles sur Starter kit for JavaInstall the Java client
Le package d’installation est disponible sur le dépôt Maven Central. Vous pouvez installer le SDK Java en ajoutant une dépendance dans le fichierpom.xml de votre projet, comme illustré dans l’exemple ci-contre. Si vous utilisez un autre système de gestion de projet, consultez la page integrations pour obtenir des exemples supplémentaires.
- Java EE
- Jakarta EE
pom.xml
Additional configuration
Créez un fichier de configuration.properties pour fournir les identifiants et personnaliser le comportement du SDK. Vous pouvez également télécharger notre exemple de fichier de configuration.
Nous vous recommandons d’enregistrer ce fichier à l’emplacement par défaut, /etc/kameleoon/client-java.conf, mais vous pouvez l’enregistrer n’importe où dans le classpath sous le nom kameleoon-client-java.properties.
Le tableau suivant présente les propriétés disponibles que vous pouvez définir :
Initialize the Kameleoon client
Après avoir installé le SDK dans votre application et configuré vos identifiants et le comportement du SDK (dans/etc/kameleoon/client-java.conf), l’étape suivante consiste à créer le client Kameleoon dans le code de votre application. Par exemple :
create() pour plus de détails).
Il est de votre responsabilité d’assurer la logique appropriée du code de votre application dans le contexte de l’A/B test via Kameleoon. Une bonne pratique consiste à toujours supposer que vous pouvez exclure le visiteur actuel de l’expérience si vous n’avez pas lancé l’expérience. Cette exclusion est simple car elle correspond à l’implémentation de la logique de variation par défaut et de référence.
Activating a feature flag
Assigning a unique ID to a user
Pour attribuer un ID unique à un utilisateur, vous pouvez utiliser la méthodegetVisitorCode(). Si un visitor code n’existe pas (à partir du cookie d’en-têtes de requête), la méthode génère un ID unique aléatoire ou utilise un defaultVisitorCode que vous auriez généré. L’ID est ensuite défini dans un cookie d’en-têtes de réponse.
Si vous utilisez Kameleoon en Hybrid mode, appeler la méthode getVisitorCode() garantit que l’ID unique (visitor code) est partagé entre le fichier d’application engine.js (anciennement nommé kameleoon.js) et le SDK.
Retrieving a flag configuration
Pour implémenter un feature flag dans votre code, vous devez d’abord créer le feature flag dans votre compte Kameleoon. Pour déterminer le statut ou la variation d’un feature flag pour un utilisateur spécifique, vous devez utiliser la méthodegetVariation() ou isFeatureActive() pour récupérer la configuration en fonction de la featureKey.
La méthode getVariation() gère à la fois les feature flags simples avec des états ON/OFF et les flags plus complexes avec plusieurs variations. La méthode récupère la variation appropriée pour l’utilisateur en vérifiant les règles du feature, en assignant la variation et en la renvoyant en fonction de la featureKey et du visitorCode.
La méthode isFeatureActive() peut être utilisée si vous souhaitez récupérer la configuration d’un feature flag simple qui n’a qu’un état ON ou OFF, par opposition aux feature flags plus complexes avec plusieurs variations ou options de ciblage.
Si votre feature flag possède des variables associées (comme des comportements spécifiques liés à chaque variation), getVariation() vous permet également d’accéder à l’objet Variation, qui fournit des détails sur la variation assignée et son expérience associée. Cette méthode vérifie si l’utilisateur est ciblé, trouve la variation assignée au visiteur et la sauvegarde dans le stockage. Lorsque track=true, le SDK enverra l’événement d’exposition à l’expérience spécifiée lors de la prochaine requête de tracking, qui est déclenchée automatiquement en fonction du tracking_interval_millisecond du SDK. Par défaut, cet intervalle est défini à 1000 millisecondes (1 seconde).
La méthode getVariation() vous permet de contrôler si le tracking est effectué. Si track=false, aucun événement d’exposition ne sera envoyé par le SDK. Cela est utile si vous préférez ne pas suivre les données via le SDK et plutôt vous appuyer sur le tracking côté client géré par le moteur Kameleoon, par exemple. De plus, définir track=false est utile lors de l’utilisation de la méthode getVariations(), où vous pourriez avoir besoin uniquement des variations pour tous les flags sans déclencher d’événements de tracking. Si vous souhaitez en savoir plus sur le fonctionnement du tracking, consultez cet article
Adding data points to target a user or filter / breakdown visits in reports
Pour cibler un utilisateur, assurez-vous d’avoir ajouté les points de données pertinents à son profil avant de récupérer la variation du feature ou de vérifier si le flag est actif. Utilisez la méthodeaddData() pour ajouter ces points de données au profil de l’utilisateur.
Pour récupérer les points de données collectés sur d’autres appareils ou pour accéder aux données utilisateur passées (collectées côté client lors de l’utilisation de Kameleoon en mode hybride), utilisez la méthode getRemoteVisitorData(). Cette méthode récupère de manière asynchrone les données depuis les serveurs. Il est important d’appeler getRemoteVisitorData() avant de récupérer la variation ou de vérifier si le feature flag est actif, car ces données peuvent être nécessaires pour assigner un utilisateur à une variation donnée.
Pour en savoir plus sur les conditions de ciblage disponibles, consultez l’article détaillé sur le sujet.
De plus, les points de données que vous ajoutez au profil du visiteur seront disponibles lors de l’analyse de vos expériences, vous permettant de filtrer et de décomposer vos résultats par facteurs tels que l’appareil et le navigateur. Le mode hybride de Kameleoon collecte automatiquement une variété de points de données côté client, ce qui facilite la décomposition de vos résultats en fonction de ces points de données pré-collectés. Voir la liste complète ici.
Si vous devez suivre des points de données supplémentaires au-delà de ce qui est collecté automatiquement, vous pouvez utiliser la fonctionnalité Custom Data de Kameleoon. Custom Data vous permet de capturer et d’analyser des informations spécifiques pertinentes pour vos expériences. N’oubliez pas d’appeler la méthode flush() pour envoyer les données collectées aux serveurs Kameleoon pour analyse.
Pour garantir l’exactitude de vos résultats, il est recommandé de filtrer les bots en utilisant le type de données
UserAgent.Tracking goal conversions
Lorsqu’un utilisateur effectue une action souhaitée (telle qu’effectuer un achat), elle est enregistrée comme une conversion. Pour suivre les conversions, utilisez la méthodetrackConversion() et fournissez les paramètres requis visitorCode et goalId.
La requête de tracking de conversion sera envoyée avec la prochaine requête de tracking planifiée, que le SDK envoie à intervalles réguliers (définis par tracking_interval_millisecond). Si vous préférez envoyer la requête immédiatement, utilisez la méthode flush() avec le paramètre instant=true.
Sending events to analytics solutions
Pour suivre les conversions et envoyer des événements d’exposition à votre solution d’analytique client, vous devez d’abord implémenter Kameleoon en Hybrid mode. Ensuite, utilisez la méthodegetEngineTrackingCode().
La méthode getEngineTrackingCode() récupère le code de tracking unique requis pour envoyer des événements d’exposition à votre solution d’analytique. Utiliser cette méthode vous permet d’enregistrer des événements et de les envoyer à la plateforme d’analytique de votre choix.
Using a custom bucketing key
Par défaut, Kameleoon utilise un ID de visiteur unique et anonyme (visitorCode) pour assigner les utilisateurs aux variations de feature flag. Cet ID est généralement généré et stocké sur l’appareil de l’utilisateur (dans un cookie de navigateur pour les SDKs côté client et côté serveur — dans le stockage persistant pour les SDKs mobiles). Cependant, dans certains scénarios, vous devrez peut-être garantir que tous les utilisateurs d’une même organisation voient la même variante d’un feature flag.
L’option Custom Bucketing Key vous permet de remplacer ce comportement par défaut en fournissant votre propre identifiant personnalisé pour le bucketing. Ce remplacement garantit que la logique d’assignation de Kameleoon utilise votre clé spécifiée au lieu du visitorCode par défaut.
Use cases
L’utilisation d’une custom bucketing key est essentielle pour maintenir la cohérence et l’exactitude de vos assignations de feature flag, en particulier dans les situations suivantes :- Expériences au niveau du compte ou de l’organisation : Pour les produits B2B ou les scénarios dans lesquels vous souhaitez assigner tous les utilisateurs d’une même organisation à la même variation, vous pouvez utiliser un identifiant tel qu’un
accountId. Les custom bucketing keys sont essentielles pour les fonctionnalités d’A/B test qui ont un impact sur toute une équipe ou une entreprise.
Technical details
Lorsque vous configurez une custom bucketing key pour un feature flag, vous fournissez à Kameleoon un identifiant spécifique provenant des données de votre application :- Fournir la clé personnalisée : Vous fournissez votre identifiant personnalisé au SDK Kameleoon à l’aide de la méthode
addData(). Dans cette méthode, vous passerez votre custom bucketing key choisie en tant qu’objetCustomData. Ici,newVisitorCodefait référence à l’identifiant que vous souhaitez utiliser pour votre bucketing (par exemple, le nouveauuserIdouaccountId).
- Logique de bucketing : Une fois qu’une custom bucketing key est fournie via la méthode
addData(), tous les calculs de hash pour assigner les utilisateurs aux variations utiliseront cenewVisitorCode(votre clé personnalisée) au lieu duvisitorCodepar défaut. Utiliser lenewVisitorCodesignifie que la décision de bucketing est liée à votre identifiant personnalisé, garantissant des assignations cohérentes dans divers contextes où cet identifiant est présent. - Tracking de données et analytique : Il est crucial de noter que bien que le
newVisitorCode(votre clé personnalisée) soit utilisé pour les décisions de bucketing, toutes les données ultérieures (événements de tracking et conversions, par exemple) sont envoyées et associées auvisitorCodeoriginal. Cette séparation garantit que votre analytique reflète avec précision les parcours et interactions individuels des utilisateurs dans le contexte plus large de votre expérience, même lorsque le bucketing est effectué à un niveau supérieur (comme un compte) ou sur plusieurs appareils/sessions. Vos données de visiteur originales restent intactes pour un reporting complet.
Technical requirementes
Pour utiliser efficacement une custom bucketing key :- La clé doit être une
String. - Elle doit être unique pour l’entité que vous avez l’intention de bucketer (par exemple, si vous utilisez un
userId, l’ID de chaque utilisateur doit être unique). - La clé doit être disponible pour le SDK au moment exact où la décision de feature flag est évaluée pour cet utilisateur ou cette requête.
Targeting conditions
Les SDKs Kameleoon prennent en charge une variété de conditions de ciblage prédéfinies que vous pouvez utiliser pour cibler les utilisateurs dans vos campagnes. Pour la liste des conditions prises en charge par ce SDK, consultez use visit history to target users. Vous pouvez également utiliser vos propres données externes pour cibler les utilisateurs.Cross-device experimentation
Pour prendre en charge les visiteurs qui accèdent à une application depuis plusieurs appareils, Kameleoon permet la synchronisation des données de visiteur précédemment collectées sur chacun des appareils du visiteur et la réconciliation de leur historique de visite sur tous les appareils grâce à la cross-device experimentation. Des études de cas et des informations détaillées sur la manière dont Kameleoon gère les données entre les appareils sont disponibles dans l’article sur la cross-device experimentation.Synchronizing custom data across devices
Bien que la synchronisation du mapping personnalisé soit utilisée pour aligner les données des visiteurs entre les appareils, elle n’est pas toujours nécessaire. Voici deux scénarios où la synchronisation du mapping personnalisé n’est pas requise : Même user ID sur tous les appareils Si le même user ID est utilisé de manière cohérente sur tous les appareils, la synchronisation est gérée automatiquement sans synchronisation de mapping personnalisé. Il suffit d’appeler la méthodegetRemoteVisitorData() lorsque vous souhaitez synchroniser les données collectées entre plusieurs appareils.
Instances multi-serveurs avec IDs cohérents
Dans des configurations complexes impliquant plusieurs serveurs (par exemple, des instances de serveurs distribués), où le même user ID est disponible sur les serveurs, la synchronisation entre les serveurs (avec getRemoteVisitorData()) est suffisante sans synchronisation supplémentaire de mapping personnalisé.
Les clients qui ont besoin de données supplémentaires peuvent se référer à la description de la méthode getRemoteVisitorData() pour obtenir des conseils supplémentaires. Dans le code ci-dessous, on suppose que le même identifiant unique (dans ce cas, le visitorCode, qui peut également être appelé userId) est utilisé de manière cohérente entre les deux appareils pour une récupération précise des données.
Si vous souhaitez synchroniser les données collectées en temps réel, vous devez choisir le scope Visitor pour vos custom data.
Device A
Device B
Using custom data for session merging
La cross-device experimentation permet de combiner l’historique d’un visiteur sur chacun de ses appareils (réconciliation de l’historique). La réconciliation de l’historique permet de fusionner différentes sessions de visiteurs en une seule. Pour réconcilier l’historique de visite, utilisezCustomData pour fournir un identifiant unique pour le visiteur. Pour plus d’informations, consultez la documentation dédiée.
Une fois la réconciliation cross-device activée, l’appel à getRemoteVisitorData() avec le paramètre userId récupère toutes les données connues pour un utilisateur donné.
Les sessions avec le même identifiant verront toujours la même variation dans une expérience. Dans la vue Visitor des pages de résultats de votre expérience, ces sessions apparaîtront comme un seul visiteur.
La configuration du SDK garantit que les sessions associées voient toujours la même variation de l’expérience. Cependant, il existe certaines limitations concernant l’allocation de variation cross-device. Ces limitations sont décrites ici.
Suivez le guide activating cross-device history reconciliation pour configurer vos custom data sur la plateforme Kameleoon.
Par la suite, vous pouvez utiliser le SDK normalement. Les méthodes suivantes peuvent être utiles dans le contexte de la fusion de sessions :
getRemoteVisitorData()avecUniqueIdentifier(true)ajouté - pour récupérer les données de tous les visiteurs liés.trackConversion()ouflush()avec des donnéesUniqueIdentifier(true)ajoutées - pour suivre certaines données pour un visiteur spécifique qui est associé à un autre visiteur.
getVisitorCode() est utilisé. Une fois que l’utilisateur s’est connecté, le visiteur anonyme est associé à l’user ID et utilisé comme identifiant unique pour le visiteur.
Logging
Le SDK génère des logs pour refléter divers processus et problèmes internes.Log levels
Le SDK prend en charge la configuration de la limitation du logging par un log level.Custom handling of logs
Le SDK écrit ses logs dans la sortie console par défaut. Ce comportement peut être remplacé.La limitation des logs par un log level est effectuée indépendamment de la logique de gestion des logs.
Reference
Voici la documentation de référence complète pour le SDK Java.Initialization
create()
Pour utiliser le SDK, vous devez terminer l’initialisation. Votre application effectue toutes les interactions avec le SDK via un objet de la classeKameleoonClient. Créez cet objet à l’aide de la méthode statique create() dans KameleoonClientFactory.
Arguments
Return value
Exceptions thrown
waitInit()
waitInit() attend l’initialisation du KameleoonClient. Cette méthode vous permet de vérifier si le SDK a initialisé le client avec succès avant de procéder à d’autres opérations.
Si la méthode
waitInit() échoue, le processus d’initialisation se poursuivra sans interruption. Les appels ultérieurs à la méthode waitInit() renverront des résultats reflétant l’état actuel du KameleoonClient. Ainsi, vous pouvez invoquer la méthode waitInit() plusieurs fois pour vérifier l’état du SDK.Return value
Exceptions thrown
Feature flags and variations
isFeatureActive()
- 📨 Envoie des données de tracking à Kameleoon (selon le paramètre
track)
Cette méthode s’appelait auparavant
activeFeature, qui a été supprimée dans la version 4.0.0 du SDK.visitorCode et une featureKey comme arguments obligatoires pour vérifier si le feature est actif pour l’utilisateur.
Si l’utilisateur n’a jamais été associé à ce feature flag, le SDK renvoie une valeur booléenne aléatoire (soit true pour ajouter l’utilisateur à ce feature, soit false pour l’exclure du feature). Si un utilisateur avec le visitorCode spécifié est déjà enregistré avec ce feature flag, le SDK détecte la valeur précédente de featureFlag.
Assurez-vous de capturer et de gérer les exceptions potentielles.
Si vous spécifiez un visitorCode, la méthode isFeatureActive() l’utilise comme identifiant unique du visiteur, ce qui est utile pour la cross-device experimentation. Lorsque vous spécifiez un visitorCode et définissez le paramètre isUniqueIdentifier à true, le SDK lie les données flushées au visiteur associé à l’identifiant spécifié.
Le paramètre
isUniqueIdentifier est obsolète. Veuillez utiliser UniqueIdentifier à la place.Le isUniqueIdentifier peut être utile dans des situations particulières ; par exemple, si vous ne pouvez pas accéder au visitorCode anonyme attribué à un visiteur, mais que vous pouvez utiliser un ID interne lié à ce visiteur via la fusion de sessions.Arguments
Return value
Exceptions thrown
getVariation()
- 📨 Envoie des données de tracking à Kameleoon (selon le paramètre
track)
Variation assignée à un visiteur donné pour un feature flag spécifique.
Cette méthode prend un visitorCode et une featureKey comme arguments obligatoires. L’argument track est optionnel et vaut true par défaut.
Elle renvoie la Variation assignée au visiteur. Si le visiteur n’est associé à aucune règle de feature flag, la méthode renvoie la Variation par défaut pour le feature flag donné.
Assurez-vous qu’une gestion appropriée des erreurs est implémentée dans votre code pour gérer les exceptions potentielles.
La variation par défaut fait référence à la variation assignée à un visiteur lorsqu’il ne correspond à aucune règle de delivery prédéfinie pour un feature flag. En d’autres termes, c’est la variation de repli appliquée à tous les utilisateurs qui ne sont pas ciblés par des règles spécifiques. Elle est représentée comme la variation dans la section “Then, for everyone else…” d’une interface de gestion.
Arguments
Return value
Exceptions thrown
getVariations()
- 📨 Envoie des données de tracking à Kameleoon (selon le paramètre
track)
Variation assignés à un visiteur donné pour l’ensemble des feature flags.
Cette méthode itère sur tous les feature flags disponibles et renvoie la Variation assignée pour chaque flag associé au visiteur spécifié. Elle prend visitorCode comme argument obligatoire, tandis que onlyActive et track sont optionnels.
- Si
onlyActiveest défini àtrue, la méthodegetVariations()renverra les variations des feature flags à condition que l’utilisateur ne soit pas bucketé avec la variationoff. - Le paramètre
trackcontrôle si la méthode suivra ou non les assignations de variation. Par défaut, il est défini àtrue. S’il est défini àfalse, le tracking sera désactivé.
Variation correspondantes comme valeurs. Si aucune variation n’est assignée pour un feature flag, la méthode renvoie la Variation par défaut pour ce flag.
Une gestion appropriée des erreurs doit être implémentée pour gérer les exceptions potentielles.
La variation par défaut fait référence à la variation assignée à un visiteur lorsqu’il ne correspond à aucune règle de delivery prédéfinie pour un feature flag. En d’autres termes, c’est la variation de repli appliquée à tous les utilisateurs qui ne sont pas ciblés par des règles spécifiques. Elle est représentée comme la variation dans la section “Then, for everyone else…” d’une interface de gestion.
Arguments
Return value
Exceptions thrown
setForcedVariation()
La méthode vous permet d’assigner par programmation uneVariation spécifique à un utilisateur, en contournant le processus d’évaluation standard. Cela est particulièrement précieux pour les expériences contrôlées où la logique d’évaluation habituelle n’est pas requise ou doit être ignorée. Cela peut également être utile dans des scénarios tels que le débogage ou les tests personnalisés.
Lorsqu’une variation forcée est définie, elle remplace la logique d’évaluation en temps réel de Kameleoon. Les processus tels que la segmentation, les conditions de ciblage et les calculs algorithmiques sont ignorés. Pour préserver la segmentation et les conditions de ciblage pendant une expérience, définissez plutôt forceTargeting=false.
Les variations simulées ont toujours la priorité dans l’ordre d’exécution. Si un calcul de variation simulée est déclenché, il sera entièrement traité et terminé en premier.
Arguments
Exceptions thrown
Dans la plupart des cas, seule l’erreur de base,
KameleoonException, doit être gérée, comme illustré dans l’exemple. Cependant, si différents types d’erreurs nécessitent une réponse, gérez chacune séparément en fonction des exigences spécifiques. De plus, pour une fiabilité accrue, les erreurs générales du langage peuvent être gérées en incluant Exception.evaluateAudiences()
- 📨 Envoie des données de tracking à Kameleoon
evaluateAudiences() doit être appelée après que toutes les données de visiteur pertinentes ont été définies ou mises à jour, et juste avant d’obtenir une variation de feature ou de vérifier un feature flag. Cette approche garantit que le visiteur est évalué par rapport aux données les plus récentes disponibles, permettant une assignation d’audience précise basée sur tous les critères.
Après avoir appelé cette méthode, vous pouvez effectuer une analyse détaillée des performances des segments dans Audiences Explorer.
Arguments
Exceptions thrown
Dans la plupart des cas, seule l’erreur de base,
KameleoonException, doit être gérée, comme illustré dans l’exemple. Cependant, si différents types d’erreurs nécessitent une réponse, gérez chacune séparément en fonction des exigences spécifiques. De plus, pour une fiabilité accrue, les erreurs générales du langage peuvent être gérées en incluant Exception.getFeatureList()
Cette méthode s’appelait auparavant
obtainFeatureList, qui a été supprimée dans la version 4.0.0 du SDK.Return value
getDataFile()
Renvoie la configuration actuelle du SDK sous forme d’objetDataFile.
Return value
Visitor data
getVisitorCode()
Cette méthode s’appelait auparavant
obtainVisitorCode, qui a été supprimée dans la version 4.0.0 du SDK.getVisitorCode() doit être appelée pour obtenir le visitorCode Kameleoon pour le visiteur actuel. Cette méthode est particulièrement importante lors de l’utilisation de Kameleoon dans un environnement mixte front-end et back-end, où la cohérence de l’identification de l’utilisateur doit être garantie. La logique d’implémentation est décrite ici :
-
Nous vérifions si un cookie
kameleoonVisitorCodeou un paramètre de requête associé à la requête HTTP actuelle peut être trouvé. Si c’est le cas, nous utilisons cekameleoonVisitorCodecomme identifiant du visiteur. -
Si aucun cookie / paramètre n’est trouvé dans la requête actuelle, nous générons soit un nouvel identifiant aléatoire, soit nous utilisons l’argument
defaultVisitorCodecomme identifiant s’il est passé. Ce processus permet à nos clients d’utiliser leurs propres identifiants comme visitor codes, s’ils le souhaitent. Cette flexibilité présente l’avantage supplémentaire de faire correspondre les visiteurs Kameleoon avec leurs propres utilisateurs sans recherches supplémentaires dans une table de correspondance. -
Quoi qu’il en soit, le cookie
kameleoonVisitorCodecôté serveur (via l’en-tête HTTP) est défini avec la valeur appropriée. Ensuite, la méthode renvoie cette valeur d’identifiant.
La méthode
getVisitorCode() vous permet de définir des variations simulées pour un visiteur. Lorsque les cookies (d’une requête ou d’un document) contiennent la clé kameleoonSimulationFFData, le processus d’évaluation standard est contourné. Au lieu de cela, la méthode renvoie directement une Variation basée sur les données fournies.Vous pouvez appliquer des simulations de deux manières :- Automatiquement (recommandé) : Si vous utilisez Kameleoon Web Experimentation ou le SDK en Hybrid mode, le cookie est créé automatiquement lors de la simulation de l’affichage d’une variante à l’aide du Simulation Panel.
- Manuellement : Définissez manuellement le cookie
kameleoonSimulationFFData.
- Simulated variations : affectent le résultat global du feature flag.
- Forced variations : sont spécifiques à une expérience individuelle.
kameleoonSimulationFFData respecte ce format :kameleoonSimulationFFData={"featureKey":{"expId":10,"varId":20}}: simule la variation avecvarIdde l’expérienceexpIdpour lafeatureKeydonnée.kameleoonSimulationFFData={"featureKey":{"expId":0}}: simule la variation par défaut (définie dans la section Then, for everyone else in Production, serve) pour lafeatureKeydonnée.
encodeURIComponent.Arguments
Return value
addData()
La méthodeaddData() ajoute des données de ciblage au stockage pour que d’autres méthodes puissent utiliser ces données pour décider de cibler ou non le visiteur actuel.
La méthode addData() ne renvoie aucune valeur et n’interagit pas avec les serveurs back-end de Kameleoon d’elle-même. Au lieu de cela, toutes les données déclarées sont enregistrées pour une transmission future à l’aide de la méthode flush(). Cette approche réduit le nombre d’appels serveur effectués, car les données sont généralement regroupées en un seul appel serveur déclenché par flush().
La méthode trackConversion() envoie également toutes les données précédemment associées, tout comme flush(). Il en va de même pour les méthodes getVariation() et getVariations() si une règle d’expérimentation est déclenchée.
Arguments
Exceptions
flush()
- 📨 Envoie des données de tracking à Kameleoon
flush() collecte les données Kameleoon liées au visiteur. Elle envoie ensuite une requête de tracking, avec toutes les données ajoutées à l’aide de la méthode addData, qui n’ont pas encore été envoyées en utilisant l’une de ces méthodes. flush() est non bloquant car l’appel serveur est effectué de manière asynchrone.
flush vous permet de contrôler quand les données associées à un visitorCode donné sont envoyées à nos serveurs. Par exemple, si vous appelez addData() une douzaine de fois, il serait inefficace d’envoyer les données au serveur à chaque appel à addData(). Il vous suffit donc d’appeler flush() une seule fois.
Si vous spécifiez un visitorCode, la méthode flush() utilise ce code comme identifiant unique du visiteur, ce qui est utile pour la cross-device experimentation. Lorsque vous spécifiez un visitorCode et définissez le paramètre isUniqueIdentifier à true, le SDK lie les données flushées au visiteur associé à l’identifiant spécifié.
Le paramètre
isUniqueIdentifier est obsolète. Veuillez utiliser UniqueIdentifier à la place.Le isUniqueIdentifier peut être utile dans des situations particulières ; par exemple, si vous ne pouvez pas accéder au visitorCode anonyme attribué à un visiteur, mais que vous pouvez utiliser un ID interne lié à ce visiteur via la fusion de sessions.Arguments
getRemoteData()
Cette méthode s’appelait auparavant
retrieveDataFromRemoteSource, qui a été supprimée dans la version 4.0.0 du SDK.getRemoteData() vous permet de récupérer des données (selon une key passée en argument) pour le siteCode spécifié stocké sur le serveur Kameleoon. Votre site code est spécifié dans KameleoonClientFactory.create(). Habituellement, les données sont stockées sur nos serveurs distants à l’aide de notre Data API. Cette méthode, ainsi que la disponibilité de nos serveurs évolutifs, offre un moyen pratique de stocker des données supplémentaires que vous pouvez récupérer ultérieurement pour votre application.
Arguments
Return value
getRemoteVisitorData()
getRemoteVisitorData() est une méthode asynchrone pour récupérer les Kameleoon Visits Data pour le visitorCode depuis la Kameleoon Data API. La méthode ajoute les données au stockage pour que d’autres méthodes les utilisent lors de la prise de décisions de ciblage.
Les données obtenues à l’aide de cette méthode jouent un rôle important lorsque vous souhaitez :
- utiliser des données collectées depuis d’autres appareils.
- accéder à l’historique d’un utilisateur, comme les pages précédemment visitées lors de visites passées.
- utiliser des données qui ne sont accessibles que côté client, comme les variables datalayer et les objectifs qui se convertissent côté front-end.
Le paramètre
isUniqueIdentifier est obsolète. Veuillez utiliser UniqueIdentifier à la place.Le isUniqueIdentifier peut être utile dans des situations particulières ; par exemple, si vous ne pouvez pas accéder au visitorCode anonyme attribué à un visiteur, mais que vous pouvez utiliser un ID interne lié à ce visiteur via la fusion de sessions.Arguments
Return value
Using parameters in getRemoteVisitorData()
La méthodegetRemoteVisitorData() offre une flexibilité en vous permettant de définir divers paramètres lors de la récupération de données sur les visiteurs. Que vous cibliez en fonction d’objectifs, d’expériences ou de variations, la même approche s’applique à tous les types de données.
Par exemple, supposons que vous souhaitiez récupérer des données sur les visiteurs ayant complété un objectif “Order transaction”. Vous pouvez spécifier des paramètres dans la méthode getRemoteVisitorData() pour affiner votre ciblage. Par exemple, si vous souhaitez cibler uniquement les utilisateurs qui ont converti sur l’objectif lors de leurs cinq dernières visites, vous pouvez définir le paramètre previousVisitAmount à 5 et conversions à true.
La flexibilité montrée dans cet exemple ne se limite pas aux données d’objectif. Vous pouvez utiliser des paramètres dans la méthode getRemoteVisitorData() pour récupérer des données sur une variété de comportements de visiteurs.
Voici la liste des options
kameleoon.types.RemoteVisitorDataFilter disponibles :getVisitorWarehouseAudience()
Cette méthode récupère toutes les données d’audience associées au visiteur dans votre entrepôt de données en utilisant levisitorCode et le warehouseKey spécifiés. Le warehouseKey est généralement votre ID utilisateur interne. Le paramètre customDataIndex correspond aux custom data Kameleoon que Kameleoon utilise pour cibler vos visiteurs. Vous pouvez vous référer à la documentation de warehouse targeting pour des détails supplémentaires. La méthode passe le résultat au futur renvoyé sous forme d’objet CustomData, confirmant que les données ont été ajoutées au visiteur et sont disponibles à des fins de ciblage.
Arguments
Return value
Exceptions thrown
setLegalConsent()
Vous devez utiliser cette méthode pour spécifier si le visiteur a donné son consentement légal pour l’utilisation de données personnelles. Définir le paramètrelegalConsent à false limite les types de données que vous pouvez inclure dans les requêtes de tracking. Cette méthode vous aide à respecter les exigences légales et réglementaires tout en gérant de manière responsable les données des visiteurs. Vous trouverez plus d’informations sur les données personnelles dans la politique de gestion du consentement.
Arguments
Exceptions thrown
Consent revocation behavior
Lorsque vous appelezsetLegalConsent() avec legalConsent=false, le SDK ne supprime pas le cookie kameleoonVisitorCode. Au lieu de cela, il cesse de prolonger la date d’expiration du cookie, permettant au cookie de persister jusqu’à son expiration naturelle.
Si vos exigences de conformité demandent la suppression immédiate du fichier cookie lors du retrait du consentement, vous devez le supprimer manuellement à l’aide des méthodes de gestion natives de cookies de votre framework. Le SDK ne supprimera pas le fichier automatiquement.
Goals and third-party analytics
trackConversion()
- 📨 Envoie des données de tracking à Kameleoon
visitorCode et goalId. De plus, cette méthode accepte également des arguments optionnels revenue, negative et metadata. Le visitorCode est généralement identique à celui utilisé lors du déclenchement de l’expérience.
La méthode trackConversion() ne renvoie aucune valeur. Cette méthode est non bloquante car l’appel serveur est effectué de manière asynchrone.
Le paramètre
isUniqueIdentifier est obsolète. Veuillez utiliser UniqueIdentifier à la place.Le isUniqueIdentifier peut également être utile dans d’autres scénarios particuliers, par exemple lorsque vous ne pouvez pas accéder au visitorCode anonyme qui a été initialement attribué au visiteur, mais que vous avez accès à un ID interne lié au visiteur anonyme via les capacités de fusion de sessions.Arguments
Les valeurs des métadonnées sont accessibles via les exports de données brutes et la page de résultats.Si le paramètre
metadata est fourni, Kameleoon utilisera ces valeurs spécifiées pour la conversion actuelle au lieu de ce qui a été précédemment collecté en utilisant la méthode addData(). Si le paramètre est omis, Kameleoon utilisera les dernières valeurs suivies pour ces CustomData avant la conversion et au sein de la même visite.Kameleoon ne prendra en compte que les valeurs de métadonnées qui sont explicitement passées en paramètres à la méthode trackConversion().Dans l’exemple ci-dessous, Kameleoon associera la conversion uniquement à la valeur de custom data explicitement fournie en paramètre (ici : index 5 avec la valeur ‘Amex Credit Card’).Exceptions
getEngineTrackingCode()
Kameleoon s’intègre à plusieurs solutions d’analytique, notamment Mixpanel, Google Analytics 4 et Segment. Pour suivre correctement les expériences côté serveur, appelez la méthodegetEngineTrackingCode() après que le visiteur a déclenché une expérience. Le SDK renvoie les commandes de queue JavaScript pour les expériences que le visiteur a déclenchées au cours des cinq dernières secondes. Lorsque vous insérez ce code dans la page, Engine.js traite les commandes et envoie les événements d’exposition via l’intégration d’analytique active.
Reportez-vous à hybrid experimentation pour plus d’informations sur l’implémentation de cette méthode.
- Pour utiliser cette fonctionnalité, implémentez à la fois le SDK Java et Kameleoon Engine.js. Étant donné qu’Engine.js n’est utilisé que pour le tracking dans ce flux, vous pouvez installer le tag asynchrone avant la balise
</body>de fermeture. - Si vous souhaitez uniquement suivre les expériences dans Kameleoon et que vous n’avez pas besoin d’envoyer des événements d’exposition à des outils d’analytique tiers, utilisez le JavaScript / TypeScript SDK. Cette option fonctionne bien pour les serverless edge compute platforms. Le SDK JavaScript / TypeScript suit automatiquement les variations lorsque vous appelez
getVisitorCode, à condition que vous ajoutiez les assignations d’expérience correspondantes àwindow.kameleoonQueue.. - Vous pouvez insérer le code de tracking renvoyé directement dans une balise HTML
<script>.
123456 et 234567 sont des IDs d’expérience, et 7890 et 8901 sont des IDs de variation. Dans votre implémentation, le SDK génère ces valeurs dans le code de tracking renvoyé.Arguments
Return value
Events
setEventHandler()
Utilisez cette méthode pour enregistrer un gestionnaire pour les événements du SDK. Le SDK appelle le gestionnaire lorsque l’événement sélectionné se produit. Enregistrer un nouveau gestionnaire pour le même type d’événement remplace le gestionnaire précédent. Passernull comme handler supprime le gestionnaire actuel pour le type d’événement sélectionné.
- DATAFILE_UPDATE
- HTTP_REQUEST
Arguments
Data types
Cette section liste les types de données pris en charge par Kameleoon danscom.kameleoon.Data. Nous fournissons plusieurs types de données standard ainsi que le type CustomData qui vous permet de définir des types de données personnalisés.
Browser
L’ensemble de donnéesBrowser stocké ici peut être utilisé pour filtrer les rapports d’expérience et de personnalisation par toute valeur qui lui est associée.
Conversion
L’ensemble de donnéesConversion stocké ici peut être utilisé pour filtrer les rapports d’expérience et de personnalisation par tout objectif qui lui est associé.
Cookie
Cookie contient des informations sur le cookie stocké sur l’appareil du visiteur.
Geolocation
Geolocation contient les détails de géolocalisation du visiteur.
CustomData
CustomData permet l’association de tout type de données avec chaque visiteur, ce qui en fait un outil efficace pour les conditions de ciblage dans les segments. De plus, il peut être utilisé comme filtre ou breakdown dans les rapports d’expérience. Pour plus d’informations sur les custom data, veuillez consulter cet article.
Définissez les types de custom data dans l’application Kameleoon ou la Data API et utilisez-les depuis le SDK.
-
Chaque visiteur n’est autorisé qu’à une seule
CustomDatapour chaqueindex(name) unique. Ajouter une autreCustomDataavec le mêmeindex(name) remplacera l’existante. - L’index de la custom data peut être trouvé dans le dashboard Custom Data sous la colonne “INDEX”.
- Pour empêcher le SDK d’envoyer les données avec l’index sélectionné aux serveurs Kameleoon pour des raisons de confidentialité, activez l’option : Use this data only locally for targeting purposes lors de la création de la custom data.
-
L’ajout d’une instance
CustomDatacréée avec un nom alors que l’instance du SDK n’est pas initialisée ou que le nom n’est pas enregistré entraînera l’ignorance des données.
Device
PageView
Stocke les événements de page view.L’index (ID) du referrer est disponible dans l’application Kameleoon dans la page de configuration du canal d’acquisition. Attention : cet index commence à 0, donc le premier canal d’acquisition que vous créez pour le site spécifié aurait l’ID 0, et non 1.
UserAgent
Les expériences côté serveur sont plus susceptibles d’être affectées par le trafic de bots que les expériences côté client. Kameleoon utilise l’IAB/ABC International Spiders and Bots List pour résoudre ce problème et reconnaître les bots et spiders connus. Kameleoon utilise également le champUserAgent pour filtrer les bots et autres trafics indésirables qui pourraient fausser vos métriques de conversion. Pour plus de détails, consultez notre article d’aide sur le filtrage des bots.
Si vous utilisez des bots internes, nous vous suggérons de passer la valeur curl/8.0 du userAgent pour les exclure de notre analytique.
UniqueIdentifier
Si vous n’ajoutez pasUniqueIdentifier pour un visiteur, le visitorCode est utilisé comme identifiant unique du visiteur, ce qui est utile pour la cross-device experimentation. Lorsque vous ajoutez UniqueIdentifier pour un visiteur, le SDK lie les données flushées au visiteur associé à l’identifiant spécifié.
Le isUniqueIdentifier peut être utile dans des situations particulières ; par exemple, si vous ne pouvez pas accéder au visitorCode anonyme attribué à un visiteur, mais que vous pouvez utiliser un ID interne lié à ce visiteur via la fusion de sessions.
OperatingSystem
OperatingSystem contient des informations sur le système d’exploitation de l’appareil du visiteur.
ApplicationVersion
ApplicationVersion représente le numéro de version sémantique de votre application.
Returned Types
DataFile
LeDataFile contient les détails de configuration du SDK.
Il peut être étendu avec des informations supplémentaires si les clients en ont besoin. Si vous avez besoin de plus de détails, veuillez contacter votre Customer Success Manager.
FeatureFlag
LeFeatureFlag représente un ensemble de propriétés qui définissent un feature flag lui-même — par exemple, ses Variations, Rules, le statut de l’environnement et d’autres détails associés.
Il peut être étendu avec des informations supplémentaires si les clients en ont besoin. Si vous avez besoin de plus de détails, veuillez contacter votre Customer Success Manager.
Rule
LaRule représente un ensemble de propriétés qui définissent une règle elle-même — par exemple, ses Variations.
Elle peut être étendue avec des informations supplémentaires si les clients en ont besoin. Si vous avez besoin de plus de détails, veuillez contacter votre Customer Success Manager.
Variation
Variation contient des informations sur la variation assignée du visiteur (ou la variation par défaut, si aucune assignation spécifique n’existe).
- L’objet
Variationfournit des détails sur la variation assignée et son expérience associée, tandis que l’objetVariablecontient des détails spécifiques sur chaque variable au sein d’une variation. - Assurez-vous que votre code gère le cas où
idouexperimentIdpeuvent êtrenull, indiquant une variation par défaut. - La map
variablespeut être vide si aucune variable n’est associée à la variation.
Variable
Variable contient des informations sur une variable associée à la variation assignée.
Deprecated methods
getFeatureVariationKey()
- 📨 Envoie des données de tracking à Kameleoon
Utilisez
getVariation() à la place.visitorCode et une featureKey comme arguments obligatoires pour obtenir la variation key pour l’utilisateur et le feature.
Si l’utilisateur n’a jamais été associé à ce feature flag, le SDK renvoie une variation key assignée aléatoirement (selon les règles du feature flag). Si un utilisateur avec le visitorCode spécifié est déjà enregistré avec ce feature flag, le SDK détecte la valeur précédente de variation key. Si l’utilisateur ne correspond à aucune des règles, la valeur par défaut est renvoyée, que vous pouvez personnaliser dans l’application Kameleoon.
Assurez-vous de capturer et de gérer les exceptions potentielles.
Si vous spécifiez un visitorCode, la méthode flush() l’utilise comme identifiant unique du visiteur, ce qui est utile pour la cross-device experimentation. Lorsque vous spécifiez un visitorCode et définissez le paramètre isUniqueIdentifier à true, le SDK lie les données flushées au visiteur associé à l’identifiant spécifié.
Le paramètre
isUniqueIdentifier est obsolète. Veuillez utiliser UniqueIdentifier à la place.Le isUniqueIdentifier peut être utile dans des situations particulières ; par exemple, si vous ne pouvez pas accéder au visitorCode anonyme attribué à un visiteur, mais que vous pouvez utiliser un ID interne lié à ce visiteur via la fusion de sessions.Arguments
Return value
Exceptions thrown
getActiveFeatures()
Utilisez
getVariations() à la place.Arguments
Return value
Exceptions thrown
getActiveFeatureListForVisitorCode()
- Utilisez
getVariations()à la place. - Cette méthode s’appelait auparavant
obtainFeatureListForVisitorCode, qui a été supprimée dans la version4.0.0du SDK.
visitorCode. Renvoie uniquement les feature flags actifs pour le visiteur spécifié.
Arguments
Return value
getFeatureVariable()
- 📨 Envoie des données de tracking à Kameleoon
Utilisez
getVariation() à la place.visitorCode, une featureKey et une variableKey comme arguments obligatoires pour obtenir la variable de la variation key pour l’utilisateur spécifié.
Si un utilisateur n’a jamais été associé à ce feature flag, le SDK renvoie une valeur de variable assignée aléatoirement de la variation key selon les règles du feature flag. Si un utilisateur avec le visitorCode spécifié est déjà enregistré avec ce feature flag, le SDK renvoie la valeur de variable pour la variation précédemment associée. Si l’utilisateur ne correspond à aucune des règles, la variable par défaut est renvoyée.
Assurez-vous de capturer et de gérer les exceptions potentielles.
Si vous spécifiez un visitorCode, la méthode getFeatureVariable() utilise le code comme identifiant unique du visiteur, ce qui est utile pour la cross-device experimentation. Lorsque vous spécifiez un visitorCode et définissez le paramètre isUniqueIdentifier à true, le SDK lie les données flushées au visiteur associé à l’identifiant spécifié.
Le paramètre
isUniqueIdentifier est obsolète. Veuillez utiliser UniqueIdentifier à la place.Le isUniqueIdentifier peut être utile dans des situations particulières ; par exemple, si vous ne pouvez pas accéder au visitorCode anonyme attribué à un visiteur, mais que vous pouvez utiliser un ID interne lié à ce visiteur via la fusion de sessions.Arguments
Return value
Exceptions thrown
getFeatureVariables()
- 📨 Envoie des données de tracking à Kameleoon
Utilisez
getVariation() à la place.visitorCode spécifié est déjà enregistré avec ce feature flag, le SDK renvoie les valeurs de variables pour la variation précédemment utilisée. Si l’utilisateur ne correspond à aucune des règles, les variables par défaut sont renvoyées.
Assurez-vous de capturer et de gérer les exceptions potentielles.
Arguments
Return value
Exceptions thrown
getFeatureVariationVariables()
- Utilisez
getVariation()à la place. - Cette méthode s’appelait auparavant
getFeatureAllVariables, qui a été supprimée dans la version4.0.0du SDK.
featureKey et variationKey. Elle renvoie les données avec le type Map<String, Object> tel que défini dans l’application Kameleoon. Elle lève une exception (KameleoonException.FeatureNotFound) si le feature que vous demandez n’est pas trouvé dans la configuration interne du SDK.