Show Menu
TOPICS×

Seguimiento en SceneGraph (Roku)

Primeros pasos

Roku ha presentado un nuevo marco de programación para el desarrollo de aplicaciones: SceneGraph XML. Este marco incluye dos conceptos clave:
  • Renderización con SceneGraph de las pantallas de la aplicación
  • Configuración XML de las pantallas de SceneGraph
Adobe Mobile SDK for Roku se escribe en BrightScript. El SDK utiliza componentes que no están disponibles para una aplicación que se ejecute con SceneGraph (por ejemplo, subprocesos). Por lo tanto, un desarrollador de aplicaciones Roku que intente utilizar la arquitectura SceneGraph no podrá invocar las API del SDK de Adobe Mobile (similares a las disponibles en aplicaciones heredadas de BrightScript).

Arquitectura

Para que SceneGraph sea compatible con el SDK de AdobeMobile, Adobe ha añadido una nueva API que crea un puente de conector entre el SDK AdobeMobile y
adbmobileTask
. Este es un nodo SceneGraph utilizado para ejecutar la API del SDK. (El uso de
adbmobileTask
se explica en detalle en el resto de este documento).
El puente conector está diseñado para lo siguiente:
  • Devolver una instancia de SceneGraph compatible con el SDK de AdobeMobile. Que el SDK compatible con SceneGraph tenga todas las API del SDK heredado.
  • Utilizar las API de SDK de AdobeMobile en SceneGraph de manera muy similar a como se utilizan las API heredadas.
  • El puente también expone un mecanismo para detectar las llamadas de retorno de las API que devuelven datos.

Componentes

Aplicación SceneGraph:
  • Utiliza las API de
    AdobeMobileLibrary
    gracias al puente conector con SceneGraph.
  • Registra las llamadas de retorno en
    adbmobileTask
    para las variables de datos de salida esperadas.
AdobeMobileLibrary:
  • Expone un conjunto de API públicas (heredadas), incluida la API puente conector.
  • Devuelve una instancia de conector SceneGraph que ajusta todas las API públicas heredadas.
  • Se comunica con un nodo
    adbmobileTask
    de SceneGraph para ejecutar las API.
Nodo adbmobileTask:
  • Nodo de tareas de SceneGraph que ejecuta la API
    AdobeMobileLibrary
    en un subproceso en segundo plano.
  • Sirve como delegado para devolver los datos a la aplicación.

API de SceneGraph públicas

ADBMobileConnector

