- Cada plataforma de dados existe um método específico para disparos, então para cada plataforma é um jeito diferente de diparo;
Exemplo de disparo Firebase
analytics().logEvent(event_type, {
event_screen_id,
event_name,
event_value,
});
- Então, se eu for adicionar um disparo de evento na interação do usuário em um botão ficaria:
function dispatchEvent() {
analytics().logEvent('interaction', {
event_screen_id: 'Tela de teste',
event_name: 'clique_no_botao',
event_value: {},
});
}
<Button onPress={dispatchEvent}>
Clique aqui para enviar evento
</Button>
Explicando um pouco o código acima, existe um botão que recebe o parâmetro onPress
, que seria o click no botão, quando ele clicar no botão vai disparar a função dispatchEvent
que vai acabar enviando o evento para o Firebase
- Bom, agora precisamos adicionar outra plataforma para o disparo nesse click, como ficaria?
function dispatchEvent() {
analytics().logEvent('interaction', {
event_screen_id: 'Tela de teste',
event_name: 'clique_no_botao',
event_value: {},
});
// {{ método de exemplo }}
insider.pushEvent({
event_screen_id: 'Tela de teste',
event_name: 'clique_no_botao',
event_value: {},
event_type: 'interaction'
})
}
Então, como cada plataforma tem um método diferente, cada plataforma deve ser chamada nesse onPress
- O exemplo acima é apenas um botão, agora vamos pensar na aplicação toda?
- Imagina o tempo necessário para remover, adicionar outras plataformas
Criação de um manager
que recebe os parâmetros padrões com os repositórios [plataformas de dados] para disparar todos os eventos
- Onde inicio o manager, adicionando todos os manager disponíveis na aplicação
manager.startEvents([InsiderRepo, FirebaseRepo])
- Todos poderiam ter apenas um método de envio, como por exemplo,
sendEvent
|pushEvent
ou etc. Nesse método recebe parâmetros padronizados para todos!
class FirebaseRepository {
pushEvent(params) {
const { screen, type, name, value } = params
analytics().logEvent(type, {
event_screen_id: screen,
event_name: name,
event_value: value,
});
}
}
- Onde eu faço o disparo apenas em um local
function dispatchEvent() {
manager.dispatchEvent('clique_no_botao', {
screen: 'Tela de teste',
type: 'interaction',
value: {}
})
// Caso eu queria adicionar o evneto somente em repositórios específicos eu poderia passar para o dispatch:
// Exemplo em repositórios específicos
manager.dispatchEvent('clique_no_botao', {
screen: 'Tela de teste',
type: 'interaction',
value: {}
}, [FirebaseRepository])
}
<Button onPress={dispatchEvent}>
Clique aqui para enviar evento
</Button>
- Então, amanhã se eu quiser remover qualquer plataforma para sempre é só apagar o arquivo do
Repositório
da plataforma e tirar domanager.startEvents
.
- Padronização dos parâmetros;