Em foco

Esta página aborda a coleta de dados para o estado do player Em foco. Consulte Fluxos afetados pela função em foco, Contagens em foco e Duração total em foco para as métricas de relatório correspondentes.

O estado do player em foco é rastreado quando o player tem a atenção do visualizador. Acione um evento de início de estado quando o reprodutor obtém foco (normalmente quando a guia ou janela do reprodutor se torna ativa) e um evento de fim de estado quando o reprodutor perde foco. O back-end calcula três métricas desses eventos: fluxos afetados, contagem de entradas de estado e tempo total no estado.

Propriedade
Valor
Variáveis de dados de contexto
a.media.states.infocus.set, a.media.states.infocus.count, a.media.states.infocus.time
Campo da coleção XDM
xdm.mediaCollection.statesStart[] e xdm.mediaCollection.statesEnd[] (entradas com name: "inFocus")
Características do Audience Manager
c_contextdata.a.media.states.infocus.set, c_contextdata.a.media.states.infocus.count, c_contextdata.a.media.states.infocus.time
Obrigatório
Não
Enviado com
Início do estado, término do estado

Tipos de implementação recomendados

Web SDK

Use sendEvent para enviar um evento media.statesUpdate com o estado adicionado a statesStart:

code language-javascript
alloy("sendEvent", {
  xdm: {
    eventType: "media.statesUpdate",
    mediaCollection: {
      statesStart: [{ name: "inFocus" }],
      sessionID: "{sid}",
      playhead: 60
    }
  }
});

Quando o reprodutor perder o foco, envie outro evento com o estado em statesEnd:

code language-javascript
alloy("sendEvent", {
  xdm: {
    eventType: "media.statesUpdate",
    mediaCollection: {
      statesEnd: [{ name: "inFocus" }],
      sessionID: "{sid}",
      playhead: 90
    }
  }
});
iOS

Use tracker.trackPlayerStateStart() e tracker.trackPlayerStateEnd() com a constante MediaConstants.PlayerState.IN_FOCUS.

code language-swift
let stateObject = Media.createStateObjectWith(stateName: MediaConstants.PlayerState.IN_FOCUS)

tracker.trackPlayerStateStart(info: stateObject)
tracker.trackPlayerStateEnd(info: stateObject)
Android

Use tracker.trackPlayerStateStart() e tracker.trackPlayerStateEnd() com a constante MediaConstants.PlayerState.IN_FOCUS.

code language-kotlin
val stateObject = Media.createStateObject(MediaConstants.PlayerState.IN_FOCUS)

tracker.trackPlayerStateStart(stateObject)
tracker.trackPlayerStateEnd(stateObject)
Roku

Use sendMediaEvent para enviar um evento media.statesUpdate com o estado adicionado a statesStart:

code language-brightscript
m.aepSdk.sendMediaEvent({
    "xdm": {
        "eventType": "media.statesUpdate",
        "mediaCollection": {
            "statesStart": [{ "name": "inFocus" }],
            "playhead": 60
        }
    }
})

Quando o reprodutor perder o foco, envie outro evento com o estado em statesEnd:

code language-brightscript
m.aepSdk.sendMediaEvent({
    "xdm": {
        "eventType": "media.statesUpdate",
        "mediaCollection": {
            "statesEnd": [{ "name": "inFocus" }],
            "playhead": 90
        }
    }
})
API do Media Edge

Chame o ponto de extremidade statesUpdate com inFocus em statesStart (ou statesEnd quando o player perder o foco):

code language-json
{
  "events": [{
    "xdm": {
      "eventType": "media.statesUpdate",
      "mediaCollection": {
        "statesStart": [{ "name": "inFocus" }],
        "sessionID": "{sid}",
        "playhead": 60
      }
    }
  }]
}

Tipos de implementação herdada (somente Analytics)

Media SDK JS 3.x

Use ADB.Media.createStateObject e a constante ADB.Media.PlayerState.InFocus:

code language-javascript
var stateObject = ADB.Media.createStateObject(ADB.Media.PlayerState.InFocus);

tracker.trackPlayerStateStart(stateObject);
tracker.trackPlayerStateEnd(stateObject);
Chromecast

Use ADBMobile.media.createStateObject com a cadeia de caracteres "inFocus" diretamente, pois o Chromecast não tem constantes PlayerState nomeadas:

code language-javascript
var stateObject = ADBMobile.media.createStateObject("inFocus");
ADBMobile.media.trackEvent(ADBMobile.media.Event.StateStart, stateObject);
// When the player loses focus:
ADBMobile.media.trackEvent(ADBMobile.media.Event.StateEnd, stateObject);
API da coleção de mídia

Envie uma solicitação POST stateStart quando o player ganhar o foco e uma POST stateEnd quando ele perder o foco:

code language-json
{
  "playerTime": { "playhead": 60, "ts": 1699523820000 },
  "eventType": "stateStart",
  "params": {
    "media.state.name": "inFocus"
  }
}

Consulte a Referência de eventos da API Media Collection para obter a estrutura de solicitação completa.

recommendation-more-help
media-analytics-help