设置适用于流媒体的Roku 2.x
Adobe Media SDK 2.x for Roku (adbmobile.brs)将使用BrightScript编写的Roku渠道中的流媒体数据直接发送到Adobe Analytics。 它还通过Audience Manager收集受众数据,并通过媒体事件测量参与度。
-
先决条件:
- 完成仅限Analytics的实施概述。
- 下载Roku的Media SDK。
- 在媒体播放器中包括API以订阅播放器事件,以及包括API以提供播放器信息,例如媒体名称和播放头位置。
安装SDK
AdobeMobileLibrary-2.*-Roku.zip下载包含两个组件:
adbmobile.brs:库文件。 将其复制到渠道的pkg:/source/目录中。ADBMobileConfig.json:为您的应用程序自定义的SDK配置文件。
对于SceneGraph渠道,还将adbmobileTask.brs和adbmobileTask.xml复制到您的pkg:/components/目录中。 请参阅SceneGraph支持。
配置ADBMobileConfig.json
配置JSON具有用于流媒体的专用mediaHeartbeat密钥。 将ADBMobileConfig.json添加到您的项目源并设置mediaHeartbeat、marketingCloud和analytics值:
{
"analytics": {
"rsids": "your-report-suite-id",
"server": "your-analytics-server"
},
"marketingCloud": {
"org": "YOUR-MCORG-ID@AdobeOrg"
},
"mediaHeartbeat": {
"server": "your-namespace.hb-api.omtrdc.net",
"publisher": "your-publisher-id",
"channel": "sample-channel",
"ssl": true,
"ovp": "sample-ovp",
"sdkVersion": "sample-sdk",
"playerName": "Roku Player"
}
}
serverpublisherchannelsslovpsdkVersionplayerNamemediaHeartbeat,则媒体模块会进入错误状态并停止发送跟踪调用。 确保您的marketingCloud.org值包含@AdobeOrg。初始化SDK并处理消息
使用ADBMobile()获取SDK的实例。 Experience Cloud访客ID服务会生成一个包含在所有点击中的访客ID。
processMessages和processMediaMessages,以便SDK正确发送ping。adb = ADBMobile()
' In your main event loop, every ~250 ms:
adb.processMessages()
adb.processMediaMessages()
processMessagesprocessMediaMessages跟踪媒体事件
通过调用其SDK方法跟踪每个媒体事件。 有关确切的调用、生成器和常量,请参阅每个事件和变量页面上的 Roku 2.x 选项卡。
典型的会话从构建媒体对象并调用mediaTrackSessionStart开始:
adb = ADBMobile()
mediaInfo = adb_media_init_mediainfo("Mr. Robot", "video-123", 128.0, adb.MEDIA_STREAM_TYPE_VOD, adb.MEDIA_TYPE_VIDEO)
contextData = { "a.media.show": "Mr. Robot" }
adb.mediaTrackSessionStart(mediaInfo, contextData)
全局adb_media_init_*生成器创建跟踪调用使用的媒体、广告、广告时间、章节和QoS对象:
adb_media_init_mediainfo(name, id, length, streamType, mediaType)adb_media_init_adinfo(name, id, position, length)adb_media_init_adbreakinfo(name, startTime, position)adb_media_init_chapterinfo(name, position, length, startTime)adb_media_init_qosinfo(bitrate, startupTime, fps, droppedFrames)标准元数据作为a.media.*键的关联数组传递(SDK还为这些键定义了命名常量,例如MEDIA_VideoMetadataKeySHOW)。 查看与每个维度对应的键的变量页。
配置Experience Cloud访客ID、隐私和日志记录
ADBMobile()实例上的以下方法可管理身份、隐私和调试:
visitorMarketingCloudID()visitorSyncIdentifiers(identifiers)setAdvertisingIdentifier(rida)getRIDA() API获取它。getAllIdentifiers()setPrivacyStatus(status)getPrivacyStatus()setDebugLogging(flag)getDebugLogging()true。SceneGraph支持 scenegraph
Roku SceneGraph XML框架无法直接调用旧版BrightScript SDK API,因为SDK使用的组件(如线程)不适用于SceneGraph应用程序。 为了弥补这一缺口,SDK提供了一个连接器,该连接器会返回一个公开相同API的SceneGraph兼容实例,以及一个用于返回数据的API的回调机制。
这座桥由三部分组成:
adbmobileTask节点:在后台线程上执行SDK API并将数据返回到场景的SceneGraph任务节点。- 连接器实例:封装所有旧版公共API并与
adbmobileTask节点通信。 API_RESPONSE回调:应用程序观察到的从getter API接收返回值的字段。
要在SceneGraph渠道中初始化SDK,请执行以下操作:
-
将
adbmobile.brs导入您的场景:code language-brightscript <script type="text/brightscript" uri="pkg:/source/adbmobile.brs" /> -
创建
adbmobileTask节点、获取连接器实例并加载SceneGraph常量:code language-brightscript m.adbmobileTask = createObject("roSGNode", "adbmobileTask") m.adbmobile = ADBMobile().getADBMobileConnectorInstance(m.adbmobileTask) m.adbmobileConstants = m.adbmobile.sceneGraphConstants() -
注册回调以接收返回数据的API的响应对象:
code language-brightscript m.adbmobileTask.ObserveField(m.adbmobileConstants.API_RESPONSE, "onAdbmobileApiResponse") function onAdbmobileApiResponse() as void responseObject = m.adbmobileTask[m.adbmobileConstants.API_RESPONSE] if responseObject <> invalid methodName = responseObject.apiName retVal = responseObject.returnValue if methodName = m.adbmobileConstants.PRIVACY_STATUS print "Privacy status: " + retVal end if end if end function
连接器实例(m.adbmobile)公开与旧版SDK (mediaTrackSessionStart、mediaTrackPlay、mediaTrackPause、mediaTrackComplete、mediaTrackSessionEnd、mediaTrackError、mediaTrackEvent、mediaUpdatePlayhead和mediaUpdateQoS)相同的媒体方法,因此在事件和变量页面上显示的调用工作方式相同。 直接调用Setter API;getter API通过API_RESPONSE回调返回其值。