設定適用於串流媒體的Roku 2.x
Roku適用的Adobe Media SDK 2.x (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提供可傳回SceneGraph相容例項的聯結器,公開相同API,並為傳回資料的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回呼傳回其值。