Kotlin: Firebase Realtime Database – Veri Okumak ve Yazmak

0 43

Firebase realtime database; anlık olarak uygulamanız ile veri alış-verişi yapabilen bir sistemdir. Bir bilgiyi server tarafından güncellediğiniz zaman aynı saniye içerisinde uygulama içerisinde de bu bilgi güncellenir. Google tarafından 1GB bellek ve 10GB aylık indirme ücretsiz olarak sunulmaktadır. Ücretler ve kullanım sınırları için buraya tıklayarak bilgi alabilirsiniz.

Firebase realtime database
(Firebase realtime database)

1) Uygulamanıza Firebase Kütüphanesini Ekleyin

İlk olarak Firebase konsolu üzerinden projemizi oluşturmamız gerekmekte. Bunu da alttaki adımları takip ederk kolayca yapabilirsiniz.

  1. Firebase Konsol sayfasında gidin.
  2. Ekrandaki Uygulama Ekle (Add App) + ikonuna basın.
  3. Sırayla istenilen bilgilari girerek tamamlayın.
  4. google-services.json” adlı size sunduğu dosyayı indirin ve bu dosyayı uygulamanız dosyalarındaki “app” klasörü içerisine kopyalayınız.

Bu adımı tamamladıktan sonra uygulamamıza Firabase kütüphanesini eklememiz gerekmekte. Bunun için “build.gradle” dosyasını açarak aşşağıdaki değişiklikleri yapıyoruz.

buildscript {

  repositories {
    // google() yok ise ekleyiniz.
    google()  // Google's Maven repository
  }

  dependencies {
    // ...

    // Aşşağıdaki satırı ekleyiniz.
    classpath 'com.google.gms:google-services:4.3.5'  // Google Services plugin
  }
}

allprojects {
  // ...

  repositories {
    // google() yok ise ekleyiniz.
    google()  // Google's Maven repository
    // ...
  }
}

Daha sonra diğer “build.gradle” dosayamızı (module olan) açarak yine aşşağıdaki değişiklikleri yapıyoruz.

apply plugin: 'com.android.application'
// En üste ekleyin.
apply plugin: 'com.google.gms.google-services'  // Google Services plugin

android {
  // ...
}
dependencies {
  // ...

  // Alttaki satırı ekleyiniz.
  implementation platform('com.google.firebase:firebase-bom:26.8.0')

  // Realtime database için alttaki satırı ekleyiniz.
  implementation 'com.google.firebase:firebase-database-ktx'


  // Firebase analytics için ekleyin :
  implementation 'com.google.firebase:firebase-analytics-ktx'


  // Aşşağıdakiler firebase login ve Firestore için, kullancak iseniz ekleyin.
  implementation 'com.google.firebase:firebase-auth-ktx'
  implementation 'com.google.firebase:firebase-firestore-ktx'
}

2) Firebase projenizde database’inizi oluşturun ve güvenliği sağlayın.

Firebase konsulunda “Realtime Database” bölümüne gelin ve güvenlik kuralını (security rules) başlangıç modu (starting mode) olarak seçerek databesinizi oluşturun.

Bu noktada en çok dikkat etmeniz gereken şey databaseinizin kimler tarafından okunabileceği ve kimler tarafından düzenlenebileceği. Mesela kullanıcı bilgilerini kayıt ediyorsanız, her kullanıcı kendi bilgilerini düzenleyebiliyor olamalıdır. Bunu da Firebase Security Rules yani Güvenlik Kuralları ile sağlayabilirsiniz. Bu güvenlik kuralları hakkında daha detaylı bilgiyi Google Dökümanlarından, buraya tıklayarak edinebilirsiniz.

3) Realtime Database ile veri yazmak :

val database = Firebase.database // Database'imizi tanımlıyoruz.
val myRef = database.getReference("message") // Burada database'imiz içerisindeki "message" bölümünü seçiyoruz.
val myRef2 = database.getReference("message").child("date") // Başka bir örnek olarak; databaseimiz içerisindeki "message" bölümünün içerisindeki "date" bölümünü seçtik.

myRef.setValue("Hello, World!") // Yukarıda seçtiğimiz referansa veri yazıyoruz.
        .addOnSuccessListener {
            // Veri yazmak başarılı olunca bu fonksyion çalışır.
            // ...
        }
        .addOnFailureListener {
            // Veri yazmak başarısız olunca bu fonksyion çalışır.
            // ...
        }

Bu örneğimiz ile Kotlin ve firebase kullanarak nasıl veri yazabileceğimizi görmüş olduk. Şimdi nasıl verileri gerçek zamanlı olarak (realtime) okuyabileceğimizi görelim.

4) Realtime Database ile veri okumak :

val myRef = database.getReference("message")

val postListener = object : ValueEventListener { // Yeni bir "listener" tanımladık.
    override fun onDataChange(dataSnapshot: DataSnapshot) {
        // onDataChange: Her veri değiştiğinde ve okunduğunda gerçek zamanlı olarak 

        // bu kısım çalıştırılır. 

        val data = dataSnapshot.getValue() // message verisini çektik.
        val tarih = data?.date // "date" yeni tarih bilgisini çektik.
 
        // ...
    }

    override fun onCancelled(databaseError: DatabaseError) {
        // Getting Post failed, log a message
        Log.w("firebase_hata:", "loadPost:onCancelled", databaseError.toException())
    }
}

myRef.addValueEventListener(postListener) // Referansımıza "listener" tanımladık.

5) İnternet bağlantısı kesilmesi durumu :

Database işlemleri sırasında internet bağlantınız kesilirse. Uygulamanız işlevini yerine getirmeye devam edecktir. Firabase offline olarak çalışacak şekilde dizayn edilmiş olup, veriyi internet yok iken kayıt edip internet bağlantısı geldiğinde otomatik olarak internete kayıt edecektir. Bu özelliği açmak ve senkronizasyonu doğru yapmak için şu dökümantasyonu inceleyebilirsiniz: Enabling Offline Capabilities on Android (tıklayın).

Daha fazla bu tarz Kotlin nasıl yapılır makalesi görmek istiyorsanız, bize yazın ! Sağlıklı günler dileriz. 🙂

Doğrudan cihazınızda gerçek zamanlı güncellemeleri alın, şimdi abone olun.

Cevap bırakın

E-posta hesabınız yayımlanmayacak.

Bu web sitesi deneyiminizi geliştirmek için çerezleri kullanır. Bununla iyi olduğunuzu varsayacağız, ancak isterseniz vazgeçebilirsiniz. Kabul et Mesajları Oku