設定適用於串流媒體的Roku 2.x

Roku適用的Adobe Media SDK 2.x (adbmobile.brs)會將來自以BrightScript撰寫的Roku頻道的串流媒體資料直接傳送到Adobe Analytics。 它也會透過Audience Manager收集受眾資料,並透過媒體事件測量參與度。

NOTE
本頁涵蓋Roku適用的僅限Analytics的Media SDK 2.x。 若是新的實作,Adobe建議Roku Edge SDK,此工具可讓Customer Journey Analytics、Adobe Journey Optimizer和Real-Time CDP以及Adobe Analytics也能使用資料。

安裝SDK

AdobeMobileLibrary-2.*-Roku.zip下載包含兩個元件:

  • adbmobile.brs:程式庫檔案。 將其複製到通道的pkg:/source/目錄中。
  • ADBMobileConfig.json:針對您的應用程式自訂的SDK設定檔案。

對於SceneGraph頻道,也將adbmobileTask.brsadbmobileTask.xml複製到您的pkg:/components/目錄中。 請參閱SceneGraph支援

設定ADBMobileConfig.json

組態JSON具有串流媒體的專用mediaHeartbeat金鑰。 新增ADBMobileConfig.json至您的專案來源並設定mediaHeartbeatmarketingCloudanalytics值:

{
  "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"
  }
}
設定引數
說明
server
媒體追蹤端點的URL。 檢視僅限Analytics的實作概觀
publisher
內容發佈者唯一識別碼。
channel
內容發佈管道的名稱。 回報為內容管道
ssl
SSL是否用於追蹤呼叫。
ovp
線上視訊平台提供者的名稱。
sdkVersion
應用程式或SDK的目前版本。
playerName
播放器名稱。 回報為內容播放器名稱
IMPORTANT
如果mediaHeartbeat的設定不正確,媒體模組會進入錯誤狀態並停止傳送追蹤呼叫。 確定您的marketingCloud.org值包含@AdobeOrg

初始化SDK並處理訊息

取得具有ADBMobile()的SDK執行個體。 Experience Cloud訪客ID服務會產生一個包含在所有點選中的訪客ID。

IMPORTANT
每隔250毫秒呼叫主事件回圈中的processMessagesprocessMediaMessages,讓SDK正確傳送ping。
adb = ADBMobile()

' In your main event loop, every ~250 ms:
adb.processMessages()
adb.processMediaMessages()
方法
說明
processMessages
將佇列的Analytics事件傳遞至SDK。
processMediaMessages
將佇列的媒體事件傳遞至SDK,包括自動Ping。

追蹤媒體事件

呼叫其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)
QoS
adb_media_init_qosinfo(bitrate, startupTime, fps, droppedFrames)

標準中繼資料是以a.media.*索引鍵的關聯陣列傳遞(SDK也定義這些索引鍵的具名常數,例如MEDIA_VideoMetadataKeySHOW)。 檢視對應至每個維度的索引鍵的變數頁面。

設定Experience Cloud訪客ID、隱私權和記錄

ADBMobile()執行個體上的下列方法可管理身分、隱私權和偵錯:

方法
說明
visitorMarketingCloudID()
擷取Experience Cloud ID (ECID)。
visitorSyncIdentifiers(identifiers)
為相同訪客設定其他客戶ID。
setAdvertisingIdentifier(rida)
設定Advertising的Roku ID (RIDA)。 使用Roku getRIDA() API取得。
getAllIdentifiers()
傳回SDK儲存的所有識別碼,包括Analytics、訪客、Audience Manager和自訂識別碼。
setPrivacyStatus(status)
設定隱私權狀態。 傳遞adb.PRIVACY_STATUS_OPT_INadb.PRIVACY_STATUS_OPT_OUT。 請參閱隱私權
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:

  1. adbmobile.brs匯入您的場景:

    code language-brightscript
    <script type="text/brightscript" uri="pkg:/source/adbmobile.brs" />
    
  2. 建立adbmobileTask節點、取得聯結器執行個體並載入SceneGraph常數:

    code language-brightscript
    m.adbmobileTask = createObject("roSGNode", "adbmobileTask")
    m.adbmobile = ADBMobile().getADBMobileConnectorInstance(m.adbmobileTask)
    m.adbmobileConstants = m.adbmobile.sceneGraphConstants()
    
  3. 註冊回撥以接收傳回資料之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 (mediaTrackSessionStartmediaTrackPlaymediaTrackPausemediaTrackCompletemediaTrackSessionEndmediaTrackErrormediaTrackEventmediaUpdatePlayheadmediaUpdateQoS)相同的媒體方法,因此事件和變數頁面上顯示的呼叫運作方式相同。 直接呼叫Setter API; getter API透過API_RESPONSE回呼傳回其值。

下一步

實作完成後,您可以為僅限Analytics的實作設定報表。

recommendation-more-help
media-analytics-help