Show Menu
TOPICS×

Rastreamento no SceneGraph (Roku)

Introdução

O Roku introduziu uma nova estrutura de programação para o desenvolvimento de aplicativos: a estrutura de programação XML do SceneGraph. Essa nova estrutura apresenta dois novos conceitos principais:
  • Renderização das telas do aplicativo no SceneGraph
  • Configuração XML das telas do SceneGraph
O SDK do Adobe Mobile para Roku foi escrito em BrightScript. O SDK usa vários componentes que não estão disponíveis para um aplicativo executado no SceneGraph (por exemplo, threads). Portanto, se um desenvolvedor de aplicativos Roku quiser usar a estrutura do SceneGraph, ele não poderá chamar as APIs de SDK do Adobe Mobile (as mais recentes são semelhantes àquelas disponíveis nos aplicativos BrightScript herdados).

Arquitetura

Para adicionar suporte do SceneGraph ao SDK do AdobeMobile, a Adobe adicionou uma nova API que cria um conector bridge entre o SDK do AdobeMobile e
adbmobileTask
. O último é um nó do SceneGraph usado para a execução da API do SDK. (O uso do
adbmobileTask
é explicado em detalhes mais adiante neste documento.)
O conector bridge foi projetado para ser executado da seguinte maneira:
  • O bridge retorna uma instância do SDK do AdobeMobile compatível com o SceneGraph. O SDK compatível com o SceneGraph contém todas as APIs que o SDK herdado apresenta.
  • Use as APIs do SDK AdobeMobile no SceneGraph de maneira semelhante às APIs herdadas.
  • O bridge também expõe um mecanismo para detectar retornos de chamada para APIs que retornam alguns dados.

Componentes

Aplicativo SceneGraph:
  • Consume APIs
    AdobeMobileLibrary
    por meio das APIs do conector bridge do SceneGraph.
  • Registra retornos de chamada de resposta em
    adbmobileTask
    para as variáveis de dados de saída esperadas.
AdobeMobileLibrary:
  • Exibe um conjunto de APIs públicas (Herdadas), incluindo a API do conector bridge.
  • Retorna uma instância do conector SceneGraph que encapsula todas as APIs públicas herdadas.
  • Comunica-se com um nó
    adbmobileTask
    do SceneGraph para a execução de APIs.
Nó adbmobileTask:
  • Um nó de tarefa do SceneGraph que executa as APIs
    AdobeMobileLibrary
    em um thread em segundo plano.
  • Atua como um representante para retornar os dados às cenas do aplicativo.

APIs públicas do SceneGraph

ADBMobileConnector

