Passer au contenu principal
Toutes les collections
Le player embarqué (embed player): API
Le player embarqué (embed player): API

Contrôlez le player embarqué sur votre site web

Mis à jour il y a plus de 2 mois

Le player embarqué postMessage API

Le player embarqué Acast dispose d'une API postMessage simple qui peut être utilisée pour contrôler le player. Il s'agit d'un protocole qui permet la communication entre un iFrame (le player embarqué Acast) et le "parent" (le site web qui intègre le player).

Vous n'avez pas besoin d'une clé API pour utiliser l'API postMessage.

Lorsque vous utilisez l'API postMessage pour reproduire l'audio, vous devez inclure l'attribut allow="autoplay" dans le iframe tag. Cela ne lancera pas automatiquement la lecture, mais il permettra au player de reproduire l'audio même si l'utilisateur n'a pas interagi avec le player.

Exemple :

<iframe allow="autoplay" src="https://embed.acast.com/show/episode"></iframe>

L'API utilise les commandes suivantes :

const iframe = document.querySelector('iframe');
const message = {
eventName: '',
data: {},
};
iframe.contentWindow.postMessage(JSON.stringify(message), '*');

Vous pouvez écouter l'événement de message pour obtenir les données envoyées par le player. Par exemple, lorsque vous demandez le player avec un événement postmessage:get:*, il renverra la valeur. Ou des événements, tels que postmessage:on:play qui sont déclenchés lorsque l'episode est en cours de lecture.

window.addEventListener(
'message',
event => {
console.log(event.data); // >> { eventName, data }
},
false
);

Details de l'API

Déclencheurs d'événements

Charger le metadata

{
eventName: 'postmessage:do:loadmetadata'
data: { show: 'show-name', episode: 'episode-name' }
}

Déclenche l'événement `postmessage:on:loadmetadata`.

Charger l'audio

{
eventName: 'postmessage:do:load'
}

Déclenche l'événement `postmessage:on:load`.

Reproduire l'épisode

{
eventName: 'postmessage:do:play'
}

Déclenche l'événement `postmessage:on:play` .

Reproduire un épisode donné

{
eventName: 'postmessage:do:play',
data: { show: 'show-name', episode: 'episode-name' }
}

Déclenche l'événement `postmessage:on:play` .

Pause

{
eventName: 'postmessage:do:pause'
}

Déclenche l'événement `postmessage:on:pause` .

Basculer play/pause

{
eventName: 'postmessage:do:toggle'
}

Déclenche l'événement `postmessage:on:play` ou `postmessage:on:pause` .

Rechercher une position donnée

{
eventName: 'postmessage:do:seek',
data:{ position: 10 }
}

Déclenche l'événement `postmessage:on:seek`.

Avancer de 15 secondes

{
eventName: 'postmessage:do:seekforward'
}

Déclenche l'événement `postmessage:on:seek`.

Reculer de 15 secondes

{
eventName: 'postmessage:do:seekback'
}

Déclenche l'événement `postmessage:on:seek`.

Obtenir les demandes

Obtenir l'épisode en cours

{
eventName: 'postmessage:get:current'
}

Corps de la réponse :

{
acast: “5930eq94f9ga90df”, //show id
channel: “sd9f8233fg9ogx”, //episode id
episode: “5930eq94f9ga90df”,
show: “sd9f8233fg9ogx”
}

Obtenir la duration de l'épisode

{
eventName: 'postmessage:get:duration'
}

Corps de la réponse :

{
duration: 100.304
}

Obtenir la progression de l'épisode

{
eventName: 'postmessage:get:progress'
}

Corps de la réponse :

{
progress: 9.134
}

Obtenir l'état de lecture

{
eventName: 'postmessage:get:isplaying'
}

Corps de la réponse :

{
acast: “5930eq94f9ga90df”, //show id
channel: “sd9f8233fg9ogx”, //episode id
episode: “5930eq94f9ga90df”,
isPlaying: true,
show: “sd9f8233fg9ogx”,
}

Événements d'écoute

sur: loadmetadata

Corps de la réponse :

{
acast: “episode-name”,
channel: “show-name”,
episode: “episode-name”,
show: “show-name”
}

Cet événement ne renvoie que les valeurs passéss dans `do:loadmetadata`. Pour obtenir le metadata existante, utilisez `on:load`/`on:play`.

on:load

Corps de la réponse :

{
acast: “episode-name”,
channel: “show-name”,
episode: “episode-name”,
show: “show-name”
}

on:play

Corps de la réponse :

{
acast: “episode-name”;
channel: “show-name”,
episode: “episode-name”
show: “show-name”
}

on:pause

Aucun corps de réponse renvoyé

on:seek

Corps de la réponse :

{
position: 10.034
}

Avez-vous trouvé la réponse à votre question ?