Captação de informações sobre uso, frequência e aquisição de usuários do seu App — Firebase: 2 de 4

DP6
DP6
Feb 23, 2017 · 12 min read

Este é o segundo post da série “Firebase” da DP6, focada nas funcionalidades que o Firebase traz para o cenário de desenvolvimento, análise e cativação de usuários de aplicativos móveis. Se quiser uma visão geral do que a ferramenta é capaz, vale dar uma olhada no nosso primeiro post sobre o assunto.

Nesta segunda entrada da série vamos focar no aspecto analítico da ferramenta, mais precisamente como se faz para capturar informações sobre o uso, frequência e aquisição de usuários do seu App, via o flexível SDK do Firebase, unido ao já robusto Tag Manager do Google (GTM).

Este é um post com viés técnico e é recomendado o conhecimento de tecnologias e linguagens focadas no desenvolvimento de aplicativos para iOS (Swift) e Android (Java), além de seus ambientes de desenvolvimento (XCode e Android Studio, respectivamente). Infelizmente não temos bits suficientes para cobrir todo o processo de desenvolvimento de apps, então vamos focar nos detalhes do SDK.

Introdução

Cobrimos no primeiro post os relatórios que o Firebase traz para que seja possível ter uma visão focada no sucesso do seu App.

A coleta de dados é atividade crucial para que se tenha uma noção clara do que está dando certo e o que possui oportunidade de melhoria em seu App. Não deixe para o “achismo”, tenha sempre dados para apoiar suas teorias e suas apostas serão muito mais acuradas!

Como introdução, gostaria usar a oportunidade do post para recomendar que a coleta de dados de todas as funcionalidades do App façam parte não apenas de um processo posterior ao desenvolvimento, mas que esteja intrinsecamente ligado à construção da visão do seu negócio.

Inclua a coleta como parte do desenvolvimento e limitante para o lançamento; é importante defender esta atividade como algo essencial para o funcionamento do App, já que não saber o que e como cada função está sendo utilizada cria discussões vazias e noções muito limitadas às prioridades de desenvolvimento para próximas versões.

Sendo assim, antes de tudo, é vital que seja feito um levantamento cuidadoso do que o seu App traz para o cenário da empresa e seus objetivos de negócio. Quais são os indicadores de sucesso para o App? Quais interações você diria que indicam que seus usuários estão usando o App da forma correta? Com tudo isso anotado, é hora de implementar o SDK do Firebase.

Estrutura geral

O SDK do Firebase habilita que muitas informações sejam coletadas sobre a navegação e interação dos usuários. Algumas informações são coletadas automaticamente apenas à partir da inicialização do SDK, enquanto outras precisam ser coletadas manualmente.

O SDK é capaz de coletar as seguintes informações automaticamente:

Age: Faixa etária do usuário (18–24, 25–34, 35–44, 45–54, 55–64, e 65+)

App Store: Em qual loja de aplicativos foi feito o download (útil para aplicativos Android)

App Version: Versão do aplicativo

Country: País de onde o aplicativo está sendo utilizado

Device Brand: Marca do aparelho

Device Category: Categoria do aparelho (ex: mobile (smartphones) e tablet)

Device Model: Modelo do aparelho (ex: iPhone 5s ou SM-J500M)

First Open Time: O momento (em microsegundos, UTC) em que o usuário abriu o app pela primeira vez, arredondado para a próxima hora fechada.

Gender: Gênero do usuário

Interests: Lista de interesses do usuário

Language: Língua configurada para o sistema operacional

New: Abriu o app pela primeira vez nos últimos 7 dias

Established: Abriu o app pela primeira vez há mais de 7 dias

OS Version: Versão do sistema operacional do aparelho (ex: 9.3.2 ou 5.1.1)

Todas as outras informações que forem necessárias precisam ser coletadas de forma personalizada, pelo uso de funções específicas para cada plataforma.

Os dados personalizados coletados no Firebase são separados em duas categorias:

