Konfigurera Roku 2.x för direktuppspelande media
Adobe Media SDK 2.x for Roku (adbmobile.brs) skickar direktuppspelande mediedata från Roku-kanaler skrivna i BrightScript direkt till Adobe Analytics. Den samlar också in målgruppsdata via Audience Manager och mäter engagemanget via medieevent.
-
Förutsättningar:
- Slutför implementeringsöversikten för enbart analys.
- Hämta Media SDK för Roku.
- Inkludera ett API i mediespelaren för att prenumerera på spelarhändelser och ett API som ger spelarinformation som medienamnet och spelhuvudets position.
Installera SDK
Hämtningen av AdobeMobileLibrary-2.*-Roku.zip innehåller två komponenter:
adbmobile.brs: biblioteksfilen. Kopiera den till kanalenspkg:/source/-katalog.ADBMobileConfig.json: SDK konfigurationsfil, anpassad för din app.
För SceneGraph-kanaler kopierar du även adbmobileTask.brs och adbmobileTask.xml till din pkg:/components/-katalog. Se Stöd för SceneGraph.
Konfigurera ADBMobileConfig.json
Konfigurations-JSON har en exklusiv mediaHeartbeat-nyckel för direktuppspelningsmedia. Lägg till ADBMobileConfig.json i projektkällan och ange värdena mediaHeartbeat, marketingCloud och 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 är felaktigt konfigurerad försätts mediemodulen i ett feltillstånd och skickar inte längre spårningsanrop. Kontrollera att värdet marketingCloud.org innehåller @AdobeOrg.Initiera SDK och bearbeta meddelanden
Hämta en instans av SDK med ADBMobile(). Tjänsten Experience Cloud Visitor ID genererar ett besökar-ID som ingår i alla träffar.
processMessages och processMediaMessages i din huvudhändelseslinga var 250:e ms så att SDK skickar alla meddelanden korrekt.adb = ADBMobile()
' In your main event loop, every ~250 ms:
adb.processMessages()
adb.processMediaMessages()
processMessagesprocessMediaMessagesSpåra mediahändelser
Spåra varje mediahändelse genom att anropa dess SDK-metod. Exakta anrop, byggare och konstanter finns på fliken Roku 2.x på varje event - och variable -sida.
En normal session börjar med att skapa ett mediaobjekt och anropa 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)
De globala adb_media_init_*-byggarna skapar medie-, annons-, annons-, kapitel- och QoS-objekten som används av spårningsanropen:
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)Standardmetadata skickas som en associativ array med a.media.* nycklar (SDK definierar även namngivna konstanter som MEDIA_VideoMetadataKeySHOW för dessa nycklar). På sidorna Variabler finns en nyckel som motsvarar varje dimension.
Konfigurera Experience Cloud Visitor-ID, sekretess och loggning
Följande metoder på instansen ADBMobile() hanterar identitet, sekretess och felsökning:
visitorMarketingCloudID()visitorSyncIdentifiers(identifiers)setAdvertisingIdentifier(rida)getRIDA().getAllIdentifiers()setPrivacyStatus(status)adb.PRIVACY_STATUS_OPT_IN eller adb.PRIVACY_STATUS_OPT_OUT. Se Sekretess.getPrivacyStatus()setDebugLogging(flag)getDebugLogging()true om felsökningsloggning har aktiverats.Stöd för SceneGraph scenegraph
Roku SceneGraph XML-ramverket kan inte anropa de äldre SDK-API:erna för BrightScript direkt, eftersom SDK använder komponenter (till exempel trådar) som inte är tillgängliga för en SceneGraph-app. För att överbrygga denna lucka tillhandahåller SDK en koppling som returnerar en SceneGraph-kompatibel instans som exponerar samma API:er, plus en callback-mekanism för API:er som returnerar data.
Bron består av tre delar:
adbmobileTasknod: en SceneGraph-aktivitetsnod som kör SDK API:er på en bakgrundstråd och returnerar data till scenerna.- Anslutningsinstans: kapslar in alla äldre publika API:er och kommunicerar med
adbmobileTask-noden. API_RESPONSEcallback: det fält som din app observerar för att ta emot returvärden från get-API:er.
Så här initierar du SDK i en SceneGraph-kanal:
-
Importera
adbmobile.brstill din scen:code language-brightscript <script type="text/brightscript" uri="pkg:/source/adbmobile.brs" /> -
Skapa noden
adbmobileTask, hämta anslutningsinstansen och läs in SceneGraph-konstanterna:code language-brightscript m.adbmobileTask = createObject("roSGNode", "adbmobileTask") m.adbmobile = ADBMobile().getADBMobileConnectorInstance(m.adbmobileTask) m.adbmobileConstants = m.adbmobile.sceneGraphConstants() -
Registrera ett återanrop för att ta emot svarsobjekt för API:er som returnerar data:
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
Kopplingsinstansen (m.adbmobile) visar samma mediemetoder som den gamla SDK-instansen (mediaTrackSessionStart, mediaTrackPlay, mediaTrackPause, mediaTrackComplete, mediaTrackSessionEnd, mediaTrackError, mediaTrackEvent, mediaUpdatePlayhead och mediaUpdateQoS), så anropen som visas på händelse- och variabelsidorna fungerar på samma sätt. Setter-API:er anropas direkt; get-API:er returnerar sina värden via API_RESPONSE-återanropet.
Nästa steg
När implementeringen är klar kan du konfigurera rapporter för implementeringar som bara är till för analyser.