SlideShare una empresa de Scribd logo
1 de 36
Descargar para leer sin conexión
Integra tu aplicación Android con
Firebase
+Armando Picón
@devpicon
Firebase Realtime Database
Firebase Authentication
Firebase Storage
Temario
•Firebase Authentication
•FirebaseUI-Auth
•Firebase Realtime Database
•FirebaseUI-Database
•Firebase Storage
La consola de Firebase
https://console.google.firebase.com
Firebase Authentication
•Firebase Authentication encapsula el proceso de autenticación vía
providers.
•No se require código a nivel de servidor.
•Soporta autenticación por correo electrónico, Google, Facebook,
Twitter y Github.
Firebase Authentication
Firebase Authentication
Firebase Authentication
compile 'com.google.firebase:firebase-auth:9.2.0'
compile 'com.google.android.gms:play-services-auth:9.2.0'
GoogleSignInOptions gso = new GoogleSignInOptions.Builder
(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.default_web_client_id))
.requestEmail().build();
FirebaseUI - Auth
•Permite generar de una manera sencilla la pantalla de inicio de
session.
•Permite implementar el inicio de sesión por correo electrónico,
Google y/o Facebook.
•Permite la personalización básica para el inicio de session.
FirebaseUI - Auth
dependencies {
// ...
compile 'com.firebaseui:firebase-ui-auth:0.4.1'
}
FirebaseUI - Auth
// generamos la pantalla de logueo
startActivityForResult(
AuthUI.getInstance()
.createSignInIntentBuilder()
.setLogo(R.drawable.milibreta_logo)
.setProviders(
AuthUI.GOOGLE_PROVIDER,
AuthUI.EMAIL_PROVIDER)
.build(), RC_SIGN_IN);
FirebaseUI - Auth
FirebaseUI - Auth
FirebaseUI - Auth
private void signOut() {
AuthUI.getInstance().signOut(MainActivity.this).addOnCompleteListener(new
OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
startActivity(new Intent(MainActivity.this, LoginActivity.class));
finish();
}
});
}
Firebase Realtime Database
•Almacena data en una base de datos NoSQL en format jSON
•Provee sincronización en tiempo real para los dispositivos
conectados.
•Disponibilidad offline
Firebase Realtime Database
compile 'com.google.firebase:firebase-database:9.2.0'
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("message");
myRef.setValue("Hello, World!");
Firebase Realtime Database
private static String CHILD_NOTES = "notes";
public DatabaseReference getChildNoteReference() {
if (databaseReference == null) {
databaseReference = FirebaseDatabase.getInstance().getReference();
}
return databaseReference.child(CHILD_NOTES);
}
//...
notesDatabaseReference.push().setValue(note);
Firebase Realtime Database
FirebaseUI - Database
•Simplifica la obtención de datos desde la base de datos.
•Simplifica la implementación del adapter por medio de la clase
FirebaseRecyclerAdapter.
FirebaseUI - Database
dependencies {
compile 'com.firebaseui:firebase-ui-database:0.4.2'
}
FirebaseUI - Database
private void setFirebaseRecyclerView() {
// Implementacion de FirebaseUI-Database
RecyclerView noteRecyclerView = (RecyclerView) findViewById(R.id.
note_recycler_view);
noteRecyclerView.setHasFixedSize(true);
noteRecyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this));
noteFirebaseRecyclerAdapter = new NoteFirebaseRecyclerAdapter
(notesDatabaseReference);
noteRecyclerView.setAdapter(noteFirebaseRecyclerAdapter);
}
FirebaseUI - Database
public class NoteFirebaseRecyclerAdapter extends FirebaseRecyclerAdapter<Note,
NoteViewHolder> {
DatabaseReference databaseReference;
public NoteFirebaseRecyclerAdapter(DatabaseReference ref){
super(Note.class, R.layout.item_note, NoteViewHolder.class, ref);
databaseReference = ref;
}
@Override
protected void populateViewHolder(NoteViewHolder viewHolder, Note model, int position) {
viewHolder.setText(model.getText());
viewHolder.setName(model.getName());
viewHolder.setTimestamp(model.getTimestamp());
viewHolder.setAvatar(model.getUserImageUrl());
viewHolder.setPicture(model.getPictureUrl());
}
}
FirebaseUI - Database
Firebase Storage
•Permite almacenar imagenes, audio y video.
•Provee una “cubeta” dentro de Google Cloud Storage.
•Permite la subida de archivos en un modo seguro.
•Permite la descarga de archive en una forma robusta.
Firebase Storage
Firebase Storage
compile 'com.google.firebase:firebase-storage:9.2.0'
compile 'com.google.firebase:firebase-auth:9.2.0'
FirebaseStorage storage = FirebaseStorage.getInstance();
Firebase Storage
public StorageReference getPhotoStorageReference() {
if (storageReference == null) {
storageReference = FirebaseStorage.getInstance().getReference();
}
return storageReference.child(STORAGE_PHOTOS);
}
Firebase Storage
private void uploadFromUri(Uri fileUri) {
final StorageReference photoReference = photoStorageReference.child(fileUri.
getLastPathSegment());
showProgressDialog();
photoReference.putFile(fileUri).addOnSuccessListener(getActivity(), new
OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
// Get the public download URL
downloadUrl = taskSnapshot.getMetadata().getDownloadUrl();
savePictureUrlAsANote(downloadUrl);
hideProgressDialog();
dismiss();
}
});
}
¿Dónde está el código?
https://github.com/DevPicon/mi-libreta-firebase
Referencias
• Add Firebase to your Android Project
https://firebase.google.com/docs/android/setup
• Set up Firebase Realtime Database for Android
https://firebase.google.com/docs/database/android/start/
• Firebase Authentication
https://firebase.google.com/docs/auth/
•Firebase UI
https://github.com/firebase/FirebaseUI-Android/
•Firebase UI – Auth
https://github.com/firebase/FirebaseUI-Android/blob/master/auth/README.md
•Firebase UI - Database
https://github.com/firebase/FirebaseUI-Android/blob/master/database/README.md
¿Quién soy?
Tec. Computación e Informática y Freelance.
Se desempeña también como Software Developer
Lead en Wataweb y, CTO de Fullday.pe y Cooltura
App (en desarrollo). Durante los últimos 8 años, ha
participado en diferentes proyectos de desarrollo
de software en los sectores público y privado. Es
organizador de la comunidad GDG Open en la
ciudad Lima, comunidad que busca difundir el uso
de las tecnologías que Google provee.
Publica artículos sobre desarrollo de software en su
blog: http://medium.com/@devpicon y su repo en
github https://github.com/devpicon/
Gracias!
@devpicon
+ArmandoPicon
github.com/devpicon
medium.com/@devpicon