Eventos: Todas as interações com o seu app, como ações do usuário, eventos de sistema, erros e visualizações de telas. Podem ser coletados até 500 eventos distintos e o Firebase não possui amostragem de dados.

Propriedades: Atributos personalizados de seus usuários para que sua audiência possa ser categorizada em segmentos específicos, como a preferência de língua utilizada ou a localização geográfica.

Firebase + GTM

Para uma implementação flexível, é possível que o Firebase seja implementado junto ao Google Tag Manager. Seguindo este caminho, o GTM é capaz de interceptar, redirecionar e bloquear eventos enviados ao Firebase para que os dados coletados possam ser reutilizados por outras ferramentas, como o Google Analytics, por exemplo.

Aqui vamos focar na implementação pura do Firebase, mas vale revisar as documentações oficiais para entender os benefícios desta outra camada de desenvolvimento.

Preparativos

Antes de tudo, certifique-se que você já possui um projeto Firebase criado. Se não tiver, lembre-se de criar um no Console do Firebase.

iOS

A implementação para iOS em Swift se apoia no uso do CocoaPods, se você ainda não utiliza, é extremamente recomendado fazer a instalação da funcionalidade. O CocoaPods ajuda na instalação de SDKs e bibliotecas com extrema facilidade em seus projetos XCode.

Pré-requisitos

Para a instalação do Firebase, esteja atento ao seguintes requisitos:

  • XCode 7.0 ou superior
  • Um projeto XCode direcionado ao iOS 7.0 ou superior
  • O Identificador da “Bundle” do seu app (ex: com.meuapp.com)
  • Cocoa Pods 1.0.0 ou posterior
  • Para usar o sistema de mensagens: um aparelho iOS; certificado APN com “Push Notifications” habilitado; no XCode, habilitar os “Push Notifications” em App > Capabilities
  • Um computador que rode MacOS (Apenas o MacOS suporta a instalação do XCode)

Instalando o SDK

Para instalar o Firebase, abra o terminal, vá até a pasta inicial de seu projeto. Se não tiver um projeto, crie um novo projeto no XCode. Escolha a opção para abrir um Workspace.

$ cd seu-projeto

$ pod init

*Substitua “seu-projeto” pela pasta que representa seu projeto. O comando “cd” é utilizado para entrar em pastas do diretório selecionado.

Este comando irá criar um arquivo Podfile na pasta. Abra este arquivo e inclua o pod do Firebase e rode o comando de instalação do pod.

No arquivo:

Pod ‘Fireabse/Core’

No Terminal:

$ pod install

Entre em seu Console do Firebase e faça o download do arquivo GoogleService-Info.plist e inclua ele na pasta inicial de seu projeto.

Isto irá adicionar todas as bibliotecas e arquivos necessários para rodar o Firebase em seu projeto. Após este processo, abra o arquivo .xcworkspace de seu projeto para abrir o XCode.

No XCode inclua a seguinte linha de código em sua subclasse UIApplicationDelegate:

import Firebase

Após a importação, inicialize uma instância compartilhada, tipicamente em cada arquivo .swift das telas do seu App, no método application:didFinishiLauchingWithOptions:

FIRApp.configure();

Estamos focados no módulo de Analytics do Firebase, porém, do mesmo modo que instalamos o Firebase/Core no PodFile, outros módulos são instalados da mesma forma. Segue a lista de todos os módulos que podem ser instalados:

Analytics - Enviando eventos

Com a instância do objeto FIRApp inicializado, é possível capturar eventos utilizando o método logEventWithName(), que segue a seguinte estrutura:

class func logEvent(withName name:String, parameters: [String : NSObject]?)

name: Nome do evento. Deve conter até 40 caracteres alfanuméricos ou “_”. O prefixo “firebase_” não pode ser utilizado no envio de nome de eventos. Cuidado: os nomes dos eventos são sensíveis e eventos com nomes similares, mas com letras individuais maiúsculas trocadas serão contabilizados como eventos distintos.

Parameters: um dicionário de parâmetros. É possível passar nil como valor para indicar que o evento não possui parâmetros. Nomes de parâmetros podem conter até 40 caracteres alfanuméricos e precisam começar com um caractere alfanumérico. Apenas valores NSString e NSNumber (64-bit integers e floats) são aceitos. Os valores NSString podem conter até 100 caracteres. O prefixo “firebase_” é reservado e não pode ser utilizado para nomes de valores.

Cuidado, os seguintes nomes são reservados e não podem ser utilizados, pois são automaticamente coletados pelo SDK:

  • O prefixo firebase_
  • app_clear_data
  • app_remove
  • app_update
  • error
  • first_open
  • in_app_purchase
  • notification_dismiss
  • notification_foreground
  • notification_open
  • notification_receive
  • os_update
  • session_start
  • User_engagement

Eventos e Parâmetros Pré-Configurados

Para adicionar parâmetros, é recomendado utilizar os parâmetros pré-configurados do Firebase, estes são adicionados aos relatórios específicos de eventos e podem também ser utilizados para marcar valores importantes, como compras feitas em Apps de Ecommerce.

Os parâmetros pré-configurados podem ser encontrados na documentação oficial ou no arquivo FIRParameterNames.h adicionado ao seu projeto.

O mesmo pode ser aplicado aos eventos. Eventos pré-configurados geram relatórios especializados no Firebase Analytics. Por exemplo, o uso do evento kFIREventEcommercePurchase para marcar compras em seu App cria um relatório especializado para mostrar a compra de produtos, com resumo dos produtos, valores e outros parâmetros relevantes diretamente no acompanhamento de compras.

O exemplo abaixo envia um evento para marcar a interação do usuário com um elemento selecionado, marcando o seu ID, nome e tipo de conteúdo; ótimo para marcar o tap em botões:

FIRAnalytics.logEvent(withName: kFIREventSelectContent, parameters:[

kFIRParameterItemID: “id-\(title!)” as NSObject,

kFIRParameterItemName: title! as NSObject,

kFIRParameterContentType: “cont” as NSObject,

])

Eventos e Parâmetros Personalizados

Se os eventos pré-configurados ainda não atenderem às suas necessidades de coleta, é possível coletar eventos totalmente personalizados. Estes eventos são aqueles que utilizam nomes e parâmetros fora do padrão.

Atenção: Os parâmetros de eventos personalizados não aparecem nos relatórios dos eventos, porém, podem ser utilizados para criar segmentos e para criar audiências. Além disso, se integrado ao Google BigQuery, o Firebase também faz a exportação destes parâmetros juntos aos eventos.

O exemplo abaixo envia um evento com nome “share_image”, incluindo os parâmetros “name” e “full_text”.

FIRAnalytics.logEvent(withName: “share_image”, parameters: [

“name”: name as NSObject,

“Fuill_text”: text as NSObject

])

Validando o envio de eventos

Os relatórios do Firebase não são populados em real-time. Sendo assim, para validar se os eventos configurados estão sendo enviados corretamente, é recomendado que o modo “debug” do Firebase Analytics seja habilitado em seu projeto. Para fazer a configuração, siga os passos:

  • No XCode, vá em Product > Scheme > Edit Scheme
  • Selecione Run no menu
  • Selecione a aba Arguments
  • Na sessão Arguments passed on launch, adicione -FIRAnalyticsDebugEnabled

Os eventos coletados são apresentados na aba “Events” do relatório de Analytics, no console do Firebase.

Propriedades

Para coletar atributos importantes que o ajudaram na identificação dos usuários e sua segmentação, é possível utilizar o método setUserPropertyString(). Até 25 propriedades podem ser criadas, porém, lembre-se que o Firebase já coleta algumas propriedades por padrão, como listado anteriormente.

O exemplo abaixo marca uma comida selecionada como a preferida do usuário:

FIRAnalytics.setUserPropertyString(food, forName: “favorite_food”);