Categoría
Nombre del método
Descripción
Constantes
sceneGraphConstants
Devuelve un objeto que contiene
SceneGraphConstants
. Consulte la tabla anterior para obtener más detalles.
Registro de Debug
setDebugLogging
La API de SceneGraph establece el registro de depuración en el SDK de ADBMobile.
getDebugLogging
La API de SceneGraph obtiene el registro de depuración del SDK de ADBMobile.
Para obtener más información, consulte la sección Depuración del SDK heredado.
Estado de privacidad/Desactivar
setPrivacyStatus
La API de SceneGraph establece el estado de privacidad en el SDK de ADBMobile.
getPrivacyStatus
La API de SceneGraph obtiene el estado de privacidad del SDK de ADBMobile.
Para obtener más información, consulte la sección Desactivar/Estado de privacidad del SDK heredado.
Analytics
trackState
La API de SceneGraph rastrea el estado en el SDK de ADBMobile.
trackAction
La API de SceneGraph rastrea la acción en el SDK de ADBMobile.
trackingIdentifier
La API de SceneGraph obtiene un identificador de seguimiento del SDK de ADBMobile.
userIdentifier
La API de SceneGraph obtiene un identificador de usuario del SDK de ADBMobile.
setUserIdentifier
La API de SceneGraph define el identificador de usuario en el SDK de ADBMobile.
getAllIdentifiers
La API de SceneGraph recupera todas las identidades de usuario conocidas y persistentes por el SDK de Roku.
Para obtener más información, consulte la sección Analytics del SDK heredado.
Experience Cloud
visitorSyncIdentifiers
La API de SceneGraph sincroniza los identificadores de Experience Cloud con el SDK de ADBMobile.
visitorMarketingCloudID
La API de SceneGraph obtiene el Experience Cloud ID del visitante del SDK de ADBMobile.
Para obtener más información, consulte la sección Experience Cloud del SDK heredado.
Audience Manager
audienceSubmitSignal
La API de SceneGraph envía una señal de gestión de público con rasgo.
audienceVisitorProfile
La API de SceneGraph obtiene un perfil del visitante de Audience Manager del SDK de ADBMobile.
audienceDpid
La API de SceneGraph obtiene una audiencia Dpid del SDK de ADBMobile.
audienceDpuuid
La API de SceneGraph obtiene audiencias Dpuuid del SDK de ADBMobile.
audienceSetDpidAndDpuuid
La API de SceneGraph define la audiencia Dpid y Dpuuid en el SDK de ADBMobile.
Para obtener más información, consulte la sección Audience Manager del SDK heredado.
MediaHeartbeat
mediaTrackLoad
La API de SceneGraph carga contenido de vídeo para el seguimiento de MediaHeartbeat.
mediaTrackStart
La API de SceneGraph inicia la sesión del seguimiento de vídeos con MediaHeartbeat.
mediaTrackUnload
La API de SceneGraph descarga contenido de vídeo de seguimiento de MediaHeartbeat.
mediaTrackPlay
La API de SceneGraph rastrea la reproducción del contenido de vídeo.
mediaTrackPause
La API de SceneGraph rastrea el contenido de vídeo en pausa.
mediaTrackComplete
La API de SceneGraph rastrea la reproducción completa del contenido de vídeo.
mediaTrackError
La API de SceneGraph rastrea errores de reproducción.
mediaTrackEvent
La API de SceneGraph rastrea eventos de reproducción durante el seguimiento. Por ejemplo: Publicidad o capítulos.
mediaUpdatePlayhead
La API de SceneGraph envía actualizaciones del cabezal de reproducción a MediaHeartbeat durante el seguimiento de vídeos.
mediaUpdateQoS
La API de SceneGraph envía actualizaciones de QoS a MediaHeartbeat durante el seguimiento de vídeos.
Para obtener más información, consulte la sección MediaHeartbeat del SDK heredado.

SceneGraphConstants

Nombre de la constante
Descripción
API_RESPONSE
Se utiliza para recuperar el objeto Response del campo
adbmobileTask
del nodo
adbmobileApiResponse
.
DEBUG_LOGGING
Se usa como
apiName
para
getDebugLogging
PRIVACY_STATUS
Se usa como
apiName
para
getPrivacyStatus
TRACKING_IDENTIFIER
Se usa como
apiName
para
trackingIdentifier
USER_IDENTIFIER
Se usa como
apiName
para
userIdentifier
VISITOR_MARKETING_CLOUD_ID
Se usa como
apiName
para
visitorMarketingCloudID
AUDIENCE_VISITOR_PROFILE
Se usa como
apiName
para
audienceVisitorProfile
AUDIENCE_DPID
Se usa como
apiName
para
audienceDpid
AUDIENCE_DPUUID
Se usa como
apiName
para
audienceDpuuid

Nodo adbmobileTask

