Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Integra tu Aplicación Android con Firebase v2

Integra tu Aplicación Android con Firebase v2

Nueva versión de mi presentación "Integra tu Aplicación Android con Firebase", incluye videos, código y referencia a la demo en github.

Armando Picón

July 31, 2016
Tweet

More Decks by Armando Picón

Other Decks in Programming

Transcript

  1. 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.
  2. 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();
  3. 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.
  4. 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);
  5. 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(); } }); }
  6. 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
  7. 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);
  8. 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.
  9. 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); }
  10. 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()); } }
  11. 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.
  12. Firebase Storage public StorageReference getPhotoStorageReference() { if (storageReference == null)

    { storageReference = FirebaseStorage.getInstance().getReference(); } return storageReference.child(STORAGE_PHOTOS); }
  13. 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(); } }); }
  14. 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
  15. ¿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/