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
- Prerequisites: Session start
- Associated metric: Varies by state; see Player state tracking
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"
}
}