Más contenido relacionado

Similar a Integra tu Aplicación Android con Firebase

Hands-on Spring 3: The next generation
Hands-on Spring 3: The next generationHands-on Spring 3: The next generation
Hands-on Spring 3: The next generationSergi Almar i Graupera
 
Cómo crear plugins para Wordpress
Cómo crear plugins para WordpressCómo crear plugins para Wordpress
Cómo crear plugins para Wordpressralcocer
 
Taller desarrollando sitios web multiplataforma
Taller desarrollando sitios web multiplataformaTaller desarrollando sitios web multiplataforma
Taller desarrollando sitios web multiplataformaLuis Beltran
 
Login social con node.js
Login social con node.jsLogin social con node.js
Login social con node.jsCarlos Azaustre
 
Versión inicial presentación Android Studio y Gradle. .
Versión inicial presentación Android Studio y Gradle. . Versión inicial presentación Android Studio y Gradle. .
Versión inicial presentación Android Studio y Gradle. . Kamil Zabdyr
 
Desarrollo De Web Parts En Share Point2007
Desarrollo De Web Parts En Share Point2007Desarrollo De Web Parts En Share Point2007
Desarrollo De Web Parts En Share Point2007Luis Du Solier
 
Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6Gabriela Bosetti
 
Curso de Desarrollo Web de Platzi
Curso de Desarrollo Web de PlatziCurso de Desarrollo Web de Platzi
Curso de Desarrollo Web de PlatziCarlos Azaustre
 
Taller de Backbone.js en Betabeers Malaga 06/09/2012
Taller de Backbone.js en Betabeers Malaga 06/09/2012Taller de Backbone.js en Betabeers Malaga 06/09/2012
Taller de Backbone.js en Betabeers Malaga 06/09/2012Damian Serrano Thode
 
HTML 5 & WebGL (Spanish Version)
HTML 5 & WebGL (Spanish Version)HTML 5 & WebGL (Spanish Version)
HTML 5 & WebGL (Spanish Version)Iran Reyes Fleitas
 
Desarrollo Aplicaciones Zend Framework
Desarrollo Aplicaciones Zend FrameworkDesarrollo Aplicaciones Zend Framework
Desarrollo Aplicaciones Zend Frameworkricsoc
 
Zend Framework 2 y MongoDB
Zend Framework 2 y  MongoDBZend Framework 2 y  MongoDB
Zend Framework 2 y MongoDBEl Taller Web
 
Taller IA 2B - Clasificacion de imagenes con Custom Vision
Taller IA 2B - Clasificacion de imagenes con Custom VisionTaller IA 2B - Clasificacion de imagenes con Custom Vision
Taller IA 2B - Clasificacion de imagenes con Custom VisionLuis Beltran
 
Introducción a AngularJS
Introducción a AngularJS Introducción a AngularJS
Introducción a AngularJS Marcos Reynoso
 
Api De Google Calendar
Api De Google CalendarApi De Google Calendar
Api De Google Calendarjvelizster
 
LabAndroid: Taller "Mi Primera Aplicación Android"
LabAndroid: Taller "Mi Primera Aplicación Android"LabAndroid: Taller "Mi Primera Aplicación Android"
LabAndroid: Taller "Mi Primera Aplicación Android"Alberto Ruibal
 

Similar a Integra tu Aplicación Android con Firebase (20)

APIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptxAPIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptx
 
Hands-on Spring 3: The next generation
Hands-on Spring 3: The next generationHands-on Spring 3: The next generation
Hands-on Spring 3: The next generation
 
Cómo crear plugins para Wordpress
Cómo crear plugins para WordpressCómo crear plugins para Wordpress
Cómo crear plugins para Wordpress
 
Taller desarrollando sitios web multiplataforma
Taller desarrollando sitios web multiplataformaTaller desarrollando sitios web multiplataforma
Taller desarrollando sitios web multiplataforma
 
Login social con node.js
Login social con node.jsLogin social con node.js
Login social con node.js
 
Versión inicial presentación Android Studio y Gradle. .
Versión inicial presentación Android Studio y Gradle. . Versión inicial presentación Android Studio y Gradle. .
Versión inicial presentación Android Studio y Gradle. .
 
Desarrollo De Web Parts En Share Point2007
Desarrollo De Web Parts En Share Point2007Desarrollo De Web Parts En Share Point2007
Desarrollo De Web Parts En Share Point2007
 
Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6
 
Curso de Desarrollo Web de Platzi
Curso de Desarrollo Web de PlatziCurso de Desarrollo Web de Platzi
Curso de Desarrollo Web de Platzi
 
Taller de Backbone.js en Betabeers Malaga 06/09/2012
Taller de Backbone.js en Betabeers Malaga 06/09/2012Taller de Backbone.js en Betabeers Malaga 06/09/2012
Taller de Backbone.js en Betabeers Malaga 06/09/2012
 
HTML 5 & WebGL (Spanish Version)
HTML 5 & WebGL (Spanish Version)HTML 5 & WebGL (Spanish Version)
HTML 5 & WebGL (Spanish Version)
 
