Rastreamento de vários estados do player
Às vezes, dois estados do player começam e terminam ao mesmo tempo ou o fim de um estado também é o início de outro estado, como mostrado na imagem a seguir:
A implementação atual permite ambos os cenários:
stateStart(pictureInPicture)
- t0stateStart(mute)
- t0stateEnd(mute)
- t1stateEnd(pictureInPicture)
- t1stateStart(fullScreen)
- t1stateEnd(fullScreen)
- t2
No entanto, isso requer que você emita vários eventos stateStart
e stateEnd
para sinalizar várias alterações de estado simultâneas. Para
otimizar esse comportamento comum, um novo tipo de evento statesUpdate
foi implementado, que encerra uma lista de estados
e inicia uma lista de novos estados.
Ao utilizar o novo evento statesUpdate
, a lista de eventos acima se torna:
statesUpdate(statesEnd=[], statesStart=[pictureInPicture, mute])
- t0statesUpdate(statesEnd=[mute, pictureInPicture], statesStart=[fullScreen])
- t1statesUpdate(statesEnd=[fullScreen], statesStart=[])
- t2
O número de chamadas de atualizações de estado foi reduzido de seis para três para o mesmo comportamento. O último evento
também poderia ter sido um simples stateEnd(fullScreen)
.
Implementação da API da coleção de mídia mpst-api
Você pode usar a API de coleção de mídia para implementar o monitoramento de vários estados do player.
Exemplo
A seguir, veja um exemplo de implementação da API de coleção de mídia para monitoramento de vários estados do player.
// statesUpdate (ex: mute and pictureInPicture are switched on)
http(s)://<Analytics_Visitor_Namespace>.hb-api.omtrdc.net/api/v1/sessions/<SID>/events
{
"eventType": "statesUpdate",
"params": {
"statesStart": [
{
"media.state.name": "mute"
},
{
"media.state.name": "pictureInPicture"
}
]
},
"playerTime": {
"playhead": 0,
"ts": 1569999130627
}
}
// statesUpdate (ex: mute and pictureInPicture are switched off, fullScreen is switched on)
http(s)://<Analytics_Visitor_Namespace>.hb-api.omtrdc.net/api/v1/sessions/<SID>/events
{
"eventType": "statesUpdate",
"params": {
"statesEnd": [
{
"media.state.name": "mute"
},
{
"media.state.name": "pictureInPicture"
}
],
"statesStart": [
{
"media.state.name": "fullScreen"
}
]
},
"playerTime": {
"playhead": 0,
"ts": 1569999130627
}
}
// statesUpdate (ex: fullScreen is switched off)
http(s)://<Analytics_Visitor_Namespace>.hb-api.omtrdc.net/api/v1/sessions/<SID>/events
{
"eventType": "statesUpdate",
"params": {
"statesEnd": [
{
"media.state.name": "fullScreen"
}
]
},
"playerTime": {
"playhead": 0,
"ts": 1569999130627
}
}
Implementação do SDK de mídia
Não há implementação do SDK de mídia.