Comment extraire des données d'analyse de votre application iOS

En tant qu’entreprise axée sur les données, il est essentiel que nous comprenions comment nos utilisateurs utilisent l’application afin d’améliorer leur expérience. Dans ce blog, je vais expliquer comment nous extrayons et utilisons les données analytiques de la version iOS de l’application.

Analyse mobile | source: tatvic.com

Chez Revolut, nous utilisons deux plates-formes principales (Google Analytics et Amplitude) pour agréger les informations d'une multitude de points de données. Aujourd’hui, nous allons vous montrer comment créer une solution extensible, fiable et testable pour l’analyse mobile.

la mise en oeuvre

Nous commençons par définir un protocole de suivi des événements pouvant survenir dans notre application. Appelons-le TrackingEventType.

Ce protocole comporte deux attributs: un identifiant unique, utilisé pour différencier un événement d'un autre, et des propriétés, que nous utilisons pour partager des données avec les plates-formes d'analyse.

Ensuite, nous créons une énumération où chaque cas représente un seul événement.

Nous devons maintenant implémenter TrackingEventType pour configurer la relation entre chaque cas, ses identificateurs et ses propriétés.

Génial, nous savons maintenant quels événements suivre, mais nous ne savons pas comment les suivre. Nous devons définir un ou plusieurs fournisseurs. Fournisseur est une classe qui représente un système d'analyse tel que Google Analytics ou Amplitude. Examinons un protocole auquel tous les fournisseurs doivent se conformer:

Un fournisseur fait 4 choses:

  • Se configure pour suivre les événements
  • Accepte les événements et les suit activement
  • Associe des sessions de suivi à un utilisateur donné
  • Dissocie la session de suivi d'un utilisateur

Dans notre cas, puisque nous utilisons à la fois GA et Amplitude, nous devons créer des fournisseurs distincts pour chaque système d’analyse. Pour suivre les événements dans Amplitude, nous créons AmplitudeProvider. Regardons l’implémentation.

Bien que la mise en œuvre soit assez simple, il vaut la peine de passer rapidement en revue toutes les étapes.

  • Dans la méthode de configuration, nous établissons une connexion avec Amplitude. Cela signifie généralement que nous devons fournir une sorte de clé pour le système d'analyse.
  • Dans track (event: TrackingEventType), nous prenons un identifiant avec les propriétés d'un événement et l'envoyons directement à Amplitude.
  • En association (avec utilisateur: utilisateur), nous définissons des variables spécifiques à l'utilisateur pour une journalisation de session correcte. Notez que vous devez appeler cette méthode dès qu'un utilisateur se connecte.
  • disassociateUser est un endroit où vous devez rompre le lien entre la session de suivi en cours et l'utilisateur. Vous devez l'appeler après la déconnexion de l'utilisateur.

Le dernier cours dont nous avons besoin est un client, ce qui fait deux choses. Il stocke tous les fournisseurs et transmet les événements aux fournisseurs. Regardons le protocole:

TrackingClientType hérite de TrackingProviderType, car il transfère tous les appels à un ensemble de fournisseurs. Voyons comment nous pouvons implémenter le client.

Comme vous pouvez le constater, le client stocke simplement les fournisseurs et leur transmet tous les événements. Dans le reste de l'application, vous travaillerez presque exclusivement avec une instance de client.

Usage

Le meilleur moyen de gérer notre système d’analyse est de créer une instance de TrackingClient et de l’alimenter avec tous les fournisseurs requis. Un bon endroit pour le faire est la méthode didFinishLaunchingWithOptions. Ensuite, appelez la méthode setup () pour permettre aux fournisseurs de se configurer correctement.

Au moment de commencer le suivi des événements, il vous suffit de transmettre un événement au client de suivi de la manière suivante:

C’est bon - vous êtes prêt à partir!

Bonus - Testabilité

Vous vous demandez probablement pourquoi nous avons caché toutes les classes derrière des protocoles. Nous l'avons fait dans un but - la testabilité. Puisque nous ne nous appuyons pas sur une implémentation particulière, nous pouvons facilement créer une implémentation spéciale de TrackingClientType, ce qui nous permet de tester notre code.

Imaginez que vous travaillez sur une page où les utilisateurs peuvent acheter vos produits et que vous souhaitez pouvoir visualiser tous les achats effectués dans Google Analytics.

Pour rendre cela possible, nous allons créer un fournisseur factice qui exposera tous les événements suivis.

Vous pouvez maintenant remplacer un client normal par un client factice et effectuer des tests!

Étant donné que TestTrackingClient expose tous les événements suivis via la propriété events, il est très facile de vérifier le suivi de notre code.

Conclusion

À ce jour, vous devriez être capable de créer votre propre solution extensible, fiable et testable pour votre application iOS. La solution est basée sur une programmation basée sur un protocole et sur une énumération avec les valeurs associées. N'hésitez pas à consulter le code source.

Comme toujours, vos commentaires, commentaires et suggestions sont les bienvenus.