Categoria
Nome do método
Descrição
Constantes
sceneGraphConstants
Retorna um objeto contendo
SceneGraphConstants
. Consulte os detalhes na tabela acima.
Registro de depuração
setDebugLogging
API do SceneGraph para definir o log de depuração no SDK do ADBMobile.
getDebugLogging
API do SceneGraph para obter o log de depuração do SDK do ADBMobile.
Para obter mais informações, consulte a seção Log de depuração do SDK herdado.
Status de privacidade / Rejeição
setPrivacyStatus
API do SceneGraph para definir o status de privacidade no SDK do ADBMobile.
getPrivacyStatus
API do SceneGraph para obter o status de privacidade do SDK do ADBMobile.
Para obter mais informações, consulte a seção Status de exclusão/privacidade do SDK herdado.
Analytics
trackState
API do SceneGraph para rastrear o estado no SDK do ADBMobile.
trackAction
API do SceneGraph para rastrear ações no SDK do ADBMobile.
trackingIdentifier
API do SceneGraph para obter um identificador de rastreamento do SDK do ADBMobile.
userIdentifier
API do SceneGraph para obter um identificador do usuário do SDK do ADBMobile.
setUserIdentifier
API do SceneGraph para definir o identificador do usuário no SDK do ADBMobile.
getAllIdentifiers
A API do SceneGraph recupera todas as identidades de usuário conhecidas e persistentes pelo SDK Roku.
Para obter mais informações, consulte a seção Analytics do SDK herdado.
Experience Cloud
visitorSyncIdentifiers
API do SceneGraph para sincronizar os identificadores da Experience Cloud no SDK do ADBMobile.
visitorMarketingCloudID
API do SceneGraph para obter a ID de visitante da Experience Cloud ID do SDK do ADBMobile.
Para obter mais informações, consulte a seção Experience Cloud do SDK herdado.
Audience Manager
audienceSubmitSignal
API do SceneGraph para enviar um sinal de gerenciamento de público-alvo com características.
audienceVisitorProfile
API do SceneGraph para obter um perfil de visitante do Audience Manager do SDK do ADBMobile.
audienceDpid
API do SceneGraph para obter um Dpid de público-alvo do SDK do ADBMobile.
audienceDpuuid
API do SceneGraph para obter um Dpuuid de público-alvo do SDK do ADBMobile.
audienceSetDpidAndDpuuid
API do SceneGraph para definir o Dpid e o Dpuuid de público-alvo no SDK ADBMobile.
Para obter mais informações, consulte a seção Audience Manager do SDK herdado.
MediaHeartbeat
mediaTrackLoad
API do SceneGraph para carregar conteúdo de vídeo para rastreamento do MediaHeartbeat.
mediaTrackStart
API do SceneGraph para iniciar a sessão de rastreamento de vídeo usando MediaHeartbeat.
mediaTrackUnload
API do SceneGraph para descarregar conteúdo de vídeo do rastreamento de MediaHeartbeat.
mediaTrackPlay
API do SceneGraph para rastrear a reprodução do conteúdo de vídeo.
mediaTrackPause
API do SceneGraph para rastrear conteúdo de vídeo pausado.
mediaTrackComplete
API do SceneGraph para rastrear a conclusão da reprodução do conteúdo de vídeo.
mediaTrackError
API do SceneGraph para rastrear erros de reprodução.
mediaTrackEvent
API do SceneGraph para rastrear eventos de reprodução durante o rastreamento. Por exemplo: anúncios, capítulos.
mediaUpdatePlayhead
API do SceneGraph para enviar atualizações de indicador de reprodução ao MediaHeartbeat durante o rastreamento de vídeo.
mediaUpdateQoS
API do SceneGraph para enviar atualizações de QoS ao MediaHeartbeat durante o rastreamento de vídeo.
Para obter mais informações, consulte a seção MediaHeartbeat do SDK herdado.

SceneGraphConstants

Nome da constante
Descrição
API_RESPONSE
Usado para recuperar o objeto de resposta do campo
adbmobileTask
do nó
adbmobileApiResponse
DEBUG_LOGGING
Usado como
apiName
para
getDebugLogging
PRIVACY_STATUS
Usado como
apiName
para
getPrivacyStatus
TRACKING_IDENTIFIER
Usado como
apiName
para
trackingIdentifier
USER_IDENTIFIER
Usado como
apiName
para
userIdentifier
VISITOR_MARKETING_CLOUD_ID
Usado como
apiName
para
visitorMarketingCloudID
AUDIENCE_VISITOR_PROFILE
Usado como
apiName
para
audienceVisitorProfile
AUDIENCE_DPID
Usado como
apiName
para
audienceDpid
AUDIENCE_DPUUID
Usado como
apiName
para
audienceDpuuid

Nó adbmobileTask

