Eğer Firebase kullanıyorsanız ve birden fazla ekrandan oluşan bir popüler uygulamaya sahipseniz başlıktaki gibi yüksek veri indirme den kaynaklanan ücretsiz planın kullanım limitinin aşılması gibi bir uyarı ile karşılaşmışsınızdır.10GB lık ücretsiz planı nasıl aştığınızı benim gibi bir aralar düşünüyorsanız gelin Firebase deki hatanın kaynağını birlikte bulalım ve geçici çözüme kavuşturalım.

Firebase bilindiği gibi ücretsiz planın 10GB aylık veri indirmesi sunan App Inventor 2 kullanıcıları için önemli bir servis.Gerek yüksek olan ücretsiz kullanım planları gerek sağladı özellikler ile çoğu uygulama için yeterli bir çözüm sunmakta.

Kağıt üzerinde mükemmel gözüken bu limitler gerçeğe dökülüp test edildiğinde belli sıkıntılar çıkarmakta.Eğer birden fazla ekran kullanıyosanız ve kullandığınız ekranlarda Firebase eklediyseniz aman diyeyim dikkat edin! Eğer aşağıdaki çözümü uygulamazsanız ileride sıkıntılar ile boğuşucaksınız.

Neyse,uzatmadan başlıyalım sorunun kaynağına.

Firebase ekranlar arasında geçiş yaptığında sizden habersiz iki adet veri alma işlemi yapmakta.Bu işlemler ise haberiniz olmada indirme kotanızı doldurmakta.Bu iki indirme işleminden ilki Firebase adresinize ne girdiyseniz oradaki tüm bilgileri almak ikincisi ise bu adres/projectbucket olarak içerisindeki tüm bilgileri çekmek olacak.

Yani eğer direkt olarak veritabanı adresinizi firebase url si olarak kullandıysanız,firebase tüm veri tabanını indirmekte ve url/projectbucket olarak ikinci bir alma işlemi yapmakta.

Görüldüğü gibi günlük 420MB lık bir kullanım var.

Eğer veritabanınızın boyutu yaklaşık 1MB ise her ekran geçisinde bu veri indirilmekte.Böylece 10GB lık bitmesini beklemediğiniz kota hemen dolmakta.

Peki ben bunu nasıl anladım?
Hiç kolay olmadı diyebilirim,sağolsun Firebase veritabanında gerçekleşen işlemleri anlık izlememizi sağlayan Database:Profile şeklinde çağrılan bir komuta sahip böylece kod arayüzünden veritabanımızı takip edebiliyoruz.

┌────────────┬─────────┬───────┬───────────┐
│ Path │ Total │ Count │ Average │
├────────────┼─────────┼───────┼───────────┤
│ / │ 2.94 MB │ 5 │ 587.33 kB │
├────────────┼─────────┼───────┼───────────┤
│ /Firebases │ 0 B │ 5 │ 0 B │
└────────────┴─────────┴───────┴───────────┘

Uploaded Bytes

┌──────┬───────┬───────┬─────────┐
│ Path │ Total │ Count │ Average │
└──────┴───────┴───────┴─────────┘

Unindexed Queries

┌──────┬───────┬───────┐
│ Path │ Index │ Count │
└──────┴───────┴───────┘

Görüldüğü gibi ekran değişimi işlemi sırasında ilk olarak ” / ” adı altında yani veritabanının hepsi çekilmiş ardından. Project Bucket i Firebases olan projede “Firebases ” adı altındaki (boş) değerler çekilmiş.Bu işlem sırasında gereksiz olarak 2.94MB lık bir harcama yapılmış.Böylece 10GB lık kota erimiş gitmiş.

Firebase in bu işlemi engellemenin bir yolu yoktu.Çünkü bu işlem ekran açılırken gerçekleşiyor ve Screen Init bloğu ile engellenemiyordu.Bu yüzden çözüm yoktu diyebiliriz lakin son Kodular güncellemesi bu durumu değiştirdi.

Artık Firebase URL ve Project Bucket kısımlarını blok tarafından değiştirebiliyoruz.

Yaaaaaani?

Eğer proje ayarlarımızda Firebase URL kısmını URL/dummy yaparsak ve Project Bucket ide “Bucket” olarak bırakırsak aşağıdaki sonucu elde etmiş oluruz.

Lakin bu durum ile bir sıkıntı orataya çıkıyor.Sıkıntı sadece /dummy nin altına kaydedilen verilere erişebileceğiz çünkü URL kısmına böyle bir giriş yaptık.Bu durumu düzeltmek için yapılaması gereken çok basit Screen Init bloğunun içerisine Firebase komponentinin URL sini orjinal hale getirecek bir komut eklemek.Ardından daha az bir veri kullanımı ile Firebase i kullanmaaya devam edebilirsiniz.Hepsi bu kadar 🙂

İşte aradaki fark!

Buraları okumana gerek yok artık kaymağını yedin.Eğer bu yöntem ile yaşadığın sorunu çözdüysen aşağıdaki linke tıklayarak bu sorun hakkında görüşünü bildirmeni isterim.

https://github.com/mit-cml/appinventor-sources/issues/1510