Show Menu
TOPICS×

Tracking in SceneGraph (Roku)

Einführung

Roku hat ein neues Programmier-Framework für die Entwicklung von Anwendungen herausgebracht: das SceneGraph XML-Programmier-Framework. Dieses neue Framework umfasst zwei neue Schlüsselkonzepte:
  • SceneGraph-Rendering der Anwendungsszenen
  • XML-Konfiguration der SceneGraph-Screens
Das Adobe Mobile SDK for Roku wurde in BrightScript geschrieben. Das SDK verwendet viele Komponenten, die nicht für eine App verfügbar sind, die auf SceneGraph ausgeführt wird (z. B. Threads). Daher kann ein Roku-App-Entwickler, der das SceneGraph-Framework verwenden möchte, Adobe Mobile SDK-APIs nicht aufrufen (letztere sind ähnlich wie die in älteren BrightScript-Apps verfügbaren APIs).

Architektur

Damit das AdobeMobile-SDK SceneGraph unterstützt, hat Adobe eine neue API hinzugefügt, die eine Connector-Verbindung zwischen dem AdobeMobile-SDK und
adbmobileTask
herstellt. Letzterer ist ein SceneGraph-Knoten, der für die API-Ausführung des SDK verwendet wird. (Die Verwendung von
adbmobileTask
wird im Rest dieses Dokuments ausführlich erklärt.)
Die Connector-Verbindung ist wie folgt ausgelegt:
  • Die Verbindung gibt eine SceneGraph-kompatible Instanz des AdobeMobile SDK zurück. Das SceneGraph-kompatible SDK verfügt über alle APIs, die vom alten SDK bereitgestellt werden.
  • Sie verwenden die AdobeMobile SDK-APIs in SceneGraph ähnlich wie die alten APIs.
  • Die Verbindung stellt auch einen Mechanismus zum Abhören von Callbacks für APIs, die Daten zurückgeben, bereit.

Komponenten

SceneGraph-Anwendung:
  • Nutzt
    AdobeMobileLibrary
    -APIs über die APIs der SceneGraph-Connector-Verbindung.
  • Überwacht Antwort-Callbacks in
    adbmobileTask
    auf unerwartete Ausgabedatenvariablen.
AdobeMobileLibrary:
  • Stellt eine Reihe öffentlicher APIs (Legacy) bereit, einschließlich der Connector Bridge-API.
  • Gibt eine SceneGraph-Connector-Instanz zurück, die alle älteren öffentlichen APIs einpackt.
  • Kommuniziert mit einem SceneGraph-
    adbmobileTask
    -Knoten für die Ausführung der APIs.
adbmobileTask-Knoten:
  • Ein SceneGraph-Aufgabenknoten, der
    AdobeMobileLibrary
    -APIs im Hintergrund-Thread ausführt.
  • Dient als Delegate, der Daten an die Anwendungsszenen zurückgeben kann.

Öffentliche SceneGraph-APIs

ADBMobileConnector

