Configurar o Roku 2.x para mídia de transmissão
O Adobe Media SDK 2.x para Roku (adbmobile.brs) envia dados de mídia de transmissão dos canais Roku escritos em BrightScript diretamente para o Adobe Analytics. Ele também coleta dados do público-alvo por meio do Audience Manager e mede o engajamento por meio de eventos de mídia.
-
Pré-requisitos:
- Conclua a visão geral da implementação somente do Analytics.
- Baixe o Media SDK para Roku.
- Inclua uma API no reprodutor de mídia para assinar eventos do reprodutor e uma API que forneça informações do reprodutor, como o nome da mídia e a posição do indicador de reprodução.
Instalar o SDK
O download de AdobeMobileLibrary-2.*-Roku.zip contém dois componentes:
adbmobile.brs: o arquivo da biblioteca. Copie-o no diretóriopkg:/source/do seu canal.ADBMobileConfig.json: o arquivo de configuração do SDK, personalizado para o seu aplicativo.
Para os canais do SceneGraph, copie também adbmobileTask.brs e adbmobileTask.xml no diretório pkg:/components/. Consulte suporte a SceneGraph.
Configurar ADBMobileConfig.json
O JSON de configuração tem uma chave mediaHeartbeat exclusiva para streaming de mídia. Adicione ADBMobileConfig.json à origem do projeto e defina os valores de mediaHeartbeat, marketingCloud e analytics:
{
"analytics": {
"rsids": "your-report-suite-id",
"server": "your-analytics-server"
},
"marketingCloud": {
"org": "YOUR-MCORG-ID@AdobeOrg"
},
"mediaHeartbeat": {
"server": "your-namespace.hb-api.omtrdc.net",
"publisher": "your-publisher-id",
"channel": "sample-channel",
"ssl": true,
"ovp": "sample-ovp",
"sdkVersion": "sample-sdk",
"playerName": "Roku Player"
}
}
serverpublisherchannelsslovpsdkVersionplayerNamemediaHeartbeat estiver configurado incorretamente, o módulo de mídia entrará em um estado de erro e parará de enviar chamadas de rastreamento. Verifique se o valor marketingCloud.org inclui @AdobeOrg.Inicializar o SDK e processar mensagens
Obtenha uma instância da SDK com ADBMobile(). O serviço de ID de visitante da Experience Cloud gera uma ID de visitante que está incluída em todas as ocorrências.
processMessages e processMediaMessages no loop do evento principal a cada 250 ms para que o SDK envie pings corretamente.adb = ADBMobile()
' In your main event loop, every ~250 ms:
adb.processMessages()
adb.processMediaMessages()
processMessagesprocessMediaMessagesRastrear eventos de mídia
Rastreie cada evento de mídia chamando seu método SDK. Consulte a guia Roku 2.x em cada página de evento e variável para obter as chamadas, construtores e constantes exatas.
Uma sessão típica começa criando um objeto de mídia e chamando mediaTrackSessionStart:
adb = ADBMobile()
mediaInfo = adb_media_init_mediainfo("Mr. Robot", "video-123", 128.0, adb.MEDIA_STREAM_TYPE_VOD, adb.MEDIA_TYPE_VIDEO)
contextData = { "a.media.show": "Mr. Robot" }
adb.mediaTrackSessionStart(mediaInfo, contextData)
Os construtores globais adb_media_init_* criam os objetos de mídia, anúncio, ad-break, capítulo e QoS usados pelas chamadas de rastreamento:
adb_media_init_mediainfo(name, id, length, streamType, mediaType)adb_media_init_adinfo(name, id, position, length)adb_media_init_adbreakinfo(name, startTime, position)adb_media_init_chapterinfo(name, position, length, startTime)adb_media_init_qosinfo(bitrate, startupTime, fps, droppedFrames)Os metadados padrão são passados como uma matriz associativa de a.media.* chaves (o SDK também define constantes nomeadas, como MEDIA_VideoMetadataKeySHOW, para essas chaves). Consulte as páginas Variáveis para a chave que corresponde a cada dimensão.
Configurar a ID de visitante, a privacidade e o registro da Experience Cloud
Os métodos a seguir na instância ADBMobile() gerenciam identidade, privacidade e depuração:
visitorMarketingCloudID()visitorSyncIdentifiers(identifiers)setAdvertisingIdentifier(rida)getRIDA().getAllIdentifiers()setPrivacyStatus(status)adb.PRIVACY_STATUS_OPT_IN ou adb.PRIVACY_STATUS_OPT_OUT. Consulte Privacidade.getPrivacyStatus()setDebugLogging(flag)getDebugLogging()true se o log de depuração estiver habilitado.Suporte ao SceneGraph scenegraph
A estrutura XML do Roku SceneGraph não pode chamar as APIs herdadas do BrightScript SDK diretamente, pois o SDK usa componentes (como threads) que não estão disponíveis para um aplicativo SceneGraph. Para preencher essa lacuna, o SDK fornece um conector que retorna uma instância compatível com o SceneGraph expondo as mesmas APIs, além de um mecanismo de retorno de chamada para APIs que retornam dados.
A ponte tem três partes:
adbmobileTasknó: um nó de tarefa do SceneGraph que executa as APIs do SDK em um thread em segundo plano e retorna os dados às suas cenas.- Instância do conector: envolve todas as APIs públicas herdadas e se comunica com o nó
adbmobileTask. API_RESPONSEretorno de chamada: o campo que seu aplicativo observa para receber valores de retorno de APIs getter.
Para inicializar o SDK em um canal do SceneGraph:
-
Importar
adbmobile.brspara sua cena:code language-brightscript <script type="text/brightscript" uri="pkg:/source/adbmobile.brs" /> -
Crie o nó
adbmobileTask, obtenha a instância do conector e carregue as constantes do SceneGraph:code language-brightscript m.adbmobileTask = createObject("roSGNode", "adbmobileTask") m.adbmobile = ADBMobile().getADBMobileConnectorInstance(m.adbmobileTask) m.adbmobileConstants = m.adbmobile.sceneGraphConstants() -
Registre um retorno de chamada para receber objetos de resposta para APIs que retornam dados:
code language-brightscript m.adbmobileTask.ObserveField(m.adbmobileConstants.API_RESPONSE, "onAdbmobileApiResponse") function onAdbmobileApiResponse() as void responseObject = m.adbmobileTask[m.adbmobileConstants.API_RESPONSE] if responseObject <> invalid methodName = responseObject.apiName retVal = responseObject.returnValue if methodName = m.adbmobileConstants.PRIVACY_STATUS print "Privacy status: " + retVal end if end if end function
A instância do conector (m.adbmobile) expõe os mesmos métodos de mídia que o SDK herdado (mediaTrackSessionStart, mediaTrackPlay, mediaTrackPause, mediaTrackComplete, mediaTrackSessionEnd, mediaTrackError, mediaTrackEvent, mediaUpdatePlayhead e mediaUpdateQoS), de modo que as chamadas mostradas nas páginas de evento e variável funcionam da mesma forma. As APIs setter são chamadas diretamente; as APIs getter retornam seus valores por meio do retorno de chamada API_RESPONSE.
Próxima etapa
Uma vez concluída a implementação, você pode Configurar relatórios para implementações somente do Analytics.