Thursday, December 8, 2016

Implementasi Firebase Storage dan Firebase Realtime Database pada Platform Android

Setelah sebelumnya blog ini membahas Firebase Auth pada platform Android, kali ini Nostra akan membahas tentang fitur-fitur lain milik Firebase, yaitu Firebase Real-time Database dan Firebase Storage. Sama seperti Firebase Auth, untuk mengimplementasikan Firebase Real-time Database dan Firebase Storage, pertama-tama kita harus melakukan beberapa konfigurasi terlebih dahulu, seperti konfigurasi google-services.json melalui Firebase Console dan build.gradle melalui android studio, seperti pada gambar di bawah.



Mengapa Nostra menggabungkan kedua fitur tersebut dalam satu postingan blog? Karena dua hal tersebut memiliki sejumlah kemiripan, sehingga "Sekali mendayung, dua tiga pulau terlampaui". Pertama-tama kami akan bahas apa sih sebenarnya Firebase Storage itu? dan apa sih Firebase Real-time Database itu?

Firebase Real-time Database
Firebase Real-time Database merupakan sebuah fitur yang merupakan andalan Firebase ketika awal ia dikenalkan kepada publik, tapi semua berubah ketika Firebase diakuisisi oleh Google. Meskipun telah di akuisisi oleh Google, fitur real-time database ini tetap menjadi salah satu fitur kuat pada Firebase, dimana perubahan pada database bisa langsung didapatkan oleh seluruh perangkat yang terhubung pada database tersebut. Ohiya sebelum membahas lebih dalam lagi, real-time database ini merupakan sebuah database dengan paradigma NoSQL, dimana data disimpan dalam format JSON.

Jadi bagaimana implementasi Firebase Real-time Database ini dilakukan? Pada dasarnya konsep dari Firebase adalah pemrograman secara reaktif, dimana perangkat akan terdapat listener untuk setiap node dari database, sehingga setiap ada perubahan pada node tersebut maka perangkat akan langsung mendapatkan perubahan tersebut.

Lalu bagaimana "mendengarkan" perubahan-perubahan tersebut? Secara umum Firebase telah menyediakan dua metode untuk "mendengarkan", yaitu ValueEventListener dan ChildEventListener yang dapat kita implementasi sesuai dengan kebutuhan, baik untuk Web, iOS, Android, bahkan Server.

Secara sederhana, implementasi Firebase Real-time Storage dapat dilakukan seperti pada gambar di bawah, di mana pada onStart dilakukan inisiasi listener pada node yang akan "didengarkan".


Dengan menggunakan kode di atas, maka aplikasi kita akan selalu "mendengarkan" perubahan yang terjadi pada node yang dituju oleh mPostReference (berupa DatabaseReference). Pada method onDataChange kita dapat mendefinisikan tindakan-tindakan apa saja yang akan dilakukan ketika data pada node tersebut mengalami perubahan. Selain memasang listener pada suatu node di Firebase Real-time Database, kita juga dapat melepas listener tersebut dengan cara seperti pada gambar berikut.


Firebase Storage
Firebase Storage adalah fitur pada Firebase menyimpan file dan user-generated content di cloud dan menggunakan teknologi yang sama dengan Google Cloud Storage. Selain menggunakan teknologi yang sama dengan Google Cloud Storage, Firebase Storage juga terintegrasi dengan Google Cloud Platform

Bagaimana cara menggunakan Firebase Storage ini? Sama seperti Firebase Real-time Database, Firebase Storage juga menggunakan mekanisme reference yang berupa StorageReference, di mana pada contoh ini reference tersebut diberi nama mStorageRef. Pada reference tersebut, kita dapat mengunggah, mengunduh, maupun menghapus file di lokasi tersebut.

Untuk mengunggah ke dalam Firebase Storage dapat dilakukan seperti contoh pada gambar berikut.


Sedangkan untuk mengunduh file dari Firebase Storage dapat dilakukan seperti pada gambar berikut.




Well, secara sederhana kita sudah bisa mengimplementasikan Firebase Storage dan Firebase Real-time Database pada aplikasi Android yang kita kembangkan. So, apa saja kesamaan antara Firebase Storage dan Firebase Real-time Database yang Nostra maksudkan? Seperti yang telah disinggung pada pembahasan Firebase Storage, kesamaan pertama dari kedua fitur ini adalah mereka sama-sama menggunakan konsep reference untuk menunjukkan path dari node (pada database) ataupun folder (pada storage).

Terus kesamaan selanjutnya apa? 
Kesamaan kedua adalah mereka mengimplementasikan mekanisme keamanan yang sama, yaitu Firebase Security Rules. Firebase Security Rules itu sendiri merupakan mekanisme khusus pada Firebase, dimana developers dapat mendefinisikan berbagai aturan pada Firebase Real-time Database dan Firebase Storage. Secara sederhana, Firebase Security Rules dapat kita implementasikan untuk mengamankan path (seperti membatasi akses berdasarkan user id), hingga melakukan validasi terhadap data/file yang dilemparkan ke Firebase. Secara konsep, Firebase Real-time Database dan Firebase Storage memiliki konsep Firebase Security Rules yang sama, namun kedua hal tersebut memiliki perbedaan khususnya pada segi syntaxes.

Bagaimana melakukan konfigurasi Firebase Security Rules tersebut?
Konfigurasi rules dapat dilakukan melalui Firebase Console, dimana kita memasuki halaman masing-masing fitur pada console dan kemudian memilih rules untuk kemudian melakukan berbagai konfigurasi yang diperlukan.

Demikian isi tulisan kali ini, semoga dapat membantu memahami konsep dan implementasi sederhana dari Firebase Storage dan Firebase Real-time Database, serta menambah wawasan tentang Firebase secara umum.

See you around.


Sumber referensi:
1. http://stackoverflow.com/questions/30564735/android-firebase-simply-get-one-child-objects-data
2. https://github.com/firebase/quickstart-android

No comments:

Post a Comment