Kategorie
Name der Methode
Beschreibung
Konstanten
sceneGraphConstants
Gibt ein Objekt zurück, das
SceneGraphConstants
enthält. Ausführliche Informationen finden Sie in der oben stehenden Tabelle.
Debug-Protokollierung
setDebugLogging
SceneGraph-API zum Festlegen der Debug-Protokollierung im ADBMobile-SDK.
getDebugLogging
SceneGraph-API zum Abrufen der Debug-Protokollierung vom ADBMobile-SDK.
Weitere Informationen finden Sie im Abschnitt „Debug-Protokollierung“ des Legacy-SDK.
Datenschutzstatus/Opt-out
setPrivacyStatus
SceneGraph-API zum Festlegen des Datenschutzstatus im ADBMobile-SDK.
getPrivacyStatus
SceneGraph-API zum Abrufen des Datenschutzstatus vom ADBMobile-SDK.
Weitere Informationen finden Sie im Abschnitt „Opt-out/Datenschutzstatus“ des Legacy-SDK.
Analytics
trackState
SceneGraph-API zum Verfolgen des Status im ADBMobile-SDK.
trackAction
SceneGraph-API zum Verfolgen der Aktion im ADBMobile-SDK.
trackingIdentifier
SceneGraph-API zum Abrufen einer Tracking-ID vom ADBMobile-SDK.
userIdentifier
SceneGraph-API zum Abrufen einer Anwender-ID vom ADBMobile-SDK.
setUserIdentifier
SceneGraph-API zum Festlegen einer Anwender-ID im ADBMobile-SDK.
getAllIdentifiers
SceneGraph-API zum Abrufen aller bekannten und im Roku-SDK persistenten Anwenderidentitäten.
Weitere Informationen finden Sie im Abschnitt „Analytics“ des Legacy-SDK.
Experience Cloud
visitorSyncIdentifiers
SceneGraph-API zur Synchronisierung von Experience Cloud IDs im ADBMobile-SDK.
visitorMarketingCloudID
SceneGraph-API zum Abrufen der Experience Cloud-ID vom ADBMobile-SDK.
Weitere Informationen finden Sie im Abschnitt „Experience Cloud“ des Legacy-SDK.
Audience Manager
audienceSubmitSignal
SceneGraph-API zum Senden eines Zielgruppen-Management-Signals mit Eigenschaft.
audienceVisitorProfile
SceneGraph-API zum Abrufen eines Audience Manager-Besucherprofils vom ADBMobile-SDK.
audienceDpid
SceneGraph-API zum Abrufen einer Zielgruppen-DPID vom ADBMobile-SDK.
audienceDpuuid
SceneGraph-API zum Abrufen einer Zielgruppen-DPUUID vom ADBMobile-SDK.
audienceSetDpidAndDpuuid
SceneGraph-API zum Festlegen einer Zielgruppen-DPID und -DPUUID im ADBMobile-SDK.
Weitere Informationen finden Sie im Abschnitt „Audience Manager“ des Legacy-SDK.
MediaHeartbeat
mediaTrackLoad
SceneGraph-API zum Laden des Videoinhalts für MediaHeartbeat-Tracking.
mediaTrackStart
SceneGraph-API zum Starten von Video-Tracking-Sitzungen mit MediaHeartbeat.
mediaTrackUnload
SceneGraph-API zum Entfernen des Videoinhalts vom MediaHeartbeat-Tracking.
mediaTrackPlay
SceneGraph-API zum Verfolgen der Wiedergabe des Videoinhalts.
mediaTrackPause
SceneGraph-API zur Verfolgung pausierter Videoinhalte.
mediaTrackComplete
SceneGraph-API zum Verfolgen abgeschlossener Wiedergaben des Videoinhalts.
mediaTrackError
SceneGraph-API zur Verfolgung von Wiedergabefehlern.
mediaTrackEvent
SceneGraph-API zur Verfolgung von Wiedergabe-Ereignissen während des Trackings. Beispiel: Anzeigen, Kapitel.
mediaUpdatePlayhead
SceneGraph-API zum Senden von Änderungen der Abspielleiste an MediaHeartbeat während des Video-Trackings.
mediaUpdateQoS
SceneGraph-API zum Senden von QoS-Änderungen an MediaHeartbeat während des Video-Trackings.
Weitere Informationen finden Sie im Abschnitt „MediaHeartbeat“ des Legacy-SDK.

SceneGraphConstants

Konstantenname
Beschreibung
API_RESPONSE
Wird verwendet, um das Antwortobjekt vom
adbmobileApiResponse
-Feld des
adbmobileTask
-Knotens abzurufen.
DEBUG_LOGGING
Wird als
apiName
für
getDebugLogging
verwendet
PRIVACY_STATUS
Wird als
apiName
für
getPrivacyStatus
verwendet
TRACKING_IDENTIFIER
Wird als
apiName
für
trackingIdentifier
verwendet
USER_IDENTIFIER
Wird als
apiName
für
userIdentifier
verwendet
VISITOR_MARKETING_CLOUD_ID
Wird als
apiName
für
visitorMarketingCloudID
verwendet
AUDIENCE_VISITOR_PROFILE
Wird als
apiName
für
audienceVisitorProfile
verwendet
AUDIENCE_DPID
Wird als
apiName
für
audienceDpid
verwendet
AUDIENCE_DPUUID
Wird als
apiName
für
audienceDpuuid
verwendet

adbmobileTask-Knoten

