Introdução ao Firebase para Android

Os aplicativos móveis precisam de um servidor de back-end para executar tarefas como autenticação de usuários e sincronização de dados do usuário em vários dispositivos. A criação desse servidor, no entanto, requer um conjunto de habilidades que falta à maioria dos desenvolvedores de aplicativos independentes. Felizmente, existem várias plataformas de back-end como serviço, geralmente chamadas de BaaS, que você pode usar hoje. O Firebase do Google é uma dessas plataformas.

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:

Janela do Assistente do FirebaseJanela do Assistente do FirebaseJanela do Assistente do Firebase

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.

Conectar à caixa de diálogo do FirebaseConectar à caixa de diálogo do FirebaseConectar à caixa de diálogo do Firebase

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.

mudanças no buildgradlemudanças no buildgradlealterações do buildgradle

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.

Evento personalizado no consoleEvento personalizado no consoleEvento personalizado no console

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.

Lista de provedores disponíveisLista de provedores disponíveisLista de provedores 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.

Lista de endereços de e-mail cadastradosLista de endereços de e-mail cadastradosLista de endereços de e-mail cadastrados

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.

Conteúdo do banco de dados em tempo real no consoleConteúdo do banco de dados em tempo real no consoleConteúdo do banco de dados em tempo real no console

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:

Deixe uma resposta