Rastreamento no SceneGraph (Roku)

Introdução

O Roku introduziu um novo quadro de programação para o desenvolvimento de aplicativos: a estrutura de programação XML do SceneGraph. Esta nova estrutura apresenta dois novos 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

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

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

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

OBSERVAÇÃO

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

  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

Nesta página

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now