State start

The state start event signals that the media player entered a tracked state such as full screen, mute, or closed captioning. A player can be in multiple states simultaneously, and states can be started and ended in the same event call. Close each state with a State end event.

Valid state names: fullscreen, mute, closedCaptioning, pictureInPicture, inFocus

Web SDK

Call sendEvent with eventType: "media.statesUpdate" and the state name in statesStart:

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

Multiple states can be started in the same call:

alloy("sendEvent", {
  xdm: {
    eventType: "media.statesUpdate",
    mediaCollection: {
      statesStart: [
        { name: "fullscreen" },
        { name: "mute" }
      ],
      sessionID: "{sid}",
      playhead: 60
    }
  }
});

Mobile SDK

Use trackPlayerStateStart with a state object created from the appropriate MediaConstants.PlayerState constant.

iOS (Swift)

let stateObject = Media.createStateObjectWith(stateName: MediaConstants.PlayerState.FULLSCREEN)

tracker.trackEvent(event: MediaEvent.StateStart, info: stateObject, metadata: nil)

Android (Kotlin)

val stateObject = Media.createStateObject(MediaConstants.PlayerState.FULLSCREEN)

tracker.trackEvent(Media.Event.StateStart, stateObject, null)

Roku (BrightScript)

Call sendMediaEvent with eventType: "media.statesUpdate" and the state name in statesStart:

m.aepSdk.sendMediaEvent({
    "xdm": {
        "eventType": "media.statesUpdate",
        "mediaCollection": {
            "statesStart": [{ "name": "fullscreen" }],
            "playhead": 60
        }
    }
})

Media Edge API

Call the statesUpdate endpoint with the state name in statesStart:

curl -X POST "https://edge.adobedc.net/ee/va/v1/statesUpdate?configId={datastreamID}" \
--header 'Content-Type: application/json' \
--data '{
  "events": [{
    "xdm": {
      "eventType": "media.statesUpdate",
      "mediaCollection": {
        "sessionID": "{sid}",
        "playhead": 60,
        "statesStart": [{ "name": "fullscreen" }]
      },
      "timestamp": "YYYY-08-20T22:41:40+00:00"
    }
  }]
}'

Media SDK

Use ADB.Media.createStateObject with the appropriate ADB.Media.PlayerState constant:

var stateObject = ADB.Media.createStateObject(ADB.Media.PlayerState.Fullscreen);

tracker.trackPlayerStateStart(stateObject);

Media Collection API

Send a stateStart POST to the events endpoint:

{
  "playerTime": { "playhead": 60, "ts": 1699523820000 },
  "eventType": "stateStart",
  "params": {
    "media.state.name": "fullscreen"
  }
}
recommendation-more-help
media-analytics-help