DEV Community

fffeiip
fffeiip

Posted on

5 1

Integração do Realtime Database com o seu app react-native.

Fala galera,
Sou novo na área de desenvolvimento mobile e recentemente encontrei dificuldades em realizar a integração do meu app com a api do firebase. Encontrei quase nenhuma documentação em português e como outras pessoas talvez compartilhem das mesmas dificuldades que tive, resolvi compartilhar uma solução que encontrei.

Para isso, irei demonstrar a integração em um app qualquer, já existente, com o serviço do RealTime Database da api do firebase. Para este exemplo, utilizarei a integração com um app Android.

Cadastro e Configuração

De antemão, realizar o cadastro e a inicialização do projeto no firebase.

criarProjetoFirebase

Selecionar o projeto criado e adicionar um app android, semelhante às ilustrações a seguir:
adicionarApp
adicionarAppAndroid

Registrar seu app, baixar o arquivo de configurações e adicionar à pasta android/app do projeto, conforme figura a seguir:

googleServices

Lembrar de adicionar o google-services ao git ignore, pra não subir as configurações de conexão do banco por engano 👀

Integração

Com a versão 0.60 do react-native, o linking é feito de forma automática no projeto. A versão 0.60 é requisito mínimo para seguir as instruções subsequentes. Caso seu projeto tenho sido construído em uma versão anterior, há possibilidade de atualizar a versão utilizando o seguinte comando dentro da pasta do projeto:

npx react-native upgrade

Caso tenha alguma dificuldade, o próprio framework disponibiliza uma ferramenta para comparar as versões e, caso desejado, realizar o upgrade manualmente.

No arquivo build.graddle, dentro da pasta android/ adicionar o a dependência do google-services

buildscript {
  dependencies {
    // ...
    classpath("com.google.gms:google-services:4.2.0")
  }
}

Em seguida, no arquivo build.graddle localizado em android/app/ adicionar ao final do arquivo o seguinte:

apply plugin: 'com.google.gms.google-services'

Agora, para integrar o firebase ao app, vamos utilizar a biblioteca react-native-firebase que é mantida pela invertase.

Na pasta do projeto, rodar os seguintes comandos:

yarn add @react-native-firebase/app
yarn add @react-native-firebase/database

E pronto, seu app está integrado com o Realtime Database. Caso deseje integra-lo com alguma outra funcionalidade da api, é só selecionar o módulo desejado e adicioná-lo via yarn.

yarn add @react-native-firebase/nomeDoModulo

Modo de Uso

Para utilizar a funcionalidade no seu projeto :

import database from '@react-native-firebase/database';

Leitura

componentDidMount() {
        let dbRef = database().ref(`usuario_id/${this.state.userid}`)
        this.listenerFirebase(dbRef)
    }

listenerFirebase(dbRef) {
        dbRef.on("value", dataSnapshot => {
            var feedbacks = []

            dataSnapshot.forEach(child => {
                feedbacks.push({
                    mensagem: child.val().feedback.mensagem,
                    key: child.key
                });
            });

            this.setState({
                data: feedbacks.reverse()
            });
        });
    }

Escrita

post_firebase = () => {
        let feedback = {
            mensagem: this.state.mensagem_feedback,
        }
        let dbRef = database().ref(`usuario_id/${this.state.userid}`)

        dbRef.push({
            feedback
        }).then((data) => {
            this.setState({ mensagem_feedback: "" })
            //success callback
            console.log('data ', data)
        }).catch((error) => {
            //error callback
            console.log('error ', error)
        })
    }

Este foi meu primeiro post e achei bem legal escrevê-lo. Caso alguém tenha alguma sugestão de melhoria, deixar nos comentários. Espero ter ajudado.
Até mais. 👋

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

Top comments (1)

Collapse
 
vncssj profile image
vncssj

Vlw, Vou testar

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay