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
AdobeMobileLibrary
API via les API de pont de connecteur SceneGraph. - Enregistre les rappels de réponse sur
adbmobileTask
pour 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
adbmobileTask
pour l’exécution des API.
Nœud adbmobileTask :
- Nœud de tâche SceneGraph qui exécute les
AdobeMobileLibrary
API 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
sceneGraphConstants
SceneGraphConstants
. Reportez-vous au tableau ci-dessus pour plus de détails.setDebugLogging
getDebugLogging
setPrivacyStatus
getPrivacyStatus
trackState
trackAction
trackingIdentifier
userIdentifier
setUserIdentifier
getAllIdentifiers
visitorSyncIdentifiers
visitorMarketingCloudID
audienceSubmitSignal
audienceVisitorProfile
audienceDpid
audienceDpuuid
audienceSetDpidAndDpuuid
mediaTrackLoad
mediaTrackUnload
mediaTrackPlay
mediaTrackComplete
mediaTrackError
mediaUpdatePlayhead
mediaUpdateQoS
SceneGraphConstants
API_RESPONSE
adbmobileTask
du adbmobileApiResponse
.DEBUG_LOGGING
apiName
pour getDebugLogging
PRIVACY_STATUS
apiName
pour getPrivacyStatus
TRACKING_IDENTIFIER
apiName
pour trackingIdentifier
USER_IDENTIFIER
apiName
pour userIdentifier
VISITOR_MARKETING_CLOUD_ID
apiName
pour visitorMarketingCloudID
AUDIENCE_VISITOR_PROFILE
apiName
pour audienceVisitorProfile
AUDIENCE_DPID
apiName
pour audienceDpid
AUDIENCE_DPUUID
apiName
pour audienceDpuuid
Nœ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
version
PRIVACY_STATUS_OPT_IN
PRIVACY_STATUS_OPT_OUT
Les 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_mediainfo
Function adb_media_init_mediainfo(name As String, id As String, length As Double, streamType As String) As Object
adb_media_init_adinfo
Function adb_media_init_adinfo(name As String, id As String, position As Double, length As Double) As Object
adb_media_init_chapterinfo
Function adb_media_init_adbreakinfo(name As String, startTime as Double, position as Double) As Object
adb_media_init_adbreakinfo
Function adb_media_init_chapterinfo(name As String, position As Double, length As Double, startTime As Double) As Object
adb_media_init_qosinfo
Function adb_media_init_qosinfo(bitrate As Double, startupTime as Double, fps as Double, droppedFrames as Double) As Object
Implé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.brs
etadbMobileTask.xml
dans votre répertoirepkg:/components/
.
-
-
Initialisation
-
Importez
adbmobile.brs
dans votre scène.code language-none <script type="text/brightscript" uri="pkg:/source/adbmobile.brs" />
-
Créez une occurrence du nœud
adbmobileTask
dans votre scène.code language-none m.adbmobileTask = createObject("roSGNode", "adbmobileTask")
-
Obtenez une instance du connecteur
adbmobile
pour 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