Rails intro
Rails introRails intro
Rails intro
 
Desarrollo Aplicaciones Zend Framework
Desarrollo Aplicaciones Zend FrameworkDesarrollo Aplicaciones Zend Framework
Desarrollo Aplicaciones Zend Framework
 
Zend Framework 2 y MongoDB
Zend Framework 2 y  MongoDBZend Framework 2 y  MongoDB
Zend Framework 2 y MongoDB
 
Firebase: Backend en la nube
Firebase: Backend en la nubeFirebase: Backend en la nube
Firebase: Backend en la nube
 
Taller IA 2B - Clasificacion de imagenes con Custom Vision
Taller IA 2B - Clasificacion de imagenes con Custom VisionTaller IA 2B - Clasificacion de imagenes con Custom Vision
Taller IA 2B - Clasificacion de imagenes con Custom Vision
 
Codeigniter101
Codeigniter101Codeigniter101
Codeigniter101
 
Introducción a AngularJS
Introducción a AngularJS Introducción a AngularJS
Introducción a AngularJS
 
Api De Google Calendar
Api De Google CalendarApi De Google Calendar
Api De Google Calendar
 
LabAndroid: Taller "Mi Primera Aplicación Android"
LabAndroid: Taller "Mi Primera Aplicación Android"LabAndroid: Taller "Mi Primera Aplicación Android"
LabAndroid: Taller "Mi Primera Aplicación Android"
 

Más de Armando Picón Z.

GDG Open - Herramientas para desarrolladores
GDG Open - Herramientas para desarrolladoresGDG Open - Herramientas para desarrolladores
GDG Open - Herramientas para desarrolladoresArmando Picón Z.
 
Introducción al desarrollo de aplicaciones para Android
Introducción al desarrollo de aplicaciones para AndroidIntroducción al desarrollo de aplicaciones para Android
Introducción al desarrollo de aplicaciones para AndroidArmando Picón Z.
 
Ágiles 2014 Medellín - En el Cielo y en el Infierno, aplicando el agilismo en...
Ágiles 2014 Medellín - En el Cielo y en el Infierno, aplicando el agilismo en...Ágiles 2014 Medellín - En el Cielo y en el Infierno, aplicando el agilismo en...
Ágiles 2014 Medellín - En el Cielo y en el Infierno, aplicando el agilismo en...Armando Picón Z.
 
GDG Open - Overview de la Google Cloud Platform
GDG Open - Overview de la Google Cloud PlatformGDG Open - Overview de la Google Cloud Platform
GDG Open - Overview de la Google Cloud PlatformArmando Picón Z.
 
Taller Android - FLISOL Lima Este 2014
Taller Android - FLISOL Lima Este 2014Taller Android - FLISOL Lima Este 2014
Taller Android - FLISOL Lima Este 2014Armando Picón Z.
 
Coding Dojo - Presentation Template
Coding Dojo - Presentation TemplateCoding Dojo - Presentation Template
Coding Dojo - Presentation TemplateArmando Picón Z.
 
AgilePerú - Coding Dojo Week
AgilePerú - Coding Dojo WeekAgilePerú - Coding Dojo Week
AgilePerú - Coding Dojo WeekArmando Picón Z.
 
Usabilidad de Practicas y Procesos por Diego Fontdevila-grupoesfera
Usabilidad de Practicas y Procesos por Diego Fontdevila-grupoesferaUsabilidad de Practicas y Procesos por Diego Fontdevila-grupoesfera
Usabilidad de Practicas y Procesos por Diego Fontdevila-grupoesferaArmando Picón Z.
 
Introducción a la agilidad el manifiesto v2.0
Introducción a la agilidad   el manifiesto v2.0Introducción a la agilidad   el manifiesto v2.0
Introducción a la agilidad el manifiesto v2.0Armando Picón Z.
 
Introducción a la agilidad - El Manifiesto
Introducción a la agilidad - El ManifiestoIntroducción a la agilidad - El Manifiesto
Introducción a la agilidad - El ManifiestoArmando Picón Z.
 
