Cette documentation explique comment installer, initialiser et utiliser le SDK Flutter Eulerian pour tracker les événements applicatifs sur iOS, Android et Web.
Ajoutez le package à votre application avec la commande suivante :
flutter pub add eanalytics
Vous pouvez également le déclarer manuellement dans votre fichier pubspec.yaml :
Puis importez le SDK dans votre code Dart :
import 'package:eanalytics/eanalytics.dart';
Initialisez le SDK une seule fois, avant toute requête de tracking.
L’appel à Eulerian.init doit être effectué au niveau racine de votre application, par exemple dans le initState de votre widget principal.
await Eulerian.init('your.tracking-domain.com');
Lors de l’initialisation, le SDK tente également de rejouer les requêtes de tracking échouées précédemment et stockées localement.
Domaine de tracking Eulerian dédié. Il ne doit pas contenir .eulerian.com.
requestTrackingAuthorization
iOS uniquement. Affiche la boîte de dialogue App Tracking Transparency afin de collecter l’IDFA.
Active ou désactive les logs du SDK dans la console.
Utilisez Eulerian.track depuis n’importe quel endroit de votre application en lui passant une liste de propriétés trackables.
EAProducts(path: '/add/products')
..addProduct(Product(ref: 'p1', name: 'Product 1', group: 'test_group'))
Les événements standards sont envoyés en lot via une requête vers le collecteur Eulerian.
En cas d’échec de la requête, les payloads sont stockés localement puis rejoués automatiquement :
- au prochain appel à
Eulerian.track ; - ou au prochain lancement de l’application, après
Eulerian.init.
Eulerian est le singleton principal du SDK.
Eulerian.init(domain, {requestTrackingAuthorization, enableLogger})
Initialise le SDK et rejoue les payloads stockés localement.
Eulerian.track(List<EAProperty> properties)
Tracke une liste de propriétés. Les événements EATpView et EATpClick sont envoyés via GET ; tous les autres événements sont regroupés dans un unique POST.
Retourne l’identifiant de l’appareil utilisé comme euidl : Android ID sur Android, identifierForVendor sur iOS. Retourne une chaîne vide si le SDK n’est pas initialisé.
EAProperty est la classe de base de tout événement trackable.
Elle peut également être utilisée directement pour tracker une simple vue de page.
Le constructeur requiert un path, qui correspond au chemin de la page. Si le / initial est absent, il est ajouté automatiquement.
EAProperty(path: '/home')
..setEmail('johndoe@example.com')
..setPageGroup('homepage')
Ces setters sont hérités par tous les modèles d’événements.
Chemin de la page de l’événement.
setLocation({latitude, longitude})
Coordonnées géographiques.
setNewCustomer(bool isNew)
Marque le visiteur comme nouveau client : 1 ou 0.
Marque le hit comme un appel autonome, sans vue de page comptabilisée.
Adresse e-mail du visiteur.
Libellé de la page. Les valeurs séparées par des virgules sont autorisées.
Identifiant visiteur fourni par votre application.
setProfile(String profile)
setPageGroup(String group)
Attache une action à la page.
setProperty(SiteCentric property)
setCFlag(SiteCentric cFlag)
Indicateurs de conversion site-centric.
setCustomParam(String key, String value)
Ajoute une paire clé / valeur personnalisée.
Tous les modèles ci-dessous étendent EAProperty.
Les setters de EAProperty sont donc disponibles sur chacun d’eux.
Tracke l’affichage d’un ou plusieurs produits.
EAProducts(path: '/product/page')
..addProduct(Product(ref: 'p1', name: 'Product 1', group: 'shoes'))
..addProduct(Product(ref: 'p2', name: 'Product 2', group: 'shoes')),
addProduct(Product product)
Ajoute un produit à la liste products.
Tracke le contenu du panier du visiteur.
L’indicateur scart est positionné automatiquement.
..addProduct(product: Product(ref: 'p1'), amount: 19.99, quantity: 2),
Si true, le panier est cumulatif avec scartcumul.
addProduct({product, amount, quantity})
Ajoute un produit au panier. amount et quantity sont appliqués au produit s’ils ne sont pas déjà définis.
Tracke un devis avant-vente.
L’indicateur estimate est positionné automatiquement.
EAEstimate(path: '/estimate', ref: 'EST-001')
..addProduct(product: Product(ref: 'p1'), amount: 149.90, quantity: 1),
setCurrency(String currency)
setPayment(String payment)
addProduct({product, amount, quantity})
Ajoute un produit au devis.
Tracke une commande confirmée.
EAOrder étend EAEstimate, tous les setters de EAEstimate sont donc disponibles.
Le constructeur permet de relier la commande à un devis antérieur via estimateRef.
EAOrder(path: '/order/confirmation', estimateRef: 'EST-001')
..addProduct(product: Product(ref: 'p1'), amount: 149.90, quantity: 1),
setEstimateRef(String ref)
Référence du devis d’origine.
Tracke une requête effectuée dans le moteur de recherche interne de l’application.
search: Search(name: 'shoes', results: 42),
Tracke une ou plusieurs actions utilisateur, comme des clics ou interactions.
À combiner avec setStandalone() lorsque les hits ne contiennent que des actions et ne doivent pas être comptabilisés comme des vues de page.
..addAction(Action(name: 'button1', mode: 'in'))
..addAction(Action(name: 'newsletter', label: 'footer')
..setParams(Params()..addParam('input', 'test'))),
Ajoute une action à la liste actions.
Les classes suivantes sont utilisées comme briques de base par les différents modèles d’événements.
Représente un produit.
parameters: Params()..addParam('color', 'red'),
Référence produit. Ce champ est requis.
Groupe ou catégorie produit.
Paramètres personnalisés associés au produit.
Représente une action utilisateur.
Action(name: 'button1', mode: 'in', label: 'lbl1,lbl2', ref: 'ref1')
..setParams(Params()..addParam('input', 'test'));
Nom de l’action. Ce champ est requis.
Mode de l’action. Optionnel.
Libellé de l’action. Optionnel.
Référence associée à l’action. Optionnel.
Permet d’ajouter des paramètres clé / valeur arbitraires aux produits, actions et recherches.
MapEntry('baz', [1, 2, 3]),
Ou avec addParam :
Params()..addParam('foo', 'bar');
Décrit une recherche interne utilisée par EASearch.
parameters: Params()..addParam('foo', 'bar'),
Permet de renseigner des clés / valeurs site-centric pour setProperty et setCFlag.
Chaque valeur est une liste de chaînes.
SiteCentric()..addParam('prop', ['foo', 'baz']);
Le SDK fournit un flux de tracking merchandising dédié pour les impressions et clics sur les vitrines produits, listes de recommandations et surfaces similaires.
Deux modèles sont disponibles :
Contrairement aux autres événements, envoyés en au collecteur standard, les événements merchandising sont envoyés via des requêtes sur des chemins dédiés.
Si une requête échoue, le payload est stocké localement puis rejoué avec le prochain lot POST en attente.
https://<domain>/tpview/<siteName>/<campaignName>/<placement>/<siteName>/generic/<random>
?evprdr0=<ref>&evprdpos0=<position>&...&url=<encoded page url>&<global context>
https://<domain>/tpclick/<siteName>/<campaignName>/<placement>/<siteName>/generic/<random>
?ecprdr=<ref>&ecpos=<position>&ecnbr=<total>&eurl=<encoded landing url>&<global context>
Le SDK ajoute automatiquement les paramètres de contexte global à chaque requête merchandising.
Aucun code supplémentaire n’est nécessaire.
Les paramètres ajoutés sont les mêmes que ceux utilisés lors des appels au collecteur :
euidlea-appnameeosehw- identifiants publicitaires :
ea-android-adidea-ios-idfaea-ios-idfv- qualification de l’appareil via
edev
Valeurs possibles pour edev :
AppNativeIOSphoneAppNativeIOStabletAppNativeAndroidphoneAppNativeAndroidtablet
Ces valeurs permettent de qualifier le trafic comme provenant d’une application native.
L’identifiant visiteur uid est également ajouté lorsqu’il est défini sur l’événement via setUID().
EATpView et EATpClick exposent les mêmes descripteurs de campagne :
Emplacement de diffusion.
URL associée à l’événement.
La signification de url diffère selon le type d’événement :
URL de destination du produit cliqué
final view = EATpView(path: 'homepage')
..campaignName = 'summer_sale'
..placement = 'banner_top'
..url = 'https://example.com/home'
..addProduct('PROD_001', position: 0)
..addProduct('PROD_002', position: 1);
addProduct(String ref, {int? position})
Ajoute un produit affiché, avec sa position optionnelle dans le bloc.
setProducts(List<List<dynamic>> products)
Remplace l’intégralité de la liste de produits. Les entrées peuvent être [ref] ou [ref, position].
final click = EATpClick(path: 'homepage')
..campaignName = 'summer_sale'
..placement = 'banner_top'
..url = 'https://example.com/home'
..setProduct('PROD_001', 2);
setProduct(String ref, int position, {int? totalProducts})
Définit le produit cliqué, sa position et, en option, le nombre total de produits dans le bloc.
setProductMap(Map<String, dynamic> product)
Définit le produit à partir d’une map brute avec les clés ref, position et totalProducts.
Le SDK attache automatiquement les propriétés suivantes à chaque payload, selon la plateforme.
EAPropertyKey.APP_VERSION
EAPropertyKey.ANDROID_ADID
EAPropertyKey.INSTALL_REFERRER
EAPropertyKey.SDK_VERSION
Notes :
- La propriété
url correspond : - à l’identifiant de bundle sur iOS ;
- au nom du package sur Android ;
- au chemin de l’URL courante sur le Web.
- La propriété
ea-ios-idfa nécessite l’option requestTrackingAuthorization lors de l’initialisation du SDK sur iOS.
Si vous souhaitez utiliser l’identifiant publicitaire IDFA, vous devez mettre à jour le fichier Info.plist.
Le fichier se trouve généralement dans le répertoire suivant :
Ajoutez la clé NSUserTrackingUsageDescription avec un message décrivant votre usage :
<key>NSUserTrackingUsageDescription</key>
<string>This identifier will be used to deliver personalized analytics.</string>
Si votre application appelle l’API App Tracking Transparency, cette chaîne est obligatoire. Elle sera affichée dans l’alerte système de permission.
Passez ensuite l’option requestTrackingAuthorization lors de l’initialisation du SDK :
Eulerian.init('your.tracking-domain.com', requestTrackingAuthorization: true);
Les requêtes de tracking échouées sont stockées localement via shared_preferences.
Cela concerne notamment :
- les erreurs réseau ;
- les réponses HTTP non
2xx.
Les payloads stockés sont automatiquement rejoués :
- au prochain appel à
Eulerian.track, fusionnés avec le nouveau lot ; - ou au prochain lancement de l’application, une fois
Eulerian.init terminé.
Une application d’exemple complète est disponible pour iOS, Android et Web dans le répertoire suivant :