画中画

本页介绍​ 画中画 ​播放器状态的数据收集。 查看受画中画影响的流数量🔗、画中画计数和画中画总持续时间以了解相应的报表量度。

当观看者进入和退出画中画播放时,画中画播放器状态进行跟踪。 在画中画开始时触发状态开始事件,并在画中画结束时触发状态结束事件。 后端根据这些事件计算三个量度:受影响的流数、状态条目计数和状态停留的总时间。

属性
值
上下文数据变量
a.media.states.pictureinpicture.set, a.media.states.pictureinpicture.count, a.media.states.pictureinpicture.time
XDM集合字段
xdm.mediaCollection.statesStart[]和xdm.mediaCollection.statesEnd[] (带有name: "pictureInPicture"的条目)
Audience Manager特征
c_contextdata.a.media.states.pictureinpicture.set, c_contextdata.a.media.states.pictureinpicture.count, c_contextdata.a.media.states.pictureinpicture.time
必需
否
发送条件
状态开始,状态结束

建议的实施类型

Web SDK

使用sendEvent发送状态已添加到statesStart的media.statesUpdate事件:

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

当查看器退出画中画时,发送另一个状态为statesEnd的事件:

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

将tracker.trackPlayerStateStart()和tracker.trackPlayerStateEnd()与MediaConstants.PlayerState.PICTURE_IN_PICTURE常量一起使用。

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

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

将tracker.trackPlayerStateStart()和tracker.trackPlayerStateEnd()与MediaConstants.PlayerState.PICTURE_IN_PICTURE常量一起使用。

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

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

使用sendMediaEvent发送状态已添加到statesStart的media.statesUpdate事件:

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

当查看器退出画中画时,发送另一个状态为statesEnd的事件:

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

在statesStart中使用pictureInPicture调用statesUpdate终结点(或者,当查看器退出PiP时statesEnd):

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

旧版实施类型(仅限Analytics)

Media SDK JS 3.x

使用ADB.Media.createStateObject和ADB.Media.PlayerState.PictureInPicture常量:

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

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

直接将ADBMobile.media.createStateObject与"pictureInPicture"字符串一起使用,因为Chromecast没有命名PlayerState常量:

code language-javascript
var stateObject = ADBMobile.media.createStateObject("pictureInPicture");
ADBMobile.media.trackEvent(ADBMobile.media.Event.StateStart, stateObject);
// When the viewer exits picture-in-picture:
ADBMobile.media.trackEvent(ADBMobile.media.Event.StateEnd, stateObject);
Roku 2.x
播放器状态跟踪在Roku 2.x SDK中不可用。 要跟踪播放器状态,请使用Roku Edge SDK。
媒体收集API

当画中画开始时,发送stateStart个POST请求;当画中画结束时,发送stateEnd个POST:

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

有关完整请求结构,请参阅媒体收集API事件引用。

recommendation-more-help
media-analytics-help