Gérer les écarts qui apparaissent entre les publicités resolving-main-play-appearing-between-ads

Problème

Dans certains scénarios de suivi des publicités, vous pouvez rencontrer des appels main:play qui se produisent inopinément entre la fin d’une publicité et le début de la publicité suivante. Si le délai entre l’appel de fin de publicité et l’appel de démarrage de la publicité suivante est supérieur à 250 millisecondes, le SDK Media retourne à l’envoi d’appels main:play. Si ce retour à main:play survient au cours d’une coupure publicitaire preroll, la mesure de début du contenu peut être définie de façon précoce.

Un écart entre les publicités telles que décrites ci-dessus est interprété par le SDK des médias comme du contenu principal, car il n’y a aucun chevauchement avec du contenu publicitaire. Aucune information publicitaire n’est définie sur le SDK Media et le lecteur est en cours de lecture. S’il n’existe aucune information sur l’annonce publicitaire et que l’état du lecteur est en cours de lecture, Media SDK crédite la durée de l’écart par rapport au contenu principal par défaut. Il ne peut pas créditer la durée de l’écart en faveur d’informations de publicité nulles.

IDENTIFICATION

Pendant que vous utilisez Adobe Debug ou un renifleur de paquets réseau tel que Charles, si les appels Heartbeat suivants apparaissent dans cet ordre pendant une coupure publicitaire preroll :

  • Démarrage de la session : s:event:type=start & s:asset:type=main

  • Démarrage de publicité : s:event:type=start & s:asset:type=ad

  • Lecture de la publicité : s:event:type=play & s:asset:type=ad

  • Fin de la publicité : s:event:type=complete & s:asset:type=ad

  • Lecture du contenu principal : s:event:type=play & s:asset:type=main (inattendu)

  • Démarrage de publicité : s:event:type=start & s:asset:type=ad

  • Lecture de la publicité : s:event:type=play & s:asset:type=ad

  • Fin de la publicité : s:event:type=complete & s:asset:type=ad

  • Lecture du contenu principal : s:event:type=play & s:asset:type=main (attendu)

RÉSOLUTION

Retardez le déclenchement de l’appel de fin de publicité.

Gérez l’écart à partir du lecteur en appelant trackEvent:AdComplete pour la première publicité, suivi immédiatement de trackEvent:AdStart pour la deuxième publicité. L’application doit attendre d’appeler l’événement AdComplete après la fin de la première publicité. Assurez-vous d’appeler trackEvent:AdComplete pour la dernière publicité dans la coupure publicitaire. Si le lecteur peut identifier que la ressource publicitaire actuelle est la dernière dans la coupure publicitaire, appelez trackEvent:AdComplete immédiatement. Cette résolution entraîne l’attribution de moins d’une seconde de temps publicitaire supplémentaire à l’entité publicitaire précédente.

Au début de la coupure publicitaire, y compris le preroll :

  • Créez l’instance d’objet adBreak pour la coupure publicitaire ; par exemple, adBreakObject.

  • L’appel trackEvent(MediaHeartbeat.Event.AdBreakStart, adBreakObject);.

À chaque démarrage de ressource publicitaire :

  • AppeleztrackEvent(MediaHeartbeat.Event.AdComplete);

    note note
    NOTE
    Appelez cette méthode uniquement si la publicité précédente n’était pas complète. Pensez à une valeur booléenne pour conserver l’état "isinAd" de la publicité précédente.
  • Créez l’instance d’objet publicitaire pour la ressource publicitaire : par exemple, adObject.

  • Renseignez les métadonnées de publicité, adCustomMetadata.

  • L’appel trackEvent(MediaHeartbeat.Event.AdStart, adObject, adCustomMetadata);.

  • Appelez trackPlay() s’il s’agit de la première publicité dans une coupure publicitaire preroll.

À chaque fin de ressource publicitaire :

  • Ne pas effectuer d’appel

    note note
    NOTE
    Si l’application sait qu’il s’agit de la dernière publicité dans la coupure publicitaire, appelez trackEvent:AdComplete ici et ne définissez pas trackEvent:AdComplete dans trackEvent:AdBreakComplete.

Lorsque la publicité est ignorée :

  • L’appel trackEvent(MediaHeartbeat.Event.AdSkip);.

À la fin de la coupure publicitaire :

  • AppeleztrackEvent(MediaHeartbeat.Event.AdComplete);

    note note
    NOTE
    Si cette étape est déjà effectuée ci-dessus dans le cadre du dernier appel trackEvent:AdComplete, elle peut être ignorée.
  • L’appel trackEvent(MediaHeartbeat.Event.AdBreakComplete);.

recommendation-more-help
c8eee520-cef5-4f8c-a38a-d4952cfae4eb