Atenção: as propriedades de idade, gênero e interesse são coletadas apenas se a coleta de publicidade for configurada (IDFA).

Campanhas e dados demográficos

Para coletar dados de campanha e informações demográficas, como idade e gênero, é necessário que o seu App esteja habilitado para coleta de informações de publicidade. Para habilitar a funcionalidade, siga os passos:

  • No XCode, selecione o Target (versão) do seu projeto
  • Vá até a aba General do Target
  • Abra a sessão Linked Framework and Libraries
  • Clique em + para adicionar uma biblioteca
  • Selecione AdSupport.framework

Android

A implementação para Android em Java se apoia no uso do Android Studio, porém, o SDK pode ser instalado em qualquer plataforma utilizada para desenvolvimento Android.

Pré-requisitos

Para a instalação do Firebase, esteja atento ao seguintes requisitos:

  • Um aparelho Android 4.0 (Ice Cream Sandwich) ou superior
  • Google Play Services 10.2.0 ou superior
  • O SDK do Google Play Services, adquirido pelo repositório do Google: pode ser acessado pelo Android SDK Manager
  • Android Studio, versão 1.5 ou superior

Instalando o SDK

Caso esteja utilizando a versão 2.2 ou superior do Android Studio, é recomendado o uso do Firebase Assistant para fazer a instalação da ferramenta em seu projeto. Para isso, siga os passo:

  • No Android Studio, selecione Tools > Firebase
  • Selecione a opção Analytics dos módulos listados
  • Selecione Connect to Firebase e siga o tutorial para a instalação em seu App

Se não estiver usando esta versão do Android Studio (2.2+), ainda é possível adicionar o SDK manualmente ao seu projeto, seguindo as instruções oficiais do google.

Assim como no iOS, os módulos de funcionalidade do Firebase são instalados separadamente, eles são:

Analytics — Enviando eventos

Atenção: Certifique que o seu App está compilando o firebase no arquivo build.grandle:

compile ‘com.google.firebase:firebase-core:10.0.1’

No topo de suas atividades, declare a biblioteca do firebase

Import com.google.fireabse.analytics.FirebaseAnalytics

Declare a classe no construtor de cada atividade…

private FirebaseAnalytics mFirebaseAnalytics;

e inicialize-a no método onCreate()

mFirebaseAnalytics = FirebaseAnalytics.getInstance(this);

Com a instância do objeto inicializado, é possível capturar eventos utilizando o método logEvent(), que segue a seguinte estrutura:

public void logEvent(String name, Bundle params)

name: Nome do evento. Deve conter até 40 caracteres alfanuméricos ou “_”. O prefixo “firebase_” não pode ser utilizado no envio de nome de eventos. Cuidado: os nomes dos eventos são sensíveis e eventos com nomes similares mas com letras individuais maiúsculas trocadas serão contabilizados como eventos distintos.

Parameters: um mapa de parâmetros. É possível passar null como valor para indicar que o evento não possui parâmetros. Nomes de parâmetros podem conter até 40 caracteres alfanuméricos, precisam começar com um caractere alfanumérico. Apenas valores NSString e NSNumber (64-bit integers e floats) são aceitos. Os valores NSString podem conter até 100 caracteres. O prefixo “firebase_” é reservado e não pode ser utilizado para nomes de valores.

Cuidado, os seguintes nomes são reservados e não podem ser utilizados, pois são automaticamente coletados pelo SDK:

  • O prefixo firebase_
  • app_clear_data
  • app_remove
  • app_update
  • error
  • first_open
  • in_app_purchase
  • notification_dismiss
  • notification_foreground
  • notification_open
  • notification_receive
  • os_update
  • session_start
  • User_engagement

Eventos e Parâmetros Pré-Configurados

Para adicionar parâmetros, é recomendado utilizar os parâmetros pré-configurados do Firebase, estes são adicionados aos relatórios específicos de eventos e podem também ser utilizados para marcar valores importantes, como compras feitas em Apps de Ecommerce. Os eventos pré-configurados podem ser encontrados na documentação oficial.

