Integra tu Aplicación Android con Firebase

Post on 16-Apr-2017

122 views 1 download

Transcript of Integra tu Aplicación Android con Firebase

Integra tu aplicación Android con Firebase

+Armando Picón@devpicon

Firebase Realtime Database

Firebase Authentication

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