Roku - Suivi dans SceneGraph tracking-in-scenegraph-roku
Introduction introduction
Vous pouvez utiliser le framework de programmation XML SceneGraph de Roku pour développer des applications. Ce framework comprend deux nouveaux concepts clés :
- Rendu SceneGraph des écrans de l’application
- Configuration XML des écrans SceneGraph
Le SDK Adobe Mobile pour Roku est écrit dans BrightScript. Le SDK utilise de nombreux composants qui ne sont pas disponibles pour une application s’exécutant sur SceneGraph (par exemple, les threads). Par conséquent, un développeur d’applications Roku ayant l’intention d’utiliser la structure SceneGraph ne peut pas appeler les API SDK Adobe Mobile (ces dernières sont similaires à celles disponibles dans les applications BrightScript héritées).
Architecture architecture
Pour ajouter la prise en charge de SceneGraph au kit SDK AdobeMobile, Adobe a ajouté une nouvelle API qui crée un pont de connecteur entre le kit SDK AdobeMobile et adbmobileTask. Le second est un nœud SceneGraph utilisé pour l’exécution de l’API du kit SDK. (L’utilisation d’adbmobileTask est expliquée en détail dans tout le reste de ce document.)
Le pont de connecteur est conçu pour fonctionner comme suit :
- Le pont renvoie une instance compatible SceneGraph du SDK AdobeMobile. Le SDK compatible avec SceneGraph possède toutes les API exposées par le SDK hérité.
- Vous utilisez les API SDK AdobeMobile dans SceneGraph de manière très similaire à la manière dont vous utilisiez les API héritées.
- Le pont expose également un mécanisme d’écoute des rappels pour les API qui renvoient certaines données.
Composants components
Application SceneGraph :
- Utilise les
AdobeMobileLibraryAPI via les API de pont de connecteur SceneGraph. - Enregistre les rappels de réponse sur
adbmobileTaskpour les variables de données de sortie attendues.
AdobeMobileLibrary :
- Expose un ensemble d’API publiques (héritées), y compris l’API du pont de connecteur.
- Renvoie une instance de connecteur SceneGraph qui encapsule toutes les API publiques héritées.
- Communique avec un nœud SceneGraph
adbmobileTaskpour l’exécution des API.
Nœud adbmobileTask :
- Nœud de tâche SceneGraph qui exécute les
AdobeMobileLibraryAPI sur un thread d’arrière-plan. - Agit en tant que délégué pour renvoyer des données aux scènes d’application.
API SceneGraph publiques public-scenegraph-apis
ADBMobileConnector
sceneGraphConstantsSceneGraphConstants. Reportez-vous au tableau ci-dessus pour plus de détails.setDebugLogginggetDebugLoggingsetPrivacyStatusgetPrivacyStatustrackStatetrackActiontrackingIdentifieruserIdentifiersetUserIdentifiergetAllIdentifiersvisitorSyncIdentifiersvisitorMarketingCloudIDaudienceSubmitSignalaudienceVisitorProfileaudienceDpidaudienceDpuuidaudienceSetDpidAndDpuuidmediaTrackLoadmediaTrackUnloadmediaTrackPlaymediaTrackCompletemediaTrackErrormediaUpdatePlayheadmediaUpdateQoSSceneGraphConstants
API_RESPONSEadbmobileTask du adbmobileApiResponse.DEBUG_LOGGINGapiName pour getDebugLoggingPRIVACY_STATUSapiName pour getPrivacyStatusTRACKING_IDENTIFIERapiName pour trackingIdentifierUSER_IDENTIFIERapiName pour userIdentifierVISITOR_MARKETING_CLOUD_IDapiName pour visitorMarketingCloudIDAUDIENCE_VISITOR_PROFILEapiName pour audienceVisitorProfileAUDIENCE_DPIDapiName pour audienceDpidAUDIENCE_DPUUIDapiName pour audienceDpuuidNœud adbmobileTask
Lecture seule de toutes les API exécutéees sur AdobeMobileSDK renvoie la réponse sur ce champ. Inscrivez-vous à un rappel pour écouter les mises à jour de ce champ afin de recevoir les objets de réponse. Voici le format de l’objet de réponse :
response = {
"apiName" : <SceneGraphConstants.
API_NAME>
"returnValue : <API_RESPONSE>
}
Une instance de cet objet de réponse sera envoyée pour tout appel API sur AdobeMobileSDK qui doit renvoyer une valeur conformément au guide de référence d’API. Par exemple, un appel API pour visitorMarketingCloudID() renvoie l’objet de réponse suivant :
response = {
"apiName" : m.
adbmobileConstants.
VISITOR_MARKETING_CLOUD_ID
"returnValue : "07050x25671x33760x72644x14"
}
OU, les données de réponse peuvent également être non valides :
response = {
"apiName" : m.
adbmobileConstants.
VISITOR_MARKETING_CLOUD_ID
"returnValue : invalid
}
adbmobile.brs
getADBMobileConnectorInstance
Signature API : ADBMobile().getADBMobileConnectorInstance()
Entrée : adbmobileTask
Type de retour : ADBMobileConnector
sgConstants
Signature API : ADBMobile().sgConstants()
Entrée : Aucune
Type de retour : SceneGraphConstants
ADBMobileConnector pour plus d’informations.Constantes ADBMobile
versionPRIVACY_STATUS_OPT_INPRIVACY_STATUS_OPT_OUTLes API MediaHeartbeat d’utilitaire globalement définies sur le composant AdobeMobileLibrary hérité sont accessibles telles quelles dans l’environnement SceneGraph car elles n’utilisent aucun composant Brightscript non disponible dans les nœuds SceneGraph. Pour plus d’informations sur ces méthodes, consultez le tableau ci-dessous :
Méthodes globales pour MediaHeartbeat
adb_media_init_mediainfoFunction adb_media_init_mediainfo(name As String, id As String, length As Double, streamType As String) As Objectadb_media_init_adinfoFunction adb_media_init_adinfo(name As String, id As String, position As Double, length As Double) As Objectadb_media_init_chapterinfoFunction adb_media_init_adbreakinfo(name As String, startTime as Double, position as Double) As Objectadb_media_init_adbreakinfoFunction adb_media_init_chapterinfo(name As String, position As Double, length As Double, startTime As Double) As Objectadb_media_init_qosinfoFunction adb_media_init_qosinfo(bitrate As Double, startupTime as Double, fps as Double, droppedFrames as Double) As ObjectImplémentation implementation
-
Téléchargement de la bibliothèque Roku - Téléchargez la dernière bibliothèque Roku.
-
Configuration de votre environnement de développement
-
Copiez
adbmobile.brs(AdobeMobileLibrary) dans votre répertoirepkg:/source/. -
Pour la prise en charge de SceneGraph, copiez
adbmobileTask.brsetadbMobileTask.xmldans votre répertoirepkg:/components/.
-
-
Initialisation
-
Importez
adbmobile.brsdans votre scène.code language-none <script type="text/brightscript" uri="pkg:/source/adbmobile.brs" /> -
Créez une occurrence du nœud
adbmobileTaskdans votre scène.code language-none m.adbmobileTask = createObject("roSGNode", "adbmobileTask") -
Obtenez une instance du connecteur
adbmobilepour SceneGraph à l’aide de l’occurrenceadbmobileTask.code language-none m.adbmobile = ADBMobile().getADBMobileConnectorInstance(m.adbmobileTask) -
Procurez-vous les constantes SG
adbmobile.code language-none m.adbmobileConstants = m.adbmobile.sceneGraphConstants() -
Enregistrez un rappel pour recevoir l’objet de réponse pour tous les appels de l’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
-
Exemple de mise en œuvre sample-implementation
Exemples d’appels d’API sur le kit SDK hérité
'get an instance of SDK
m.adbmobile = ADBMobile()
'execute setter APIs
m.adbmobile.setDebugLogging(true)
'execute getter APIs
debugLogging = m.adbmobile.getDebugLogging()
Exemples d’appels d’API sur le kit SDK 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