Os parâmetros pré-configurados podem ser encontrados na documentação oficial ou no arquivo FIRParameterNames.h adicionado ao seu projeto.

O mesmo pode ser aplicado aos eventos. Eventos pré-configurados geram relatórios especializados no Firebase Analytics. Por exemplo, o uso do evento kFIREventEcommercePurchase para marcar compras em seu App cria um relatório especializado para mostrar a compra de produtos, com resumo dos produtos, valores e outros parâmetros relevantes diretamente no acompanhamento de compras.

O exemplo abaixo envia um evento para marcar a interação do usuário com um elemento selecionado, marcando o seu ID, nome e tipo de conteúdo, ótimo para marcar o tap em botões:

Bundle bundle = new Bundle();

bundle.putString(FirebaseAnalytics.Param.ITEM_ID, id);

bundle.putString(FirebaseAnalytics.Param.ITEM_NAME, title);

bundle.putString(FirebaseAnalytics.Param.CONTENT_TYPE, “cont”);

mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.SELECT_CONTENT, bundle);

Eventos e Parâmetros Personalizados

Se os eventos pré-configurados ainda não atenderem às suas necessidades de coleta, é possível coletar eventos totalmente personalizados. Estes eventos são aqueles que utilizam nomes e parâmetros fora do padrão.

Atenção: Os parâmetros de eventos personalizados não aparecem nos relatórios dos eventos, porém, podem ser utilizados para criar segmentos e para criar audiências. Além disso, se integrado ao Google BigQuery, o Firebase também faz a exportação destes parâmetros juntos aos eventos.

O exemplo abaixo envia um evento com nome “share_image”, incluindo os parâmetros “name” e “full_text”.

Bundle bundle = new Bundle();

bundle.putString(“name”, name);

bundle.putString(“full_text”, text);

mFirebaseAnalytics.logEvent(“share_image”, bundle);

Validando o envio de eventos

Os relatórios do Firebase não são populados em real-time. Sendo assim, para validar se os eventos configurados estão sendo enviados corretamente, é recomendado que o modo “debug” do Firebase Analytics seja habilitado em seu projeto, para que sejam mostrados no LogCat do Android Studio. Para fazer a configuração, insira os seguintes comandos adb em sua linha de comando:

  • adb shell setprop log.tag.FA VERBOSE
  • adb shell setprop log.tag.FA-SVC VERBOSE
  • adb logcat -v time -s FA FA-SVC

Os eventos coletados são apresentados na aba “Events” do relatório de Analytics, no console do Firebase.

Propriedades

Para coletar atributos importantes que o ajudaram na identificação dos usuários e sua segmentação, é possível utilizar o método setUserProperty(). Até 25 propriedades podem ser criadas, porém, lembre-se que o Firebase já coleta algumas propriedades por padrão, como listado anteriormente.

Primeiramente, configure as propriedades no console do firebase:

  • No Firebase Analytics vá até a aba User Properties
  • Clique em NEW USER PROPERTY
  • Insira um nome e descrição para a propriedade e selecione Create

O exemplo abaixo marca uma comida selecionada como a preferida do usuário. O método pode ser utilizado em qualquer atividade em que a instância do Firebase foi inicializada:

mFirebaseAnalytics.setUserProperty(“favorite_food”, mFavoriteFood);

Conclusão

Vimos neste artigo o método de implementação básica do Firebase Analytics para iOS e Android. Existem detalhes que podem ser descobertos nas documentações oficiais para as plataformas e gostaria de encorajar todos a estudar os manuais:

Na próxima edição, vamos explorar as ferramentas focadas no desenvolvimento de aplicativos que o pacote do Firebase oferece, incluindo o Firebase Auth, o Firebase DataBase, Dynamic Links, Storage e Remote Config.

Post original em: https://goo.gl/vOg758

___________________________________________________________________

Augusto Roselli

DP6
Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade