Integra tu Aplicación Android con Firebase
Post on 16-Apr-2017
111 Views
Preview:
Transcript
Integra tu aplicación Android con Firebase
+Armando Picón@devpicon
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 logueostartActivityForResult( 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 - Databasepublic 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 Storagepublic StorageReference getPhotoStorageReference() { if (storageReference == null) { storageReference = FirebaseStorage.getInstance().getReference(); } return storageReference.child(STORAGE_PHOTOS);}
Firebase Storageprivate 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 Projecthttps://firebase.google.com/docs/android/setup
• Set up Firebase Realtime Database for Androidhttps://firebase.google.com/docs/database/android/start/
• Firebase Authentication https://firebase.google.com/docs/auth/
• Firebase UIhttps://github.com/firebase/FirebaseUI-Android/
• Firebase UI – Authhttps://github.com/firebase/FirebaseUI-Android/blob/master/auth/README.md
• Firebase UI - Databasehttps://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
top related