Campo
Tipo
Valor predeterminado
Uso
adbmobileApiCall
assocarray
No válido
NO modifique este campo ni deje que la aplicación lo utilice. Este campo lo utiliza el conector ADBMobile SceneGraphConnector para enrutar llamadas API a través de nodos SceneGraph y obtener respuestas. Por lo tanto, esta clave/campo queda reservado para la compatibilidad de AdobeMobileSDK con SceneGraph.
Importante:
Cualquier modificación en este campo puede hacer que AdobeMobileSDK funcione incorrectamente.
adbmobileApiResponse
assocarray
No válido
Solo lectura: Todas las API ejecutadas en AdobeMobileSDK devolverán las respuestas en este campo. Regístrelas para que la función de llamada de retorno detecte actualizaciones de este campo y reciba objetos Response. A continuación, se muestra el formato del objeto Response:
response = { "apiName" : <SceneGraphConstants. API_NAME> "returnValue : <API_RESPONSE> }
Se enviará una instancia de este objeto Response para cualquier llamada de API en AdobeMobileSDK de la que se espera un valor de retorno conforme a la guía de referencia de la API. Por ejemplo, una llamada API para visitorMarketingCloudID() devolverá el siguiente objeto de respuesta:
response = { "apiName" : m. adbmobileConstants. VISITOR_MARKETING_CLOUD_ID "returnValue : "07050x25671x33760x72644x14" }
O bien, los datos de respuesta podrían no ser válidos:
response = { "apiName" : m. adbmobileConstants. VISITOR_MARKETING_CLOUD_ID "returnValue : invalid }

adbmobile.brs

getADBMobileConnectorInstance

Firma de API:
ADBMobile().getADBMobileConnectorInstance()
Entrada:
adbmobileTask
Tipo de devolución:
ADBMobileConnector

sgConstants

Firma de API:
ADBMobile().sgConstants()
Entrada: Ninguno Tipo de devolución:
SceneGraphConstants
Consulte la referencia API de
ADBMobileConnector
para obtener más detalles.

Constantes ADBMobile

 Función 
Nombre de la constante
Descripción  
Versiones
version
Constante para obtener información de la versión de AdobeMobileLibrary
Privacidad/desactivar
PRIVACY_STATUS_OPT_IN
Constante para el estado de privacidad activada.
PRIVACY_STATUS_OPT_OUT
Constante para el estado de privacidad desactivada.
Constantes MediaHeartbeat
Consulte las constantes de esta página:
Utilice estas constantes con las API de MediaHeartbeat
Metadatos estándar
Consulte las constantes de esta página:
Utilice estas constantes para asociar metadatos de vídeo/publicidad estándar a las API de MediaHeartbeat.
Las API de
MediaHeartbeat
de utilidades definidas globalmente en el archivo AdobeMobileLibrary heredado son accesibles
tal como se encuentran
en el entorno de SceneGraph porque no utilizan componentes Brightscript que no estén en los nodos SceneGraph. Para obtener más información sobre estos métodos, consulte la siguiente tabla:

Métodos globales para MediaHeartbeat

Método
Descripción
adb_media_init_mediainfo
Este método devuelve un objeto de información multimedia inicializado.
Function adb_media_init_mediainfo(name As String, id As String, length As Double, streamType As String) As Object
adb_media_init_adinfo
Este método devuelve el objeto de información de publicidad inicializado.
Function adb_media_init_adinfo(name As String, id As String, position As Double, length As Double) As Object
adb_media_init_chapterinfo
Este método devuelve el objeto de información del capítulo inicializado.
Function adb_media_init_adbreakinfo(name As String, startTime as Double, position as Double) As Object
adb_media_init_adbreakinfo
Este método devuelve el objeto de información de AdBreak inicializado.
Function adb_media_init_chapterinfo(name As String, position As Double, length As Double, startTime As Double) As Object
adb_media_init_qosinfo
Este método devuelve un objeto de información de QoS inicializado.
Function adb_media_init_qosinfo(bitrate As Double, startupTime as Double, fps as Double, droppedFrames as Double) As Object

Implementación

  1. Descargue la biblioteca Roku:
    Descargue la última biblioteca Roku.
  2. Configurar el entorno de desarrollo
    1. Copie
      adbmobile.brs
      (AdobeMobileLibrary) en su directorio
      pkg:/source/
      .
    2. Para la compatibilidad con SceneGraph, copie
      adbmobileTask.brs
      y
      adbMobileTask.xml
      en el directorio
      pkg:/components/
      .
  3. Inicializar
    1. Importe
      adbmobile.brs
      en la escena.
      <script type="text/brightscript" uri="pkg:/source/adbmobile.brs" />
    2. Cree una instancia del nodo
      adbmobileTask
      en la escena.
      m.adbmobileTask = createObject("roSGNode", "adbmobileTask")
    3. Obtenga una instancia del conector
      adbmobile
      para SceneGraph con la instancia de
      adbmobileTask
      m.adbmobile = ADBMobile().getADBMobileConnectorInstance(m.adbmobileTask)
    4. Obtenga constantes SG de
      adbmobile
      .
      m.adbmobileConstants = m.adbmobile.sceneGraphConstants()
    5. Registre una llamada de retorno para recibir un objeto Response para todas las llamadas a la API
      AdbMobile
      .
      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

Implementación de muestra

Llamadas de API de muestra en el SDK heredado

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

Ejemplo de llamadas de API en 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