Roku - Rastreamento no SceneGraph tracking-in-scenegraph-roku

Introdução introduction

Você pode usar a estrutura de programação XML do Roku SceneGraph para desenvolver aplicativos. Esta estrutura apresenta dois conceitos principais:

  • Renderização do SceneGraph das telas do aplicativo
  • Configuração XML das telas do SceneGraph

O SDK do Adobe Mobile para Roku foi escrito em BrightScript. O SDK usa muitos componentes que não estão disponíveis para um aplicativo em execução no SceneGraph (por exemplo, threads). Portanto, um desenvolvedor do aplicativo Roku que pretende usar a estrutura do SceneGraph não pode chamar as APIs do SDK do Adobe Mobile (as últimas são semelhantes às disponíveis nos aplicativos herdados do BrightScript).

Arquitetura architecture

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.)

A ponte do conector foi projetada para funcionar da seguinte forma:

  • A ponte retorna uma instância compatível com o SceneGraph do SDK do AdobeMobile. O SDK compatível com o SceneGraph tem todas as APIs que o SDK herdado expõe.
  • Você usa as APIs do SDK do AdobeMobile no SceneGraph de uma forma muito semelhante à forma como usava as APIs herdadas.
  • A ponte também expõe um mecanismo para acompanhar retornos de chamada para APIs que retornam alguns dados.

Componentes components

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:

  • Expõe um conjunto de APIs públicas (Herdadas), incluindo a API de ponte do conector.
  • Retorna uma instância do conector do SceneGraph que envolve 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 public-scenegraph-apis

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 o rastreamento de MediaHeartbeat.
mediaTrackStart
API do SceneGraph para iniciar a sessão de rastreamento de vídeo usando o 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. A seguir está o formato para o 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

NOTE
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 informações de versão do AdobeMobileLibrary
Privacidade/opção de não participação
PRIVACY_STATUS_OPT_IN
Constante para o status de privacidade aceito
PRIVACY_STATUS_OPT_OUT
Constante para o status de privacidade não aceito
Constantes do MediaHeartbeat
Consulte as constantes nesta página:

Métodos de heartbeat de mídia.
Use essas constantes com as APIs do MediaHeartbeat
Metadados padrão
Consulte as constantes nesta página:

Parâmetros de metadados padrão.
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. 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 implementation

  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 SceneGraph, copie adbmobileTask.brs e adbMobileTask.xml no diretório pkg:/components/.

  3. Inicializar

    1. Importe adbmobile.brs na cena.

      code language-none
      <script type="text/brightscript" uri="pkg:/source/adbmobile.brs" />
      
    2. Crie uma instância do nó adbmobileTask na Cena.

      code language-none
      m.adbmobileTask = createObject("roSGNode", "adbmobileTask")
      
    3. Obtenha uma instância do conector adbmobile para o SceneGraph usando a instância adbmobileTask.

      code language-none
      m.adbmobile = ADBMobile().getADBMobileConnectorInstance(m.adbmobileTask)
      
    4. Obtenha as constantes adbmobile do SG.

      code language-none
      m.adbmobileConstants = m.adbmobile.sceneGraphConstants()
      
    5. Registre um retorno de chamada para receber o objeto de resposta para todas as chamadas de API AdbMobile.

      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
      

Exemplo de implementação sample-implementation

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
recommendation-more-help
c8eee520-cef5-4f8c-a38a-d4952cfae4eb