O Firebase oferece serviços essenciais, como análises, relatórios de falhas, autenticação do usuário e mensagens na nuvem sem nenhum custo. Seus serviços freemium incluem um banco de dados NoSQL em tempo real, hospedagem de arquivos e hospedagem de sites estáticos.
Neste tutorial, mostrarei como adicionar autenticação de usuário, análise e armazenamento remoto de dados ao seu aplicativo Android usando o Firebase.
Pré-requisitos
Para acompanhar você vai precisar de:
1. Usando o Firebase Analytics
O Firebase Analytics é uma das soluções de análise de aplicativos móveis mais populares disponíveis atualmente. Ao usá-lo, você pode obter uma compreensão precisa de quem são seus usuários e como eles estão usando seu aplicativo.
Etapa 1: configurar o Firebase Analytics
As compilações canary mais recentes do Android Studio têm suporte integrado para Firebase Analytics. Isso significa que você pode adicionar o Firebase Analytics ao seu projeto sem precisar sair do Android Studio.
Para começar a integrar o Firebase Analytics ao seu projeto, clique em Ferramentas > Firebase. Você será presenteado com o seguinte Assistente janela:
Clique em Análise e então Registrar um evento do Analytics.
Agora você deve associar seu projeto do Android Studio a um projeto do Firebase. Portanto, clique no Conectar ao Firebase botão.
Na caixa de diálogo que aparece, você poderá ver todos os seus projetos Firebase existentes. Você pode escolher um deles ou optar por criar um novo projeto. Por enquanto, sugiro que você escolha o Criar novo projeto do Firebase opção e dê um nome exclusivo ao projeto.
Assim que você pressionar o Conectar ao Firebase botão dentro da caixa de diálogo, o Android Studio fará automaticamente todas as alterações de configuração necessárias, como gerar um google-services.json arquivo e fazendo upload de uma impressão digital SHA1.
Agora você pode pressionar o botão Adicione o Analytics ao seu aplicativo botão para adicionar o plug-in do Firebase e a dependência do Firebase Core ao seu projeto. O Android Studio mostrará as alterações exatas que serão feitas no build.gradle arquivos.
Imprensa Aceitar alterações para concluir a configuração.
Etapa 2: gerar eventos de análise
Depois de configurar o Firebase Analytics para seu aplicativo, você não precisa escrever nenhum código adicional se estiver satisfeito apenas com os eventos analíticos gerados automaticamente, como o usuário abrindo seu aplicativo pela primeira vez, usando-o por mais de 10 segundos, fazendo uma compra no aplicativo ou desinstalando o aplicativo. Portanto, você pode executar seu aplicativo agora — em um emulador ou em um dispositivo real — e, nas próximas 24 horas, poderá ver os logs de análise no console do Firebase.
Se você deseja analisar os comportamentos de seus usuários mais de perto, pode gerar eventos analíticos personalizados manualmente usando o logEvent()
método do FirebaseAnalytics
aula. O método espera dois parâmetros: uma string especificando o nome do evento personalizado e um Bundle
contendo detalhes sobre o evento na forma de pares chave-valor.
Por exemplo, se você deseja gerar um evento chamado my_custom_event toda vez que um usuário clicar em um botão específico, você terá que adicionar o seguinte código ao manipulador de cliques do botão:
1 |
// Create an instance of FirebaseAnalytics
|
2 |
FirebaseAnalytics fa = FirebaseAnalytics.getInstance(this); |
3 |
|
4 |
// Create a Bundle containing information about
|
5 |
// the analytics event
|
6 |
Bundle eventDetails = new Bundle(); |
7 |
eventDetails.putString("my_message", "Clicked that special button"); |
8 |
|
9 |
// Log the event
|
10 |
fa.logEvent("my_custom_event", eventDetails); |
Na maioria das vezes, os eventos personalizados são indistinguíveis dos eventos coletados automaticamente no console do Firebase.
Observe que os nomes dos eventos diferenciam maiúsculas de minúsculas. Portanto, é uma boa ideia definir todos os nomes de eventos como strings constantes. Como alternativa, você pode usar constantes de nome de evento predefinidas que estão disponíveis no FirebaseAnalytics.Event
aula.
2. Usando Firebase Auth
A autenticação do usuário é um requisito importante para a maioria dos aplicativos Android atualmente. Ao ser capaz de autenticar seus usuários com segurança e, assim, identificá-los exclusivamente, você pode oferecer uma experiência personalizada a eles com base em seus interesses e preferências. Você também pode garantir que eles não tenham problemas para acessar seus dados privados ao usar seu aplicativo em vários dispositivos.
O Firebase Auth permite que você autentique seus usuários usando uma variedade de mecanismos de login. Neste tutorial, mostrarei como permitir que seus usuários façam login em seu aplicativo usando seus endereços de e-mail e senhas.
Etapa 1: configurar seu projeto
Para poder usar o Firebase Auth em seu projeto Android Studio, você deve adicionar o seguinte compile
dependência para o app
módulo de build.gradle arquivo.
1 |
compile 'com.google.firebase:firebase-auth:9.4.0' |
Etapa 2: ativar a autenticação baseada em senha
Por padrão, o Firebase não permite a autenticação do usuário. Portanto, você deve habilitar manualmente a autenticação de usuário baseada em senha no Firebase console. Para isso, navegue até o Autenticação seção e pressione o botão Configurar método de login botão. Agora você verá uma lista de todos os provedores de login disponíveis.
Escolher Senha do e-mailative-o e pressione Salvar.
Etapa 3: suporte ao registro do usuário
Com a autenticação baseada em senha, os novos usuários devem se registrar fornecendo um endereço de e-mail exclusivo e uma senha. Para adicionar essa funcionalidade ao seu aplicativo, você pode usar o createUserWithEmailAndPassword()
método do FirebaseAuth
aula. Como o próprio nome sugere, o método espera um endereço de e-mail e uma senha como argumentos.
Para determinar o resultado do createUserWithEmailAndPassword()
método, você deve adicionar um OnCompleteListener
para isso usando o addOnCompleteListener()
método. O trecho de código a seguir mostra como registrar um novo usuário e também informa se o processo de registro foi concluído com sucesso:
1 |
FirebaseAuth.getInstance() |
2 |
.createUserWithEmailAndPassword(emailAddress, password) |
3 |
.addOnCompleteListener(new OnCompleteListener<AuthResult>() { |
4 |
@Override
|
5 |
public void onComplete(@NonNull Task<AuthResult> task) { |
6 |
if(task.isSuccessful()) { |
7 |
// User registered successfully
|
8 |
}
|
9 |
}
|
10 |
});
|
Observe que é sua responsabilidade validar os endereços de e-mail e garantir que os usuários usem senhas fortes.
Você pode dar uma olhada nos endereços de e-mail de todos os usuários registrados com sucesso no Usuários guia do console do Firebase Autenticação seção.
Etapa 4: dar suporte ao login do usuário
Após um registro bem-sucedido, o usuário é conectado automaticamente. O usuário continuará conectado mesmo se o aplicativo for reiniciado. No entanto, seu aplicativo deve incluir um código que permita aos usuários fazer login manualmente usando o endereço de e-mail e a senha especificados durante o processo de registro.
Para conectar um usuário manualmente, você deve usar o signInWithEmailAndPassword()
método do FirebaseAuth
aula. O método espera um endereço de e-mail e uma senha como seus únicos argumentos e retorna um Task
objeto. Ao adicionar um OnCompleteListener
a ele, você pode verificar se o login foi concluído com sucesso.
Para evitar o login de um usuário que já está conectado, você deve chamar o signInWithEmailAndPassword()
método somente se o atual FirebaseUser
é null
.
O trecho de código a seguir mostra como fazer login de um usuário:
1 |
FirebaseAuth auth = FirebaseAuth.getInstance(); |
2 |
if (auth.getCurrentUser() != null) { |
3 |
// Already signed in
|
4 |
// Do nothing
|
5 |
} else { |
6 |
auth.signInWithEmailAndPassword(emailAddress, password) |
7 |
.addOnCompleteListener(new OnCompleteListener<AuthResult>() { |
8 |
@Override
|
9 |
public void onComplete(@NonNull Task<AuthResult> task) { |
10 |
if (task.isSuccessful()) { |
11 |
// User signed in successfully
|
12 |
}
|
13 |
}
|
14 |
});
|
15 |
}
|
Etapa 5: oferecer suporte à saída do usuário
Para desconectar um usuário, você pode simplesmente chamar o signOut()
método do FirebaseAuth
aula.
1 |
FirebaseAuth.getInstance().signOut(); |
3. Usando o banco de dados em tempo real do Firebase
Um dos recursos mais poderosos da plataforma Firebase é seu banco de dados em tempo real, e é chamado assim por um bom motivo: todas as operações de gravação realizadas nela ficam instantaneamente disponíveis para todos os clientes que a observam. Com esse banco de dados, você pode criar aplicativos que permitem aos usuários alternar facilmente de um dispositivo para outro e também colaborar instantaneamente com outros usuários.
Etapa 1: configurar seu projeto
Antes de usar o banco de dados em tempo real, você terá que adicionar o seguinte compile
dependência do seu app
módulo de build.gradle arquivo:
1 |
compile 'com.google.firebase:firebase-database:9.4.0' |
Etapa 2: gravar dados
Você pode pensar no banco de dados em tempo real como um objeto JSON. Isso significa que você pode adicionar pares chave-valor a ele, onde as chaves são sempre strings e os valores são primitivos, arrays ou outros objetos JSON.
Antes de gravar no banco de dados em tempo real, você deve obter uma referência a ele usando o getInstance()
método do FirebaseDatabase
aula. Você pode obter uma referência para qualquer caminho dentro do banco de dados usando o getReference()
método. O caminho pode conter uma única chave ou várias chaves organizadas hierarquicamente.
Uma vez que você tem um DatabaseReference
para um caminho, você pode definir seu valor usando o setValue()
método.
O trecho de código a seguir mostra como adicionar um par chave-valor simples ao banco de dados:
1 |
FirebaseDatabase db = FirebaseDatabase.getInstance(); |
2 |
DatabaseReference ref = db.getReference("message"); // Key |
3 |
ref.setValue("This is a test message"); // Value |
Ao ir para o Base de dados seção do console Firebase, você pode visualizar todos os dados que estão dentro do banco de dados em tempo real.
Etapa 3: ler dados
Para ler um valor do banco de dados em tempo real, você deve anexar um observador assíncrono à chave ou caminho associado. Mais precisamente, você deve anexar um ValueEventListener
para um DatabaseReference
objeto usando o addValueEventListener()
método.
O onDataChange()
método do ValueEventListener
dá-lhe acesso a um DataSnapshot
objeto, cujo getValue()
O método pode ser usado para recuperar o valor mais recente da chave.
Por exemplo, veja como você pode recuperar o valor que definimos na etapa anterior:
1 |
FirebaseDatabase db = FirebaseDatabase.getInstance(); |
2 |
DatabaseReference ref = db.getReference("message"); // Key |
3 |
|
4 |
// Attach listener
|
5 |
ref.addValueEventListener(new ValueEventListener() { |
6 |
@Override
|
7 |
public void onDataChange(DataSnapshot dataSnapshot) { |
8 |
// Retrieve latest value
|
9 |
String message = dataSnapshot.getValue(String.class); |
10 |
}
|
11 |
|
12 |
@Override
|
13 |
public void onCancelled(DatabaseError databaseError) { |
14 |
// Error handling
|
15 |
}
|
16 |
});
|
Observe que uma vez por ValueEventListener
é adicionado, seu onDataChange()
O método é acionado toda vez que o valor que está observando muda.
Conclusão
A plataforma Firebase evita a necessidade de um servidor de back-end e permite que você se concentre na criação de aplicativos melhores. Neste tutorial, você aprendeu como usá-lo para adicionar análise, autenticação de usuário e armazenamento de dados em nuvem em tempo real ao seu aplicativo Android.
Para saber mais sobre o Firebase, você pode consultar sua documentação oficial. Você também pode conferir nosso tutorial sobre como usar o Firebase Crash Reporting no Android: