Roku - Spårning i SceneGraph tracking-in-scenegraph-roku
Introduktion introduction
Du kan använda XML-programmeringsramverket Roku SceneGraph för att utveckla program. Ramverket innehåller två viktiga begrepp:
- SceneGraph-återgivning av programskärmar
- XML-konfiguration för SceneGraph-skärmar
Adobe Mobile SDK for Roku är skriven i BrightScript. SDK använder många komponenter som inte är tillgängliga för ett program som körs på SceneGraph (till exempel trådar). Därför kan en Roku-apputvecklare som tänker använda SceneGraph-ramverket inte anropa Adobe Mobile SDK-API:er (de senare liknar de som finns i äldre BrightScript-program).
Arkitektur architecture
För att lägga till stöd för SceneGraph i AdobeMobile SDK har Adobe lagt till ett nytt API som skapar en anslutningsbrygga mellan AdobeMobile SDK och adbmobileTask
. Det senare är en SceneGraph-nod som används för SDK:s API-körning. (Användning av adbmobileTask
förklaras i detalj i resten av det här dokumentet.)
Kopplingsbryggan är utformad för att fungera så här:
- Bryggan returnerar en SceneGraph-kompatibel instans av AdobeMobile SDK. SceneGraph-kompatibel SDK har alla API:er som den äldre SDK:n visar.
- Du använder API:erna för AdobeMobile SDK i SceneGraph på ungefär samma sätt som du använde tidigare API:er.
- Bryggan visar också en mekanism för att lyssna efter återanrop för API:er som returnerar vissa data.
Komponenter components
SceneGraph-program:
- Förbrukningar
AdobeMobileLibrary
API:er via SceneGraph-anslutningsbryggens API:er. - Registrering för svarsåteranrop på
adbmobileTask
för förväntade utdatavariabler.
AdobeMobileLibrary:
- Visar en uppsättning offentliga API:er (äldre), inklusive API:t för anslutningsbryggan.
- Returnerar en instans av en SceneGraph-koppling som omsluter alla tidigare offentliga API:er.
- kommunicerar med en
adbmobileTask
SceneGraph-nod för körning av API:er.
adbmobileTask Node:
- En SceneGraph-aktivitetsnod som körs
AdobeMobileLibrary
API:er på en bakgrundstråd. - Fungerar som ett ombud som returnerar data till programscener.
Public SceneGraph APIs public-scenegraph-apis
ADBMobleConnector
sceneGraphConstants
SceneGraphConstants
. Se tabellen ovan för mer information.setDebugLogging
getDebugLogging
setPrivacyStatus
getPrivacyStatus
trackState
trackAction
trackingIdentifier
userIdentifier
setUserIdentifier
getAllIdentifiers
visitorSyncIdentifiers
visitorMarketingCloudID
audienceSubmitSignal
audienceVisitorProfile
audienceDpid
audienceDpuuid
audienceSetDpidAndDpuuid
mediaTrackLoad
mediaTrackUnload
mediaTrackPlay
mediaTrackComplete
mediaTrackError
mediaUpdatePlayhead
mediaUpdateQoS
SceneGraphConstants
API_RESPONSE
adbmobileTask
nod adbmobileApiResponse
fältDEBUG_LOGGING
apiName
for getDebugLogging
PRIVACY_STATUS
apiName
for getPrivacyStatus
TRACKING_IDENTIFIER
apiName
for trackingIdentifier
USER_IDENTIFIER
apiName
for userIdentifier
VISITOR_MARKETING_CLOUD_ID
apiName
for visitorMarketingCloudID
AUDIENCE_VISITOR_PROFILE
apiName
for audienceVisitorProfile
AUDIENCE_DPID
apiName
for audienceDpid
AUDIENCE_DPUUID
apiName
for audienceDpuuid
adbmobileTask Node
Skrivskydda Alla API:er som körs på AdobeMobileSDK returnerar svar i det här fältet. Registrera dig för ett återanrop för att lyssna efter uppdateringar av det här fältet för att kunna ta emot svarsobjekt. Här följer formatet för svarsobjektet:
response = { "apiName" : <scenegraphconstants.>
API_NAME> "returnValue : <api_response>
}
En instans av det här svarsobjektet skickas för alla API-anrop på AdobeMobileSDK som förväntas returnera ett värde enligt API-referenshandboken. Ett API-anrop till exempel för visitorMarketingCloudID() returnerar följande svarsobjekt:
response = { "apiName" : m. adbmobileConstants.
VISITOR_MARKETING_CLOUD_ID "returnValue : "07050x25671x3760x72644x14" }
Eller så kan svarsdata vara ogiltiga:
response = { "apiName" : m. adbmobileConstants.
VISITOR_MARKETING_CLOUD_ID "returnValue : invalid }
adbmobile.brs
getADBMobileConnectorInstance
API-signatur: ADBMobile().getADBMobileConnectorInstance()
Indata: adbmobileTask
Returtyp: ADBMobileConnector
sgConstants
API-signatur: ADBMobile().sgConstants()
Indata: Ingen
Returtyp: SceneGraphConstants
ADBMobileConnector
API-referens för mer information.ADBMomobile-konstanter
version
PRIVACY_STATUS_OPT_IN
PRIVACY_STATUS_OPT_OUT
Globalt definierat verktyg MediaHeartbeat
API:er i AdobeMobileLibrary är tillgängliga as i SceneGraph-miljön eftersom de inte använder några komponenter med genomskinligt skript som inte är tillgängliga i SceneGraph-noder. Mer information om dessa metoder finns i tabellen nedan:
Globala metoder för MediaHeartbeat
adb_media_init_mediainfo
Function adb_media_init_mediainfo(name As String, id As String, length As Double, streamType As String) As Object
adb_media_init_adinfo
Function adb_media_init_adinfo(name As String, id As String, position As Double, length As Double) As Object
adb_media_init_chapterinfo
Function adb_media_init_adbreakinfo(name As String, startTime as Double, position as Double) As Object
adb_media_init_adbreakinfo
Function adb_media_init_chapterinfo(name As String, position As Double, length As Double, startTime As Double) As Object
adb_media_init_qosinfo
Function adb_media_init_qosinfo(bitrate As Double, startupTime as Double, fps as Double, droppedFrames as Double) As Object
Implementering implementation
-
Ladda ned Roku Library - Ladda ned det senaste Roku-biblioteket.
-
Konfigurera utvecklingsmiljön
-
Kopiera
adbmobile.brs
(AdobeMobileLibrary) ipkg:/source/
katalog. -
Om det finns stöd för Scene Graph kopierar du
adbmobileTask.brs
ochadbMobileTask.xml
ipkg:/components/
katalog.
-
-
Initiera
-
Importera
adbmobile.brs
in i din scen.code language-none <script type="text/brightscript" uri="pkg:/source/adbmobile.brs" />
-
Skapa en instans av
adbmobileTask
i din scen.code language-none m.adbmobileTask = createObject("roSGNode", "adbmobileTask")
-
Hämta en instans av
adbmobile
anslutning för SceneGraph medadbmobileTask
-instans.code language-none m.adbmobile = ADBMobile().getADBMobileConnectorInstance(m.adbmobileTask)
-
Hämta
adbmobile
SG-konstanter.code language-none m.adbmobileConstants = m.adbmobile.sceneGraphConstants()
-
Registrera ett återanrop för att ta emot ett svarsobjekt för alla
AdbMobile
API-anrop.code language-none m.adbmobileTask.ObserveField(m.adbmobileConstants.API_RESPONSE, "onAdbmobileApiResponse") ' Sample implementation of the callback ' Listen for all the constants for which API calls are made on the SDK function onAdbmobileApiResponse() as void responseObject = m.adbmobileTask[m.adbmobileConstants.API_RESPONSE] if responseObject <> invalid methodName = responseObject.apiName retVal = responseObject.returnValue if methodName = m.adbmobileConstants.DEBUG_LOGGING if retVal print "API Response: DEBUG LOGGING: " + "True" else print "API Response: DEBUG LOGGING: " + "False" endif else if methodName = m.adbmobileConstants.PRIVACY_STATUS print "API Response: PRIVACY STATUS: " + retVal else if methodName = m.adbmobileConstants.TRACKING_IDENTIFIER if retVal <> invalid print "API Response: TRACKING IDENTIFIER: " + retVal else print "API Response: TRACKING IDENTIFIER: " + "invalid" endif else if methodName = m.adbmobileConstants.USER_IDENTIFIER if retVal <> invalid print "API Response: USER IDENTIFIER: " + retVal else print "API Response: USER IDENTIFIER: " + "invalid" endif else if methodName = m.adbmobileConstants.VISITOR_MARKETING_CLOUD_ID if retVal <> invalid print "API Response: MCID: " + retVal else print "API Response: MCID: " + "invalid" endif else if methodName = m.adbmobileConstants.AUDIENCE_DPID if retVal <> invalid print "API Response: AUDIENCE DPID: " + retVal else print "API Response: AUDIENCE DPID: " + "invalid" endif else if methodName = m.adbmobileConstants.AUDIENCE_DPUUID if retVal <> invalid print "API Response: AUDIENCE DPUUID: " + retVal else print "API Response: AUDIENCE DPUUID: " + "invalid" endif else if methodName = m.adbmobileConstants.AUDIENCE_VISITOR_PROFILE if retVal <> invalid print "API Response: AUDIENCE VISITOR PROFILE: Valid Object" else print "API Response: AUDIENCE VISITOR PROFILE: " + "invalid" endif endif endif end function
-
Exempelimplementering sample-implementation
Exempel på API-anrop till äldre SDK
'get an instance of SDK
m.adbmobile = ADBMobile()
'execute setter APIs
m.adbmobile.setDebugLogging(true)
'execute getter APIs
debugLogging = m.adbmobile.getDebugLogging()
Exempel-API-anrop till SG SDK
'create adbmobileTask instance
m.adbmobileTask = createObject("roSGNode", "adbmobileTask")
'get an instance of SDK using task instance
m.adbmobile =
ADBMobile().getADBMobileConnectorInstace(m.adbmobileTask)
m.adbmobileConstants = m.adbmobile.sceneGraphConstants()
'execute setter APIs
m.adbmobile.setDebugLogging(true)
'execute getter APIs
m.adbmobileTask.ObserverField(m.adbConstants.API_RESPONSE,
"onAdbmobileApiResponse")
m.adbmobile.getDebugLogging()
'listen for return data in registered callbacks
function onAdbmobileApiResponse() as void
responseObject = m.adbmobileTask[m.adbmobileConstants.API_RESPONSE]
if responseObject <> invalid
methodName = responseObject.apiName
retVal = responseObject.returnValue
if methodName = m.adbmobileConstants.DEBUG_LOGGING
if retVal
print "API Response: DEBUG LOGGING: " + "True"
else
print "API Response: DEBUG LOGGING: " + "False"
endif
endif
end function