Introducción a la agilidad - El Manifiesto
Introducción a la agilidad - El ManifiestoIntroducción a la agilidad - El Manifiesto
Introducción a la agilidad - El ManifiestoArmando Picón Z.
 
Lima GTUG - Startup Android Workshop
Lima GTUG - Startup Android WorkshopLima GTUG - Startup Android Workshop
Lima GTUG - Startup Android WorkshopArmando Picón Z.
 
Android 00 - Instalando nuestro ambiente de desarrollo
Android 00 - Instalando nuestro ambiente de desarrolloAndroid 00 - Instalando nuestro ambiente de desarrollo
Android 00 - Instalando nuestro ambiente de desarrolloArmando Picón Z.
 
Distributed Scrum por Heitor Roriz
Distributed Scrum por Heitor RorizDistributed Scrum por Heitor Roriz
Distributed Scrum por Heitor RorizArmando Picón Z.
 
Como Enviar Sms Desde La Web De Movistar
Como Enviar Sms Desde La Web De MovistarComo Enviar Sms Desde La Web De Movistar
Como Enviar Sms Desde La Web De MovistarArmando Picón Z.
 

Más de Armando Picón Z. (19)

Android Espresso
Android EspressoAndroid Espresso
Android Espresso
 
GDG Open - Herramientas para desarrolladores
GDG Open - Herramientas para desarrolladoresGDG Open - Herramientas para desarrolladores
GDG Open - Herramientas para desarrolladores
 
Introducción al desarrollo de aplicaciones para Android
Introducción al desarrollo de aplicaciones para AndroidIntroducción al desarrollo de aplicaciones para Android
Introducción al desarrollo de aplicaciones para Android
 
Ágiles 2014 Medellín - En el Cielo y en el Infierno, aplicando el agilismo en...
Ágiles 2014 Medellín - En el Cielo y en el Infierno, aplicando el agilismo en...Ágiles 2014 Medellín - En el Cielo y en el Infierno, aplicando el agilismo en...
Ágiles 2014 Medellín - En el Cielo y en el Infierno, aplicando el agilismo en...
 
GDG Open - Overview de la Google Cloud Platform
GDG Open - Overview de la Google Cloud PlatformGDG Open - Overview de la Google Cloud Platform
GDG Open - Overview de la Google Cloud Platform
 
Taller Android - FLISOL Lima Este 2014
Taller Android - FLISOL Lima Este 2014Taller Android - FLISOL Lima Este 2014
Taller Android - FLISOL Lima Este 2014
 
Coding Dojo - Greed Kata
Coding Dojo - Greed KataCoding Dojo - Greed Kata
Coding Dojo - Greed Kata
 
Coding Dojo - Romans Kata
Coding Dojo - Romans KataCoding Dojo - Romans Kata
Coding Dojo - Romans Kata
 
Coding Dojo - Presentation Template
Coding Dojo - Presentation TemplateCoding Dojo - Presentation Template
Coding Dojo - Presentation Template
 
AgilePerú - Coding Dojo Week
AgilePerú - Coding Dojo WeekAgilePerú - Coding Dojo Week
AgilePerú - Coding Dojo Week
 
Usabilidad de Practicas y Procesos por Diego Fontdevila-grupoesfera
Usabilidad de Practicas y Procesos por Diego Fontdevila-grupoesferaUsabilidad de Practicas y Procesos por Diego Fontdevila-grupoesfera
Usabilidad de Practicas y Procesos por Diego Fontdevila-grupoesfera
 
Introducción a la agilidad el manifiesto v2.0
Introducción a la agilidad   el manifiesto v2.0Introducción a la agilidad   el manifiesto v2.0
Introducción a la agilidad el manifiesto v2.0
 
Introducción a la agilidad - El Manifiesto
Introducción a la agilidad - El ManifiestoIntroducción a la agilidad - El Manifiesto
Introducción a la agilidad - El Manifiesto
 
Introducción a la agilidad - El Manifiesto
Introducción a la agilidad - El ManifiestoIntroducción a la agilidad - El Manifiesto
Introducción a la agilidad - El Manifiesto
 
Lima GTUG - Startup Android Workshop
Lima GTUG - Startup Android WorkshopLima GTUG - Startup Android Workshop
Lima GTUG - Startup Android Workshop
 
Android 00 - Instalando nuestro ambiente de desarrollo
Android 00 - Instalando nuestro ambiente de desarrolloAndroid 00 - Instalando nuestro ambiente de desarrollo
Android 00 - Instalando nuestro ambiente de desarrollo
 
Integracion continua
Integracion continuaIntegracion continua
Integracion continua
 
Distributed Scrum por Heitor Roriz
Distributed Scrum por Heitor RorizDistributed Scrum por Heitor Roriz
Distributed Scrum por Heitor Roriz
 
Como Enviar Sms Desde La Web De Movistar
Como Enviar Sms Desde La Web De MovistarComo Enviar Sms Desde La Web De Movistar
Como Enviar Sms Desde La Web De Movistar
 

Último

pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxMiguelAtencio10
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfvladimiroflores1
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfAnnimoUno1
 

Último (11)

pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 

Integra tu Aplicación Android con Firebase

  • 1. Integra tu aplicación Android con Firebase +Armando Picón @devpicon
  • 2.
  • 3.
  • 7. Temario •Firebase Authentication •FirebaseUI-Auth •Firebase Realtime Database •FirebaseUI-Database •Firebase Storage
  • 8. La consola de Firebase https://console.google.firebase.com
  • 9. Firebase Authentication •Firebase Authentication encapsula el proceso de autenticación vía providers. •No se require código a nivel de servidor. •Soporta autenticación por correo electrónico, Google, Facebook, Twitter y Github.
  • 12. Firebase Authentication compile 'com.google.firebase:firebase-auth:9.2.0' compile 'com.google.android.gms:play-services-auth:9.2.0' GoogleSignInOptions gso = new GoogleSignInOptions.Builder (GoogleSignInOptions.DEFAULT_SIGN_IN) .requestIdToken(getString(R.string.default_web_client_id)) .requestEmail().build();
  • 13. FirebaseUI - Auth •Permite generar de una manera sencilla la pantalla de inicio de session. •Permite implementar el inicio de sesión por correo electrónico, Google y/o Facebook. •Permite la personalización básica para el inicio de session.
  • 14. FirebaseUI - Auth dependencies { // ... compile 'com.firebaseui:firebase-ui-auth:0.4.1' }
  • 15. FirebaseUI - Auth // generamos la pantalla de logueo startActivityForResult( AuthUI.getInstance() .createSignInIntentBuilder() .setLogo(R.drawable.milibreta_logo) .setProviders( AuthUI.GOOGLE_PROVIDER, AuthUI.EMAIL_PROVIDER) .build(), RC_SIGN_IN);
  • 18. FirebaseUI - Auth private void signOut() { AuthUI.getInstance().signOut(MainActivity.this).addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { startActivity(new Intent(MainActivity.this, LoginActivity.class)); finish(); } }); }
  • 19. Firebase Realtime Database •Almacena data en una base de datos NoSQL en format jSON •Provee sincronización en tiempo real para los dispositivos conectados. •Disponibilidad offline
  • 20. Firebase Realtime Database compile 'com.google.firebase:firebase-database:9.2.0' FirebaseDatabase database = FirebaseDatabase.getInstance(); DatabaseReference myRef = database.getReference("message"); myRef.setValue("Hello, World!");
  • 21. Firebase Realtime Database private static String CHILD_NOTES = "notes"; public DatabaseReference getChildNoteReference() { if (databaseReference == null) { databaseReference = FirebaseDatabase.getInstance().getReference(); } return databaseReference.child(CHILD_NOTES); } //... notesDatabaseReference.push().setValue(note);
  • 23. FirebaseUI - Database •Simplifica la obtención de datos desde la base de datos. •Simplifica la implementación del adapter por medio de la clase FirebaseRecyclerAdapter.
  • 24. FirebaseUI - Database dependencies { compile 'com.firebaseui:firebase-ui-database:0.4.2' }
  • 25. FirebaseUI - Database private void setFirebaseRecyclerView() { // Implementacion de FirebaseUI-Database RecyclerView noteRecyclerView = (RecyclerView) findViewById(R.id. note_recycler_view); noteRecyclerView.setHasFixedSize(true); noteRecyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this)); noteFirebaseRecyclerAdapter = new NoteFirebaseRecyclerAdapter (notesDatabaseReference); noteRecyclerView.setAdapter(noteFirebaseRecyclerAdapter); }
  • 26. FirebaseUI - Database public class NoteFirebaseRecyclerAdapter extends FirebaseRecyclerAdapter<Note, NoteViewHolder> { DatabaseReference databaseReference; public NoteFirebaseRecyclerAdapter(DatabaseReference ref){ super(Note.class, R.layout.item_note, NoteViewHolder.class, ref); databaseReference = ref; } @Override protected void populateViewHolder(NoteViewHolder viewHolder, Note model, int position) { viewHolder.setText(model.getText()); viewHolder.setName(model.getName()); viewHolder.setTimestamp(model.getTimestamp()); viewHolder.setAvatar(model.getUserImageUrl()); viewHolder.setPicture(model.getPictureUrl()); } }
  • 28. Firebase Storage •Permite almacenar imagenes, audio y video. •Provee una “cubeta” dentro de Google Cloud Storage. •Permite la subida de archivos en un modo seguro. •Permite la descarga de archive en una forma robusta.
  • 30. Firebase Storage compile 'com.google.firebase:firebase-storage:9.2.0' compile 'com.google.firebase:firebase-auth:9.2.0' FirebaseStorage storage = FirebaseStorage.getInstance();
  • 31. Firebase Storage public StorageReference getPhotoStorageReference() { if (storageReference == null) { storageReference = FirebaseStorage.getInstance().getReference(); } return storageReference.child(STORAGE_PHOTOS); }
  • 32. Firebase Storage private void uploadFromUri(Uri fileUri) { final StorageReference photoReference = photoStorageReference.child(fileUri. getLastPathSegment()); showProgressDialog(); photoReference.putFile(fileUri).addOnSuccessListener(getActivity(), new OnSuccessListener<UploadTask.TaskSnapshot>() { @Override public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { // Get the public download URL downloadUrl = taskSnapshot.getMetadata().getDownloadUrl(); savePictureUrlAsANote(downloadUrl); hideProgressDialog(); dismiss(); } }); }
  • 33. ¿Dónde está el código? https://github.com/DevPicon/mi-libreta-firebase
  • 34. Referencias • Add Firebase to your Android Project https://firebase.google.com/docs/android/setup • Set up Firebase Realtime Database for Android https://firebase.google.com/docs/database/android/start/ • Firebase Authentication https://firebase.google.com/docs/auth/ •Firebase UI https://github.com/firebase/FirebaseUI-Android/ •Firebase UI – Auth https://github.com/firebase/FirebaseUI-Android/blob/master/auth/README.md •Firebase UI - Database https://github.com/firebase/FirebaseUI-Android/blob/master/database/README.md
  • 35. ¿Quién soy? Tec. Computación e Informática y Freelance. Se desempeña también como Software Developer Lead en Wataweb y, CTO de Fullday.pe y Cooltura App (en desarrollo). Durante los últimos 8 años, ha participado en diferentes proyectos de desarrollo de software en los sectores público y privado. Es organizador de la comunidad GDG Open en la ciudad Lima, comunidad que busca difundir el uso de las tecnologías que Google provee. Publica artículos sobre desarrollo de software en su blog: http://medium.com/@devpicon y su repo en github https://github.com/devpicon/