O Analytics é uma funcionalidade do Beagle que faz o tagueamento de alguns eventos como o clique em um componente ou o carregamento de uma tela.
Em sua primeira versão era necessário implementar um ClickEvent
ou um ScreenEvent
no Backend, como no exemplo abaixo:
ClickEvent(
category = "category-button",
label = "Label-button",
value = "value-button"
)
ScreenEvent(
screenName = "FALLBACK"
)
Esses eventos eram declarados em seus respectivos componentes no backend. Por exemplo:
botão
tinha uma propriedade chamada ClickAnalyticEvent
que recebia o ClickEvent
.Screen
tinha uma propriedade chamada ScreenAnalyticEvent
que recebia um ScreenEvent
.Abaixo temos um exemplo do componente Botão
declarado no backend:
Button(
text = "Analytics 1",
onPress = listOf(
Alert("Analytics 1", "Tentando novamente!")
),
clickAnalyticsEvent = ClickEvent(
category = "category-button",
label = "Label-button",
value = "value-button"
)
)
Uma vez declarados no Backend, os eventos (com as informações listadas neles) podem ser recuperados no Frontend a partir de uma classe customizada para manuseá-las.
Analytics
que reunia as informações dos eventos em um objeto chamado event
. Abaixo listamos a assinatura no Android para referência@BeagleComponent
class SampleAnalytics: Analytics {
override fun trackEventOnClick(event: ClickEvent) {
//This code block will run when a ClickEvent is received
Log.i("analytics1", "$event")
}
override fun trackEventOnScreenAppeared(event: ScreenEvent) {
//This code block will run when a Screen is rendered
Log.i("analytics1", "screenUp -> "+ event.screenName)
}
override fun trackEventOnScreenDisappeared(event: ScreenEvent) {
//This code block will run when a Screen disappears
}
}
click
, ou a apresentação ou desaparecimento de uma tela
) as funções descritas acima eram disparadas)O Analytics 2.0 melhorou a maneira como os eventos podem ser declarados no backend e recuperados no frontend, e mais, agora é possível habilitar o tracking
para ações e propriedades sem ser necessário implementar o mapeamento de eventos no backend.
AnalycticsProvider
. Ao criâ-la, você deve implementar algumas funções que vão receber os eventos e mapeá-los. As informações sobre os eventos ficam reunidas no objeto record
que pode ser enviado para o seu serviço de analytics, como por exemplo o Google Analytics Service.Abaixo, temos um exemplo da implementação no frontend Android
@BeagleComponent
class SampleAnalytics2:AnalyticsProvider {
override fun getConfig(): AnalyticsConfig = object: AnalyticsConfig{
override var actions: Map<String, List<String>>? = hashMapOf(
"beagle:alert" to listOf("message")
)
override var enableScreenAnalytics: Boolean? = true
}
override fun createRecord(record: AnalyticsRecord) {
Log.i("analytics2", record.toString())
}
}
getConfig
e o createRecord
. A primeira é onde definimos quais ações e propriedades de cada ação que serão observadas. Sempre que a ação ocorrer, a segunda função, createRecord
, vai exibir o registro criado.A configuração geral sobre o que deve ou não gerar eventos de analytics
fica no frontend, mas ainda é possível controlar os eventos a partir do backend.
Agora, a propriedade que recebe os eventos de analytics faz parte da ação
, e não mais do botão
ou da tela
como no Analytics 1. Essa propriedade se chama analytics
analytics
recebe um elemento chamado ActionAnalyticsConfig
que irá definir se a ação vai disparar eventos para o AnalyticsProvider
lá no frontend.Aqui temos um exemplo de ação que recebe configurações de analytics no backend
Alert(
title = "Analytics 2",
message = "Tentando novamente!",
analytics = ActionAnalyticsConfig.Enabled(
ActionAnalyticsProperties(
attributes = listOf("message", "title")
)
)
)
Perceba que o ActionAnalyticsConfig
está definido como .Enabled
, ou seja, isso faz com que o frontend capture o evento que dispara informações e demonstre-o
O ActionAnalyticsConfig trás algumas propriedades consigo, e aqui listamos somente os atributos
da ação da qual queremos informações, mas existe uma outra propriedade chamada AdditionalEntries
que recebe informações extras, que podemos enviar com as demais informações no ActionAnalyticsConfig
.
Screen
(tela): Esses eventos são disparados automaticamente quando a tela aparece ou desaparece, e podem ser acessados a partir do objeto record
Vamos começar pelo backend. Embora não seja mais necessário criar eventos no backend, a funcionalidade está disponível para o Analytics 2 e o controle dos eventos pode ser realizado a partir do backend também.
Todas as informações, antes implementandas em atributos específicos na classe clickEvent
, agora são enviadas automaticamente para o frontend, quando implementamos o ActionAnalyticsConfig
.
ClickEvent
ou ScreenEvent
ActionAnalyticsConfig.Enabled
na propriedade analytics
da ação que quer mapear.botão
com exemplos das funcionalidades de analytics no backend e as informações que serão recuperadas no frontend (no exemplo abaixo listamos as informações em cada objeto
no formato de string):Button(
text = "Analytics 1",
onPress = listOf(
Alert("Analytics 1", "Tentando novamente!")
),
clickAnalyticsEvent = ClickEvent(
category = "category-button",
label = "Label-button",
value = "value-button"
)
)
Info recebida no front: ClickEvent(category=category-button, label=Label-button, value=value-button)
Button(
text = "Analytics 2",
onPress = listOf(
Alert(
title = "Analytics 2",
message = "Tentando novamente!",
analytics = ActionAnalyticsConfig.Enabled(
ActionAnalyticsProperties(
attributes = listOf("message", "title")
)
...
)
Info recebida no front: AnalyticsRecord( type=action, platform=android, attributes={message=Tentando novamente!, title=Analytics 2}, component={ id=6, position={x=384.0, y=1329.0}, type=beagle:button}, beagleAction=beagle:alert, event=onPress, additionalEntries=null, timestamp=1641235066016, screen=/fallback-screen)
NOTA: A id
do componente (botão
) que ativa a ação foi definida automaticamente pelo sistema, mas podemos definí-la a partir da função setId
no backend. Para mais informações sobre o setId verifique a nossa documentação
Alert
.AnalysticsConfig
.getConfig()
do AnalyticsProvider
AnalyticsProvider
foi implementado basta rodar sua aplicação e os eventos serão recebidos no frontend.Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.