Firebase - Dispensando o uso do tradicional backend para sincronização de dados
Francielly Moraes
O tradicional
Estrutura Backend - Servidores
● Servidor de dados● Servidor do sistema
Estrutura Backend - Servidores
● Configuração
OU
Estrutura Backend - Segurança da informação e conectividade
Estrutura Backend - Escalabilidade
● Vertical● Horizontal
SaaS - MBaaS
É de responsabilidade do provedor: (servidores, conectividade, cuidados com segurança da informação)
Firebase
● Realtime Database;● Andoid, iOS e JavaScript;● Escala junto com a aplicação;● SSL.
● Autenticação e criação de usuários com poucas linhas de código;
● Login com email & senha ou redes sociais;● Facebook, Twitter, GitHub e Google;● Custom auth token para integração com
servidores já existentes;● Acesso anônimo.
Criação de usuário
Firebase myFirebaseRef = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com/");
myFirebaseRef.createUser("[email protected]", "correcthorsebatterystaple", new Firebase.ValueResultHandler<Map<String, Object>>() { @Override public void onSuccess(Map<String, Object> result) { System.out.println("Successfully created user account with uid: " + result.get("uid")); } @Override public void onError(FirebaseError firebaseError) { // there was an error }});
Firebase ref = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com");
ref.authWithPassword("[email protected]", "correcthorsebatterystaple", new Firebase.AuthResultHandler() { @Override public void onAuthenticated(AuthData authData) { System.out.println("User ID: " + authData.getUid() + ", Provider: " + authData.getProvider()); }
@Override public void onAuthenticationError(FirebaseError firebaseError) { // there was an error }});
Login com email & senha
● Deploy em segundos;● Rollback com um clique;● Domínio customizado;● SSL;● Requer Node.js e npm
$ npm install -g firebase-tools$ firebase init$ firebase deploy
● Usa NoSql;● Dados armazenados em JSON;
● As alterações feitas são automaticamente sincronizados com a nuvem Firebase e com outros clientes dentro de milissegundos.
Firebase
● Um módulo do sistema se comunica com o Firebase, o outros com o servidor já existente
● Todos o sistema se comunica com o Firebase
Como usar?
Crie sua conta!
dependencies {compile 'com.firebase:firebase-client-android:2.5.2+'
}
android {…packagingOptions {
exclude 'META-INF/LICENSE'exclude 'META-INF/LICENSE-FIREBASE.txt'exclude 'META-INF/NOTICE'
}}
Gradle
Adicione a permissão de internet no Manifest<uses-permission android:name="android.permission.INTERNET" />
Inicie o Firebase, na activity, caso tenha apenas uma. Dê preferencia para a instancia de Application
@Overridepublic void onCreate() {
super.onCreate();Firebase.setAndroidContext(this);
}
Android
Escrita
Firebase myFirebaseRef = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com/");
myFirebaseRef.child("message").setValue("Do you have data? You'll love Firebase.");
Android
Leitura
Firebase myFirebaseRef = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com/");
myFirebaseRef.child("message").addValueEventListener(new ValueEventListener() {@Overridepublic void onDataChange(DataSnapshot snapshot) {
System.out.println(snapshot.getValue()); //prints "Do you have data? You'll love Firebase."}
@Override public void onCancelled(FirebaseError error) { }});
Android
{ "rules": { "Offers" :{ ".read" : true, ".write" : false }, "Users" : { "$uid" : { ".read": "auth != null && auth.uid == $uid" } } }}
Segurança
Quanto custa?
Dúvidas?
Contato
https://plus.google.com/+FranciellyMoraes3
https://br.linkedin.com/in/franms