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

Introducción a Firebase

Introducción a Firebase

More Decks by Cristian Fabian Gómez Rojas

Other Decks in Technology

Transcript

  1. “ Firebase es una plataforma para el desarrollo de aplicaciones

    web y aplicaciones móviles desarrollada por James Tamplin y Andrew Lee en 2011 y adquirida por Google en 2014.​ 5
  2. Tu experiencia en cada plataforma Firebase permite llevar una experiencia

    transversal a cada plataforma iOs, Android y la web. 6
  3. ▹ Cloud Firestore ▹ ML Kit ▹ Cloud Functions ▹

    Authentications ▹ Hosting ▹ Cloud Storage ▹ Realtime DB ▹ Crashlytics ▹ Testlab ▹ etc... Productos 7
  4. ▹ Cloud Firestore ▹ ML Kit ▹ Cloud Functions ▹

    Authentications ▹ Hosting ▹ Cloud Storage ▹ Realtime DB ▹ Crashlytics ▹ Testlab ▹ etc... EL producto insignia 8
  5. Comparación Realtime DB ▹ Json ▹ Offline (Android, iOs) ▹

    Consultas básicas ▹ En produccion ▹ Escalamiento fragmentado Cloud firestore ▹ Documentos ▹ Offline (Android, iOs, web) ▹ Consultas avanzadas ▹ En Beta ▹ Escalamiento automático 9
  6. 10

  7. Acciones/Data ▹ Agregar ▹ Leer ▹ Borrar ▹ Actualizar ▹

    Sincronizar ▹ Colecciones ▹ Documento ▹ Snapshots ▹ Documents ▹ Changes 12
  8. 13 Leer/Sincronizar //leer db.document("Some Element").get().addOnCompleteListener { task -> } //sincronizar

    db.document("Some Element").addSnapshotListener{ snapshot, exception -> }
  9. 18 Datos data class Note(val id: String, val content: String)

    { fun asMap(): Map<String, String> = mapOf( Pair("id", id), Pair("content", content) ) }
  10. 19 Adapter class Adapter : RecyclerView.Adapter<Holder>() { private val notes

    = ArrayList<Note>() override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = Holder.create(LayoutInflater.from(parent.context.inflate(R.layout.note_item, parent, false)) override fun getItemCount(): Int = notes.size override fun onBindViewHolder(holder: Holder, position: Int) { holder.bind(notes[position]) } fun sync(note: Note) { notes.add(note) notifyItemInserted(notes.size - 1) } }
  11. 20 Holder class Holder(itemView: View?) : RecyclerView.ViewHolder(itemView) { companion object

    { fun create(view: View) = Holder(view) } fun bind(note: Note) { itemView.note_name.text = note.content } }
  12. 21 Sincronizar notas class MainActivity : AppCompatActivity() { override fun

    onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) ... db.collection("notes") .orderBy("id", Query.Direction.ASCENDING) .addSnapshotListener { snapshot, exception -> snapshot?.run { documentChanges!! } .run { this!! } .filter { it.type == DocumentChange.Type.ADDED } .map { it.document.toNote() } .forEach { adapter.sync(it) } } } }