L'API d'insertion dynamique d'annonces de Google vous permet d'implémenter des flux compatibles avec l'insertion dynamique d'annonce dans les environnements lorsque l'implémentation du SDK IMA n'est pas acceptée. Nous vous recommandons de continuer à utiliser IMA sur les plates-formes où le SDK IMA est accepté.
Nous vous recommandons d'utiliser l'API d'insertion dynamique d'annonce sur les plates-formes suivantes:
- Smart TV Samsung (Tizen)
- LG TV
- HbbTV
- Xbox (applications JavaScript)
- KaiOS
L'API est compatible avec les fonctionnalités de base fournies par le SDK IMA DAI. Pour des questions spécifiques sur la compatibilité ou les fonctionnalités prises en charge, contactez votre responsable de compte Google.
Implémenter l'API d'insertion dynamique d'annonces pour les flux EN DIRECT
L'API d'insertion dynamique d'annonce est compatible avec les flux linéaires (EN DIRECT) qui utilisent à la fois les protocoles HLS et DASH. Les étapes décrites dans ce guide s'appliquent aux deux protocoles.
Pour intégrer l'API à votre application pour les diffusions EN DIRECT, procédez comme suit : étapes:
1. Demander une diffusion
Pour demander une diffusion en direct à partir de l'API d'insertion dynamique d'annonce, effectuez un appel POST au flux point de terminaison unique. La réponse JSON contient le fichier manifeste du flux ainsi que les fichiers les points de terminaison et les valeurs de l'API d'insertion dynamique d'annonce.
Exemple de corps de requête
https://dai.google.com/linear/v1/dash/event/0ndl1dJcRmKDUPxTRjvdog/stream
{
key1 : "value1",
stream_parameter1 : "value2"
}
Exemple de corps de réponse
{
"stream_id":"c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL",
"stream_manifest":"https://dai.google.com/linear/dash/pa/event/0ndl1dJcRmKDUPxTRjvdog/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/manifest.mpd",
"media_verification_url":"https://dai.google.com/view/p/service/linear/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/loc/ATL/network/51636543/event/0ndl1dJcRmKDUPxTRjvdog/media/",
"metadata_url":"https://dai.google.com/linear/v1/pa/event/0ndl1dJcRmKDUPxTRjvdog/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/metadata",
"session_update_url":"https://dai.google.com/linear/v1/pa/event/0ndl1dJcRmKDUPxTRjvdog/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/session",
"polling_frequency":10
}
Réponse d'erreur
En cas d'erreurs, les codes d'erreur HTTP standards sont renvoyés sans réponse JSON .
Analysez la réponse JSON et stockez les valeurs suivantes:
- stream_id
- Cette valeur peut être utilisée pour identifier le flux renvoyé.
- stream_manifest
- Cette URL est transmise à votre lecteur multimédia pour la lecture en streaming.
- media_verification_url
- Cette URL est le point de terminaison de base pour le suivi des événements de lecture.
- metadata_url
- Cette URL permet de demander des informations périodiques sur la diffusion à venir. événements.
- session_update_url
- Cette URL permet de mettre à jour les paramètres de demande de flux envoyés lors de la configuration flux demandé. Notez que les paramètres de cette requête remplacent tous les paramètres défini pour la diffusion précédente.
- polling_frequency
- Fréquence, en secondes, à la demande de métadonnées de coupure publicitaire mises à jour à partir du API d'insertion dynamique d'annonce.
2. Interroger les nouvelles métadonnées de coupure publicitaire
Réglez un minuteur pour interroger les nouvelles métadonnées de coupure publicitaire à la fréquence d'interrogation, à l'aide de la méthode l'URL des métadonnées. Si elle n'est pas spécifiée dans la réponse du flux, la valeur par défaut recommandée est de 10 secondes.
Exemple de corps de requête
https://dai.google.com/linear/v1/pa/event/0ndl1dJcRmKDUPxTRjvdog/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/metadata
Exemple de corps de réponse
{
"tags":{
"google_0492266569":{
"ad":"0000229836_ad1",
"ad_break_id":"0000229836",
"type":"firstquartile"
},
"google_1560331148":{
"ad":"0000229836_ad1",
"ad_break_id":"0000229836",
"type":"thirdquartile"
},
"google_1877686714378797835":{
"ad":"0000229836_slate",
"ad_break_id":"0000229836",
"type":"progress"
},
"google_1vRyQBYPw_7Gg3MrZ6S5EjmV9aLje-YpW8QHed1DSlU":{
"ad":"0000229835_ad1",
"ad_break_id":"0000229835",
"type":"progress"
},
"google_2032765498":{
"ad":"0000229835_ad1",
"ad_break_id":"0000229835",
"type":"midpoint"
},......
"google_5646900623":{
"ad":"0000229837_ad1",
"ad_break_id":"0000229837",
"type":"complete"
}
},
"ads":{
"0000229834_ad1":{
"ad_break_id":"0000229834",
"position":1,
"duration":15.01,
"title":"truman-e2e-creativeset4",
"description":"truman-e2e-creativeset4 ad",
"ad_system":"GDFP",
"ad_id":"39066884",
"creative_id":"58092079124",
"clickthrough_url":"https://pubads.g.doubleclick.net/pcs/click?xai=AKAO...\u0026adurl=http://google.com",
"universal_ad_id":{
"id_value":"58092079124",
"id_registry":"GDFP"
}
},
"0000229834_slate":{
"ad_break_id":"0000229834",
"position":-1,
"duration":14.974977777,
"slate":true
},...
},
"ad_breaks":{
"0000229834":{
"type":"mid",
"duration":15.01,
"expected_duration":29.984977776999997,
"ads":1
},....
}
}
3. Écouter des événements ID3 et suivre les événements de lecture
Pour vérifier que des événements spécifiques se sont produits dans un flux vidéo, procédez comme suit : pour gérer les événements ID3:
- Stockez les événements multimédias dans une file d'attente, en enregistrant chaque ID multimédia ainsi que ses code temporel (s'il est présenté par le joueur).
- À chaque mise à jour depuis le lecteur, ou à une fréquence définie (recommandé 500 ms), recherchez dans la file d'attente des événements multimédias les événements lus récemment en en comparant les codes temporels des événements avec ceux de la tête de lecture.
- Pour les événements multimédias dont la lecture est confirmée, leur type apparaît en recherchant l'ID multimédia dans les tags de coupure publicitaire stockés. N'oubliez pas que les tags stockés ne contiennent qu'un préfixe de l'ID multimédia. Une correspondance exacte n'est donc pas possible.
- Utiliser "progression" pour déterminer si un utilisateur se trouve dans une coupure publicitaire. N'envoyez pas ces événements au point de terminaison de validation des médias. Pour un autre événement , ajoutez l'ID multimédia au point de terminaison de validation des médias et créez une requête demande de suivi de la lecture.
- Supprimez l'événement multimédia de la file d'attente.
Exemple de corps de requête
https://dai.google.com/view/p/service/linear/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/loc/ATL/network/51636543/event/0ndl1dJcRmKDUPxTRjvdog/media/
Exemples de réponses
Accepted for asynchronous verification - HTTP/1.1 202 Accepted
Successful empty response - HTTP/1.1 204 No Content
Media verification not found - HTTP/1.1 404 Not Found
Media verification sent by someone else - HTTP/1.1 409 Conflict
Vous pouvez vérifier les événements de suivi dans Activité du flux Surveillance.
4. Modifier les paramètres de la session de diffusion en direct
Vous pouvez ajuster les paramètres de votre session après qu'une diffusion a été créé. Pour ce faire, envoyez une requête à l'URL de mise à jour de session.
Exemple de corps de requête
https://dai.google.com/linear/v1/pa/event/0ndl1dJcRmKDUPxTRjvdog/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/session
{
key1 : "value1",
stream_parameter1 : "value2"
}
Exemple de corps de réponse
Successful response would be to look for - HTTP/1.1 200
Limites
Si vous utilisez l'API dans des WebViews, les limites suivantes s'appliquent concernant au ciblage:
- UserAgent: le paramètre user-agent est transmis en tant que valeur spécifique au navigateur. au lieu de la plate-forme sous-jacente.
rdid
,idtype
,is_lat
: L'ID de l'appareil n'est pas correctement transmis, ce qui limite les capacités de caractéristiques suivantes:- Limitation de la fréquence d'exposition
- Rotation séquentielle des annonces
- Segmentation et ciblage de l'audience
Bonnes pratiques
N'oubliez pas que le point de terminaison des métadonnées pour les index de diffusions en direct est basé sur le de la balise ID3 correspondante. Ceci permet d'éviter l'utilisation le point de terminaison des métadonnées pour pinguer immédiatement tous les nœuds de validation.