Blog

Setup Google Analytics 4 Ott Video Services

Tech Talk

Analytics

OTT

COMMENT CONFIGURER GOOGLE ANALYTICS 4 POUR LES SERVICES VIDÉO OTT

Jan 28, 2020

Découvrez comment exploiter Google Analytics 4 pour suivre les événements de lecture vidéo pour votre service de streaming vidéo OTT afin de connaître la popularité de votre contenu.

En 2019, Google a commencé à supprimer les rapports sur les applications mobiles à l'aide de son SDK Google Analytics. Les entreprises souhaitant collecter des données d'utilisation à partir de leurs applications mobiles OTT ont donc dû passer au service qui a succédé à Google : Google Analytics 4.

Google Analytics 4 est un outil puissant pour suivre les événements de lecture de vidéos OTT générés par vos applications et votre site. De plus, il vous permet de suivre la popularité du contenu sur votre service à un niveau bien plus profond qu'un simple nombre de vues. Vous pourrez également savoir combien d'utilisateurs regardent le contenu en temps quasi réel.

DÉMARRER AVEC GOOGLE ANALYTICS 4

Si vous êtes en mesure de commencer à collecter des données à partir de zéro, nous vous recommandons d'utiliser le nouveau type de propriété Google Analytics 4 pour l'analyse des données OTT (anciennement connu sous le nom d'App + Web). Ce type de propriété permet de suivre le trafic de votre site web et de votre application dans une seule vue combinée dans Google Analytics. Google fournit un excellent guide étape par étape pour la création d'une propriété Google Analytics 4 sur son site d'assistance. Plusieurs options de configuration sont disponibles, depuis le démarrage d'un nouveau site sur une propriété Google Analytics 4 jusqu'à l'ajout d'une propriété Google Analytics 4 à un site déjà doté d'Analytics.

DÉVELOPPER POUR LES ÉVÉNEMENTS VIDÉO OTT DANS GOOGLE ANALYTICS 4

CONFIGURATION INITIALE

Tout d'abord, vous devrez mettre à jour vos applications OTT pour inclure le SDK Firebase, ce que vous pouvez faire en utilisant les guides de démarrage rapide de Google. Si vous avez déjà ajouté un flux de données d'application à votre propriété Google Analytics 4, Analytics crée automatiquement un projet Firebase lié.

ÉVÉNEMENTS DE LECTURE VIDÉO

Ensuite, vous devez mettre à jour votre lecteur vidéo pour qu'il envoie des événements à Google Analytics 4 lorsque certains événements de lecture par l'utilisateur se produisent. Veillez à définir un ID utilisateur afin que tous les événements de lecture vidéo soient liés à un utilisateur spécifique. Il peut s'agir d'un identifiant anonyme (par exemple, si votre site propose des vidéos OTT gratuites sans inscription préalable) ou d'un identifiant d'abonné. N'utilisez pas d'adresse électronique pour l'identification de l'utilisateur, car il s'agit d'informations confidentielles et cela va à l'encontre des conditions d'utilisation de Google. Pour tous les événements de lecture vidéo, définissez un nom d'événement "video_playback" et incluez les paramètres suivants dans l'événement :

Envoyer des événements à Google Analytics 4 lorsque les actions suivantes se produisent :

EXEMPLE DE CODE POUR ANDROID

Cet exemple de code montre les différents types d'événements de lecture qui peuvent être envoyés du lecteur vidéo à Google Analytics 4 :

class MainActivity : AppCompatActivity(){

private lateinit var firebaseAnalytics: FirebaseAnalytics override fun onCreate(savedInstanceState: Bundle?){ super.onCreate(savedInstanceState) // firebase developer documentation // https: //firebase.google.com/docs/reference/android/com/google/firebase/analytics/package-summary firebaseAnalytics = FirebaseAnalytics.getInstance(this) // set user id firebaseAnalytics.setUserId(“test_user_id”) / video playback events / // video start val videoStartBundle = Bundle() videoStartBundle.putString(“video_event”,”start”) videoStartBundle.putString(“video_id”,”tt7984734″) videoStartBundle.putString(“video_title”,”The Lighthouse”) videoStartBundle.putInt(“video_position”,0) videoStartBundle.putInt(“video_duration”,6540) videoStartBundle.putDouble(“video_progress”,0.0) firebaseAnalytics.logEvent(“video_playback”, videoStartBundle) // video pause val videoPauseBundle = Bundle() videoPauseBundle.putString(“video_event”,”pause”) videoPauseBundle.putString(“video_id”,”tt7984734″) videoPauseBundle.putString(“video_title”,”The Lighthouse”) videoPauseBundle.putInt(“video_position”,654) videoPauseBundle.putInt(“video_duration”,6540) videoPauseBundle.putDouble(“video_progress”,10.0) firebaseAnalytics.logEvent(“video_playback”, videoPauseBundle) // video resume val videoResumeBundle = Bundle() videoResumeBundle.putString(“video_event”,”resume”) videoResumeBundle.putString(“video_id”,”tt7984734″) videoResumeBundle.putString(“video_title”,”The Lighthouse”) videoResumeBundle.putInt(“video_position”,654) videoResumeBundle.putInt(“video_duration”,6540) videoResumeBundle.putDouble(“video_progress”,10.0) firebaseAnalytics.logEvent(“video_playback”, videoResumeBundle) // video rewind val videoRewindBundle = Bundle() videoRewindBundle.putString(“video_event”,”rewind”) videoRewindBundle.putString(“video_id”,”tt7984734″) videoRewindBundle.putString(“video_title”,”The Lighthouse”) videoRewindBundle.putInt(“video_position”,327) videoRewindBundle.putInt(“video_duration”,6540) videoRewindBundle.putDouble(“video_progress”,5.0) firebaseAnalytics.logEvent(“video_playback”, videoRewindBundle) // video fast-forward val videoFastForwardBundle = Bundle() videoFastForwardBundle.putString(“video_event”,”fastforward”) videoFastForwardBundle.putString(“video_id”,”tt7984734″) videoFastForwardBundle.putString(“video_title”,”The Lighthouse”) videoFastForwardBundle.putInt(“video_position”,4905) videoFastForwardBundle.putInt(“video_duration”,6540) videoFastForwardBundle.putDouble(“video_progress”,75.0) firebaseAnalytics.logEvent(“video_playback”, videoFastForwardBundle) // video stop val videoStopBundle = Bundle() videoStopBundle.putString(“video_event”,”stop”) videoStopBundle.putString(“video_id”,”tt7984734″) videoStopBundle.putString(“video_title”,”The Lighthouse”) videoStopBundle.putInt(“video_position”,6000) videoStopBundle.putInt(“video_duration”,6540) videoStopBundle.putDouble(“video_progress”,91.74) firebaseAnalytics.logEvent(“video_playback”, videoStopBundle) // video skip val videoSkipBundle = Bundle() videoSkipBundle.putString(“video_event”,”skip”) videoSkipBundle.putString(“video_id”,”tt7984734″) videoSkipBundle.putString(“video_title”,”The Lighthouse”) videoSkipBundle.putInt(“video_position”,6000) videoSkipBundle.putInt(“video_duration”,6540) videoSkipBundle.putDouble(“video_progress”,91.74) firebaseAnalytics.logEvent(“video_playback”, videoSkipBundle) // video progress // send progress events at: // – first 30 seconds reached // – 10%, 20%, 30%, 40%, 50%, 60%, 70%, 80%, 90%, 100% of video completion val videoProgressBundle = Bundle() videoProgressBundle.putString(“video_event”,”progress”) videoProgressBundle.putString(“video_id”,”tt7984734″) videoProgressBundle.putString(“video_title”,”The Lighthouse”) videoProgressBundle.putInt(“video_position”,654) videoProgressBundle.putInt(“video_duration”,6540) videoProgressBundle.putDouble(“video_progress”,10.0) firebaseAnalytics.logEvent(“video_playback”, videoProgressBundle) setContentView(R.layout.activity_main) }}

   override fun onCreate(savedInstanceState: Bundle?){
       super.onCreate(savedInstanceState)

       // firebase developer documentation
       // https: //firebase.google.com/docs/reference/android/com/google/firebase/analytics/package-summary

       firebaseAnalytics = FirebaseAnalytics.getInstance(this)

       // set user id
       firebaseAnalytics.setUserId(“test_user_id”)

       / video playback events /

       // video start
       val videoStartBundle = Bundle()
       videoStartBundle.putString(“video_event”,”start”)
       videoStartBundle.putString(“video_id”,”tt7984734″)
       videoStartBundle.putString(“video_title”,”The Lighthouse”)
       videoStartBundle.putInt(“video_position”,0)
       videoStartBundle.putInt(“video_duration”,6540)
       videoStartBundle.putDouble(“video_progress”,0.0)
       firebaseAnalytics.logEvent(“video_playback”, videoStartBundle)

       // video pause
       val videoPauseBundle = Bundle()
       videoPauseBundle.putString(“video_event”,”pause”)
       videoPauseBundle.putString(“video_id”,”tt7984734″)
       videoPauseBundle.putString(“video_title”,”The Lighthouse”)
       videoPauseBundle.putInt(“video_position”,654)
       videoPauseBundle.putInt(“video_duration”,6540)
       videoPauseBundle.putDouble(“video_progress”,10.0)
       firebaseAnalytics.logEvent(“video_playback”, videoPauseBundle)

       // video resume
       val videoResumeBundle = Bundle()
       videoResumeBundle.putString(“video_event”,”resume”)
       videoResumeBundle.putString(“video_id”,”tt7984734″)
       videoResumeBundle.putString(“video_title”,”The Lighthouse”)
       videoResumeBundle.putInt(“video_position”,654)
       videoResumeBundle.putInt(“video_duration”,6540)
       videoResumeBundle.putDouble(“video_progress”,10.0)
       firebaseAnalytics.logEvent(“video_playback”, videoResumeBundle)

       // video rewind
       val videoRewindBundle = Bundle()
       videoRewindBundle.putString(“video_event”,”rewind”)
       videoRewindBundle.putString(“video_id”,”tt7984734″)
       videoRewindBundle.putString(“video_title”,”The Lighthouse”)
       videoRewindBundle.putInt(“video_position”,327)
       videoRewindBundle.putInt(“video_duration”,6540)
       videoRewindBundle.putDouble(“video_progress”,5.0)
       firebaseAnalytics.logEvent(“video_playback”, videoRewindBundle)

       // video fast-forward
       val videoFastForwardBundle = Bundle()
       videoFastForwardBundle.putString(“video_event”,”fastforward”)
       videoFastForwardBundle.putString(“video_id”,”tt7984734″)
       videoFastForwardBundle.putString(“video_title”,”The Lighthouse”)
       videoFastForwardBundle.putInt(“video_position”,4905)
       videoFastForwardBundle.putInt(“video_duration”,6540)
       videoFastForwardBundle.putDouble(“video_progress”,75.0)
       firebaseAnalytics.logEvent(“video_playback”, videoFastForwardBundle)

       // video stop
       val videoStopBundle = Bundle()
       videoStopBundle.putString(“video_event”,”stop”)
       videoStopBundle.putString(“video_id”,”tt7984734″)
       videoStopBundle.putString(“video_title”,”The Lighthouse”)
       videoStopBundle.putInt(“video_position”,6000)
       videoStopBundle.putInt(“video_duration”,6540)
       videoStopBundle.putDouble(“video_progress”,91.74)
       firebaseAnalytics.logEvent(“video_playback”, videoStopBundle)

       // video skip
       val videoSkipBundle = Bundle()
       videoSkipBundle.putString(“video_event”,”skip”)
       videoSkipBundle.putString(“video_id”,”tt7984734″)
       videoSkipBundle.putString(“video_title”,”The Lighthouse”)
       videoSkipBundle.putInt(“video_position”,6000)
       videoSkipBundle.putInt(“video_duration”,6540)
       videoSkipBundle.putDouble(“video_progress”,91.74)
       firebaseAnalytics.logEvent(“video_playback”, videoSkipBundle)

       // video progress
       // send progress events at:
       // – first 30 seconds reached
       // – 10%, 20%, 30%, 40%, 50%, 60%, 70%, 80%, 90%, 100% of video completion
       val videoProgressBundle = Bundle()
       videoProgressBundle.putString(“video_event”,”progress”)
       videoProgressBundle.putString(“video_id”,”tt7984734″)
       videoProgressBundle.putString(“video_title”,”The Lighthouse”)
       videoProgressBundle.putInt(“video_position”,654)
       videoProgressBundle.putInt(“video_duration”,6540)
       videoProgressBundle.putDouble(“video_progress”,10.0)
       firebaseAnalytics.logEvent(“video_playback”, videoProgressBundle)

       setContentView(R.layout.activity_main)
   }
}

DÉBOGAGE DANS GOOGLE ANALYTICS 4

Google Analytics 4 dispose d'une fonction DebugView qui rend les tests très efficaces. Une fois cette fonction activée, vous verrez un flux d'événements en temps quasi réel dans la console Google Analytics 4. Vous pourrez également voir tous les paramètres et valeurs des événements personnalisés, qui ne sont pas visibles dans la console Google Analytics 4. Nous vous recommandons vivement d'utiliser cette fonctionnalité pour confirmer que vos événements se déclenchent au bon moment et avec toutes les valeurs correctes.

EXPORTER AVEC BIGQUERY

Il existe un nouveau paradigme pour accéder à vos données brutes dans Google Analytics 4 par rapport à Google Analytics. Google Analytics a toujours proposé une API de reporting, alors que Google Analytics 4 propose une base de données : Google BigQuery.

Pour activer BigQuery pour Google Analytics 4, vous devez suivre un certain nombre d'étapes supplémentaires, la première étant de passer à l'offre Blaze de Firebase. Il s'agit d'un plan de paiement à l'utilisation avec un bonus agréable : Google offre des quotas d'utilisation gratuits par mois, de sorte que, selon le volume de trafic généré par vos applications, vous pouvez finir par payer peu ou pas du tout.

Nous vous recommandons d'activer le lien avec BigQuery dès que possible, car les données ne commencent à être fournies qu'à partir de la date à laquelle vous activez la configuration. Les données ne sont pas alimentées rétroactivement dans BigQuery.

La mise en place de BigQuery présente quelques avantages majeurs :

  • Analyse rapide et ad hoc de vos données.
  • Accès facile à vos données brutes.

Certaines données (comme les paramètres personnalisés) ne peuvent pas être visualisées dans leur intégralité dans la console Google Analytics 4, alors que toutes les données sont disponibles dans BigQuery. L'accès aux données brutes est essentiel pour les utilisateurs avancés et les plates-formes d'analyse d'audience tierces telles que Brightcove Audience Insights, qui s'appuient sur un ensemble de données complet.