Analytics : événements, analyses et funnels
Ce que tes utilisateurs font dans ton app, mesuré par le SDK et lu dans le studio : sessions, écrans, événements métier, analyses, funnels, feature flags et tests A/B.
Le SDK d'abord, le dashboard ensuite.
Ce qu'il te faut
| Plateforme | Paquet | Symbole |
|---|---|---|
| iOS 16 | produit SPM AppwinAnalytics | AppwinAnalytics |
| Android 7.0 (API 24) | io.appwin:appwin-analytics | io.appwin.analytics.AppwinAnalytics |
Natif uniquement. Ni le plugin Flutter ni le pont React Native n'exposent Analytics aujourd'hui - Community, Support et Notifications, si. Sur ces deux plateformes, le produit reste à brancher.
Deux conditions avant qu'un événement parte :
AppwinCore.configureappelé au démarrage - cf. Installer le SDK.initialize()qui répondready. C'est lui qui démarre la capture : les sessions et les installations ne sont comptées qu'à partir de là.
Le gros du travail - file persistée, envoi par lots, tampon hors ligne, suivi
de session, consentement - vit dans AppwinCore. Le module Analytics est la
surface publique du produit, comme AppwinSupport l'est du sien.
Capturer
import AppwinAnalytics
AppwinCore.configure(projectAppId: "ton-app-id")
if await AppwinAnalytics.initialize().isReady {
AppwinAnalytics.screen("home")
AppwinAnalytics.track("purchase", props: [
"plan": "pro",
"seats": 3,
])
}
track ne bloque pas et ne lève jamais : l'événement est écrit sur disque puis
envoyé par lots, hors ligne compris.
Ce que le SDK capture sans toi : session_start, session_end (avec sa
durée), app_install, app_update. screen_view vient de ton appel à
screen.
Les règles de nommage
| Règle | Détail |
|---|---|
| Nom d'événement | ^[a-z][a-z0-9_]{0,63}$ - minuscules, chiffres, tirets bas |
| Noms réservés | session_start, session_end, screen_view, app_install, app_update : le SDK les émet, tu ne les réécris pas |
| Propriétés | 20 clés au maximum ; valeurs en chaîne, booléen ou nombre |
| Longueurs | Valeur de chaîne tronquée à 256 caractères, nom d'écran à 128 |
Un événement invalide est ignoré, avec une trace en debug. Pas d'exception : une mesure ne doit pas faire tomber l'app qu'elle mesure.
Le consentement
Le défaut est granted - un opt-out. La plupart des studios relèvent de
l'exemption « mesure d'audience première partie » et n'ont pas d'écran de
consentement à afficher.
Si le tien en a un, passe unknown au lancement : les événements sont capturés
et persistés, mais rien ne part. Relaie ensuite la réponse de l'utilisateur.
// Au lancement, avant même configure si tu veux.
AppwinAnalytics.setConsent(.unknown)
// Puis, quand l'utilisateur a répondu :
AppwinAnalytics.setConsent(.granted) // envoie l'arriéré
AppwinAnalytics.setConsent(.denied) // purge et coupe la capture
| Valeur | Capture | Envoi |
|---|---|---|
granted | Oui | Oui, l'arriéré part avec |
unknown | Oui, sur disque | Non |
denied | Non | Non, et la file est purgée |
La surface publique
| Fonction | Ce qu'elle fait |
|---|---|
initialize() | Demande le verdict serveur et démarre la capture. Avant tout le reste. |
track(name, props) | File un événement personnalisé. Ne bloque pas, ne lève pas. |
screen(name) | Émet le screen_view réservé. Les noms d'écran alimentent les étapes de funnel et les répartitions. |
flush() | Force l'envoi immédiat de la file. Rarement utile : elle part déjà au volume, au minuteur, et au passage en arrière-plan. |
setConsent(consent) | Règle le consentement RGPD : granted, unknown ou denied. |
isReady | Le dernier verdict d'initialize(), sans nouvel appel. |
Lire les données
Analytics dans la barre latérale, cinq entrées :
| Entrée | Ce qu'on y fait |
|---|---|
| Accueil | La santé du flux (dernier événement reçu), les dashboards épinglés et ceux vus récemment |
| Analyses | Une analyse = une requête sauvegardée : graphique dans le temps, funnel ou rétention |
| Dashboards | Des analyses posées en tuiles sur un tableau partagé, avec ses propres filtres de période |
| Feature flags | Un interrupteur par clé, avec pourcentage de déploiement et variantes |
| Tests A/B | Un flag multivariant plus une métrique, et les résultats par variante |
Une analyse se crée depuis Nouvelle analyse, jamais en SQL. Les filtres posés au niveau d'un dashboard se fusionnent sur chacune de ses tuiles : la période remplace celle de l'analyse, rien n'est dupliqué.
Le compteur d'événements du mois est affiché sur la page. Au-delà du quota de ton plan, les nouveaux événements sont ignorés - ce n'est pas une facturation silencieuse, mais ce n'est pas rattrapable non plus.
Suite
- Installation - installer et initialiser le SDK
- Notifications - déclencher un message sur un événement
- Identité - ce qui relie un appareil à une personne