Javan Cipta Solusi
Published in

Javan Cipta Solusi

Firebase Realtime Database dengan Android

Source: https://www.youtube.com/watch?v=peQ9ATXwPwg

Firebase adalah Cloud Service Provider dan Backend as a Service yang dimiliki oleh Google. Firebase merupakan solusi yang ditawarkan oleh Google untuk mempermudah dalam pengembangan aplikasi mobile maupun web. Kita tidak perlu membangun fitur-fitur yang dibuat pada backend dan infrastruktur dari awal sehingga kita dapat fokus untuk mengembangkan aplikasi yang berkualitas tinggi tanpa perlu mengeluarkan effort yang besar.

Firebase memiliki banyak SDK yang memungkinkan untuk mengintegrasi-kan layanan ini dengan Android, iOS, Javascript, C++ hingga Unity.

Fitur-fitur di Firebase

Realtime Database

Salah satu fitur yang menarik di Firebase adalah Realtime Database. Firebase Realtime Database adalah sebuah Cloud-Hosted database yang dapat menyimpan dan melakukan sinkronisasi data secara realtime untuk setiap client yang terhubung. Setiap kali pengguna memperbarui data, itu akan menyimpannya pada cloud dan sekaligus memberitahu ke semua client yang terhubung dan secara otomatis menerima pembaruan dengan data terbaru.

Firebase Realtime Database juga dilengkapi dengan fitur yang mendukung offline mode. Saat melakukan perubahan data pada saat offline mode atau tidak terdapat koneksi ke server, perubahan tersebut disimpan di lokal terlebih dahulu. Ketika device kembali online maka Firebase akan melakukan sinkronisasi terhadap perubahan data lokal dengan pembaruan jarak jauh yang terjadi saat client offline, dengan menggabungkan perbedaan apapun secara otomatis.

Struktur Data

Realtime Database merupakan sebuah NoSQL database sehingga memiliki fungsi dan optimasi yang berbeda dibanding dengan relational database. Pada Realtime Database, data disimpan sebagai JSON objects, sehingga struktur data yang disimpan pada database ini berupa JSON tree.

Tidak seperti SQL database yang terdapat table-table atau records. Ketika data ditambahkan ke JSON tree, itu akan menjadi sebuah node di dalam struktur JSON yang ada dengan sebuah associated key. Associated key dapat berupa user id, semantic names, atau dapat dibuat secara otomatis dengan push().

Contoh sederhana dari struktur JSON tree.

{
"notes": {
"xxxxxx": {
"title": "What is Lorem Ipsum?",
"content": "Lorem Ipsum is simply dummy text of the print..."
},
"yyyyyy": {
"title": "Why do we use it?",
"content": "It is a long established fact that a reader ..."
},
"zzzzzzz": { ... }
}
}

Pada tulisan ini kita akan membuat aplikasi sederhana bernama Noteq dengan menggunakan Firebase Realtime Database untuk penyimpanan datanya. Mari kita memulainya.

Setup Firebase Realtime Database untuk Android

Buat baru Proyek Android seperti biasa, setelah itu buat baru Proyek Firebase untuk ditambahkan ke Proyek Android. Terdapat dua cara untuk menambahkan Firebase ke Proyek Android, yaitu dengan menggunakan Firebase Assistant atau menambahkannya secara manual. Untuk langkah-langkah menambahkan Firebase ke Proyek Android silahkan membacanya pada tulisan ini

Install Dependency Realtime Database

Setelah selesai, tambahkan dependency untuk Firebase Realtime Database ke build.gradle yang terdapat pada folder /app.

compile 'com.google.firebase:firebase-database:10.2.0'

maka isi dari build.gradle akan seperti ini:

apply plugin: 'com.android.application'android {
// ...
}
dependencies {
// ...
compile 'com.google.firebase:firebase-database:10.2.0'
}
apply plugin: 'com.google.gms.google-services'

Lalu klik Sync Now pada notif di Android Studio untuk menginstallnya ke Proyek Android.

Konfigurasi Realtime Database Rules

Firebase Realtime Database menyediakan sebuah declarative rules language yang dapat digunakan salah satunya untuk akses read dan write ke database. Secara default, read dan write ke database dibatasi hanya pengguna yang telah ter-autentikasi yang dapat read atau write data. Pada tulisan ini kita akan mengkonfigurasikan rulesnya untuk dapat diakses oleh publik.

Masuk ke Proyek Firebase yang telah dibuat sebelumnya pada Firebase Console, klik Database lalu pilih tab Aturan. Masukkan aturan dibawah ini pada form yang ada.

{
"rules": {
".read": true,
".write": true
}
}

Setelah menyimpannya akan muncul alert, untuk sekarang abaikan saja alert tersebut.

Prolog

Sedikit penjelasan dasar dalam menggunakan Realtime Database pada Android. Untuk membaca dan menulis data, kita membutuhkan sebuah instance dari DatabaseReference.

private DatabaseReference mDatabase;
// ...
mDatabase = FirebaseDatabase.getInstance().getReference();

Untuk menulis data, kita dapat menggunakan setValue() untuk menyimpan maupun me-replace data yang ada pada spesifik reference. Tipe data yang dapat di-passing pada method tersebut yaitu:

  1. JSON types seperti String, Long, Double, Boolean, Map, dan List.
  2. Custom Java Object.

Untuk membaca maupun menerima perubahan data, kita dapat menambahkan ValueEventListener ke reference yang telah dibuat. Pada ValueEventListener terdapat method onDataChange() yaitu sebuah event callback yang digunakan untuk membaca dan menerima perubahan data. Event Listener inilah yang merupakan core dari konsep realtime pada Firebase Realtime Database.

Implementasi Realtime Database

Setelah kita menyelesaikan setup Firebase Realtime Database untuk Android dan mengetahui dasar-dasar menggunakannya, saatnya kita mulai mencoba untuk mengimplementasikannya di Android.

Pada tulisan ini dari sisi coding kita hanya akan membahas cara implementasi Realtime Database pada Android, untuk lebih lengkap kamu bisa melihatnya pada source code dibawah ini.

Seperti penjelasan sebelumnya, kita membutuhkan sebuah instance dari DatabaseReference:

private DatabaseReference mNoteRef;
// ...
mNoteRef = FirebaseDatabase.getInstance().getReference("notes");

Custom Java Object

Buat Class Note untuk digunakan sebagai custom Java Object, object tersebut akan disimpan ke reference pada Realtime Database. Class ini juga digunakan sebagai data layer untuk ditampilkan ke antarmuka.

Custom Java Object

Menambahkan Data

Untuk menambahkan data ke database, masukkan object dari Class Note yang telah dibuat sebelumnya sebagai parameter ke method setValue().

Code snippet inserting data

Kita dapat men-generate key menggunakan push().getKey() dari reference instance. Key tersebut digunakan sebagai associated key dengan value object dari Class Note untuk node baru yang dibuat.

Menampilkan List Data

Untuk menampilkan list data kita gunakan ValueEventListener lalu tambahkan event listener tersebut ke reference dengan menggunakan method addValueEventListener().

Code snippet listening for data changes

Pada event callback onDataChange(), kita dapat mengakses informasi dengan menggunakan DataSnapshot salah satunya untuk mendapatkan list data (child) pada method getChildren(). Lalu list data tersebut kita passing ke notesView.refreshNoteList() untuk ditampilkan pada List View yang ada di antarmuka aplikasi.

Untuk mengetestnya, kita akan melakukan perubahan data secara langsung dari Firebase Console.

Firebase Realtime Database Demo

Pada gambar diatas terlihat kemampuan realtime dari Firebase Realtime Database. Pembaruan data dari database otomatis akan diterima oleh client yang terhubung untuk ditampilkan ke antarmuka.

Kesimpulan

Realtime Database merupakan salah satu fitur canggih dari Firebase. Dengan SDK yang dimilikinya, kita dapat dengan mudah membangun aplikasi realtime hanya dengan sedikit code tanpa harus membuat web socket dan lain-lain dari awal. Cara penggunaannya juga tidak sulit, struktur data yang dimiliki mirip dengan database NoSQL. Pada SDK-nya terdapat Event Listener yang berguna untuk menerima perubahan data dari database, hal ini yang membuat aplikasi kita menjadi responsive terhadap perubahan data.

Pada tulisan ini kita tidak membahas mengenai kemampuan Realtime Database untuk offline mode, kamu bisa mempelajarinya dengan membaca dokumentasinya disini.

Dengan Firebase Realtime Database kita dapat menggunakannya untuk membangun aplikasi realtime seperti aplikasi chat hingga Realtime Dashboard.

Referensi

  1. Introduction to Firebase Realtime Database
  2. Set up Firebase Realtime Database for Android
  3. Structure Your Database
  4. Read and Write Data on Android
  5. Work with Lists of Data on Android

--

--

Business Process Optimization Partner. Contact us to help you optimize your business using technology.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store