Campo
Tipo
Padrão
Uso
adbmobileApiCall
assocarray
Inválido
NÃO modifique este campo nem permita que seja utilizado pelo Aplicativo. Este campo é usado pelo ADBMobile SceneGraphConnector para rotear as chamadas de API por meio dos nós do SceneGraph e obter as respostas. Portanto, essa chave/campo é reservada para AdobeMobileSDK para compatibilidade com o SceneGraph.
Importante:
qualquer modificação nesse campo pode resultar no funcionamento incorreto do AdobeMobileSDK.
adbmobileApiResponse
assocarray
Inválido
Somente leitura. Todas as APIs executadas no AdobeMobileSDK retornarão respostas neste campo. Registre-se para um retorno de chamada para detectar as atualizações desse campo e receber objetos de resposta. O seguinte é o formato do objeto de resposta:
response = { "apiName" : <SceneGraphConstants. API_NAME> "returnValue : <API_RESPONSE> }
Uma instância desse objeto de resposta será enviada para qualquer chamada de API no AdobeMobileSDK que deveria retornar um valor de acordo com o guia de referência da API. Por exemplo, uma chamada de API para visitorMarketingCloudID() retornará o seguinte objeto de resposta:
response = { "apiName" : m. adbmobileConstants. VISITOR_MARKETING_CLOUD_ID "returnValue : "07050x25671x33760x72644x14" }
OU, os dados de resposta também podem ser inválidos:
response = { "apiName" : m. adbmobileConstants. VISITOR_MARKETING_CLOUD_ID "returnValue : invalid }

adbmobile.brs

getADBMobileConnectorInstance

Assinatura da API:
ADBMobile().getADBMobileConnectorInstance()
Entrada:
adbmobileTask
Tipo de retorno:
ADBMobileConnector

sgConstants

Assinatura da API:
ADBMobile().sgConstants()
Entrada: Nenhum Tipo de retorno:
SceneGraphConstants
Consulte a referência da API
ADBMobileConnector
para obter mais detalhes.

Constantes do ADBMobile

 Recurso 
Nome da constante
Descrição  
Controle de versão
version
Constante para recuperar as informações de versão da AdobeMobileLibrary
Privacidade/rejeição
PRIVACY_STATUS_OPT_IN
Constante para o status de privacidade aceito
PRIVACY_STATUS_OPT_OUT
Constante para status de privacidade rejeitado
Constantes do MediaHeartbeat
Consulte as constantes nesta página:
Use essas constantes com as APIs do MediaHeartbeat
Metadados padrão
Consulte as constantes nesta página:
Use essas constantes para anexar metadados de vídeo/anúncio padrão às APIs do MediaHeartbeat
As APIs do
MediaHeartbeat
definidas globalmente na AdobeMobileLibrary herdada podem ser acessadas
como estão
no ambiente do SceneGraph porque elas não usam componentes do Brightscript que não estejam disponíveis nos nós do SceneGraph. Para obter mais informações sobre esses métodos, consulte a tabela abaixo:

Métodos globais para MediaHeartbeat

Método
Descrição
adb_media_init_mediainfo
Esse método retorna um objeto de Informações de mídia 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 retorna o objeto de Informações do anúncio 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 retorna o objeto de Informações do 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 retorna o objeto de Informações do 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 retorna um objeto de Informações de QoS inicializado.
Function adb_media_init_qosinfo(bitrate As Double, startupTime as Double, fps as Double, droppedFrames as Double) As Object

Implementação

  1. Baixe a biblioteca do Roku -
    Baixe a biblioteca do Roku mais recente.
  2. Configurar o ambiente de desenvolvimento
    1. Copie
      adbmobile.brs
      (AdobeMobileLibrary) no diretório
      pkg:/source/
      .
    2. Para obter suporte ao Scene Graph, copie
      adbmobileTask.brs
      e
      adbMobileTask.xml
      no diretório
      pkg:/components/
      .
  3. Inicializar
    1. Importe
      adbmobile.brs
      na cena.
      <script type="text/brightscript" uri="pkg:/source/adbmobile.brs" />
    2. Crie uma instância do nó
      adbmobileTask
      na Cena.
      m.adbmobileTask = createObject("roSGNode", "adbmobileTask")
    3. Obtenha uma instância do conector
      adbmobile
      para o SceneGraph usando a instância
      adbmobileTask
      m.adbmobile = ADBMobile().getADBMobileConnectorInstance(m.adbmobileTask)
    4. Obtenha as constantes
      adbmobile
      do SG.
      m.adbmobileConstants = m.adbmobile.sceneGraphConstants()
    5. Registre um retorno de chamada para receber o objeto de resposta para todas as chamadas de 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

Exemplo de implementação

Exemplos de chamadas de API no SDK herdado

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

Exemplos de chamadas de API no SDK do SG

'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