Feld
Typ
Standard
Nutzung
adbmobileApiCall
assocarray
Ungültig
Ändern Sie dieses Feld NICHT und lassen Sie es nicht von der Anwendung verwenden. Dieses Feld wird vom ADBMobile-SceneGraphConnector verwendet, um API-Aufrufe über SceneGraph-Knoten zu routen und Antworten abzurufen. Deshalb ist dieser Schlüssel/dieses Feld für die AdobeMobileSDK-Kompatibilität mit SceneGraph reserviert.
Wichtig:
Änderungen an diesem Feld können dafür sorgen, dass das AdobeMobileSDK nicht mehr richtig funktioniert.
adbmobileApiResponse
assocarray
Ungültig
Nur lesen. Alle APIs, die im AdobeMobileSDK ausgeführt werden, geben Antworten in diesem Feld zurück. Registrieren Sie einen Callback, der auf Aktualisierungen dieses Felds wartet, um Antwortobjekte zu empfangen. Das Antwortobjekt hat folgendes Format:
response = { "apiName" : <SceneGraphConstants. API_NAME> "returnValue : <API_RESPONSE> }
Eine Instanz dieses Antwortobjekts wird für jeden API-Aufruf des AdobeMobileSDK gesendet, bei dem gemäß API-Referenzhandbuch die Rückgabe eines Wertes erwartet wird. Ein API-Aufruf für visitorMarketingCloudID() gibt beispielsweise folgendes Antwortobjekt zurück:
response = { "apiName" : m. adbmobileConstants. VISITOR_MARKETING_CLOUD_ID "returnValue : "07050x25671x33760x72644x14" }
Auch Antwortdaten können ungültig sein:
response = { "apiName" : m. adbmobileConstants. VISITOR_MARKETING_CLOUD_ID "returnValue : invalid }

adbmobile.brs

getADBMobileConnectorInstance

API-Signatur:
ADBMobile().getADBMobileConnectorInstance()
Eingabe:
adbmobileTask
Rückgabetyp:
ADBMobileConnector

sgConstants

API-Signatur:
ADBMobile().sgConstants()
Eingabe: Keine Rückgabetyp:
SceneGraphConstants
Ausführliche Informationen finden Sie in der
ADBMobileConnector
-API-Referenz.

ADBMobile-Konstanten

 Funktion 
Konstantenname
Beschreibung  
Versionierung
version
Konstante für das Abrufen von Versionsinformationen von AdobeMobileLibrary
Datenschutz/Opt-out
PRIVACY_STATUS_OPT_IN
Konstante für den Datenschutz-Opt-in-Status
PRIVACY_STATUS_OPT_OUT
Konstante für den Datenschutz-Opt-out-Status
MediaHeartbeat-Konstanten
Die Konstanten finden Sie auf dieser Seite:
Verwenden Sie diese Konstanten mit den MediaHeartbeat-APIs
Standardmetadaten
Die Konstanten finden Sie auf dieser Seite:
Verwenden Sie diese Konstanten zum Anhängen standardmäßiger Video-/Anzeigenmetadaten in MediaHeartbeat-APIs.
Auf global definierte
MediaHeartbeat
-APIs für Dienstprogramme in der älteren AdobeMobileLibrary kann
wie
in der SceneGraph-Umgebung zugegriffen werden, da keine in SceneGraph-Knoten nicht verfügbaren Brightscript-Komponenten verwendet werden. Weitere Informationen zu diesen Methoden finden Sie in der unten stehenden Tabelle:

Globale Methoden für MediaHeartbeat

Methode
Beschreibung
adb_media_init_mediainfo
Diese Methode gibt ein initialisiertes Objekt mit Medieninformationen zurück.
Function adb_media_init_mediainfo(name As String, id As String, length As Double, streamType As String) As Object
adb_media_init_adinfo
Diese Methode gibt ein initialisiertes Objekt mit Anzeigeninformationen zurück.
Function adb_media_init_adinfo(name As String, id As String, position As Double, length As Double) As Object
adb_media_init_chapterinfo
Diese Methode gibt ein initialisiertes Objekt mit Kapitelinformationen zurück.
Function adb_media_init_adbreakinfo(name As String, startTime as Double, position as Double) As Object
adb_media_init_adbreakinfo
Diese Methode gibt ein initialisiertes Objekt mit AdBreak-informationen zurück.
Function adb_media_init_chapterinfo(name As String, position As Double, length As Double, startTime As Double) As Object
adb_media_init_qosinfo
Diese Methode gibt ein initialisiertes Objekt mit QoS-Informationen zurück.
Function adb_media_init_qosinfo(bitrate As Double, startupTime as Double, fps as Double, droppedFrames as Double) As Object

Implementierung

  1. Roku-Bibliothek herunterladen -
    Laden Sie die aktuelle Roku-Bibliothek herunter.
  2. Entwicklungsumgebung einrichten
    1. Kopieren Sie
      adbmobile.brs
      (AdobeMobileLibrary) in das Verzeichnis
      pkg:/source/
      .
    2. Kopieren Sie für die SceneGraph-Unterstützung
      adbmobileTask.brs
      und
      adbMobileTask.xml
      in das Verzeichnis
      pkg:/components/
      .
  3. Initialisieren
    1. Importieren Sie
      adbmobile.brs
      in Ihre Szene.
      <script type="text/brightscript" uri="pkg:/source/adbmobile.brs" />
    2. Erstellen Sie eine Instanz des
      adbmobileTask
      -Knotens in Ihrer Szene.
      m.adbmobileTask = createObject("roSGNode", "adbmobileTask")
    3. Rufen Sie mit
      adbmobile
      eine Instanz des
      adbmobileTask
      -Connectors für SceneGraph ab.
      m.adbmobile = ADBMobile().getADBMobileConnectorInstance(m.adbmobileTask)
    4. Rufen Sie die
      adbmobile
      -SceneGraph-Konstanten ab.
      m.adbmobileConstants = m.adbmobile.sceneGraphConstants()
    5. Registrieren Sie einen Callback, der das Antwortobjekt für alle
      AdbMobile
      -API-Aufrufe empfängt.
      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

Beispielimplementierung

API-Beispielaufrufe im Legacy-SDK

'get an instance of SDK m.adbmobile = ADBMobile() 'execute setter APIs m.adbmobile.setDebugLogging(true) 'execute getter APIs debugLogging = m.adbmobile.getDebugLogging()

API-Beispielaufrufe im SceneGraph-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