Ulu Önder Mustafa Kemal Atatürk'ü aramızdan ayrılışının 88. yılında saygı, minnet ve özlemle anıyoruz.

Mobil uygulamada çevrimdışı çalışma: yerel veritabanı ve senkronizasyon

kaan.yildiz Mid 2 saat önce · 0 görüntülenme

Kullanıcılar asansörde, metroda ya da zayıf çeken bir yerde uygulamanı açtığında boş bir ekran görmemeli. Çevrimdışı çalışabilen ("offline-first") bir uygulama hem daha hızlı hissettirir hem de daha az şikayet alır.

Temel fikir

Arayüz veriyi her zaman yerel veritabanından okur. Ağ katmanı arka planda yerel veritabanını sunucuyla eşitler. Böylece ekran ağ isteğini beklemez.

Arayüz  <->  Yerel veritabanı  <->  Senkronizasyon  <->  Sunucu

Yerel depolama seçenekleri

  • SQLite: Her iki platformda da yerleşik. Android'de Room, iOS'ta Core Data veya GRDB, Flutter'da sqflite/drift, React Native'de çeşitli SQLite kütüphaneleri üzerinden kullanılır.
  • Anahtar-değer depoları: Ayarlar ve küçük veriler için (SharedPreferences, UserDefaults). Liste ve ilişkili veri için uygun değildir.
  • Hazır senkronizasyon çözümleri: Bazı servisler yerel veritabanı + sunucu eşitlemesini hazır sunar. Hızlı başlarsın ama sağlayıcıya bağımlı olursun.

Yazma işlemleri: bekleyen kuyruk

Kullanıcı çevrimdışıyken bir kayıt eklediğinde:

  1. Kaydı yerel veritabanına durum = bekliyor olarak yaz.
  2. Arayüzde hemen göster (gerekirse küçük bir "gönderilecek" işaretiyle).
  3. Bağlantı geldiğinde kuyruktaki işlemleri sırayla sunucuya gönder.
  4. Sunucu onaylayınca durumu gönderildi yap ve sunucunun verdiği kimliği kaydet.

Önemli: Her işleme istemcide bir benzersiz kimlik (UUID) ver ve sunucuya gönder. Bağlantı yarıda kopup istek tekrarlanırsa sunucu aynı kaydı iki kez oluşturmaz (idempotent istek).

Okuma işlemleri: neyin değiştiğini sor

Her açılışta bütün veriyi indirmek yerine sunucudan "şu zamandan sonra değişenleri" iste:

GET /api/notlar?degisti_sonra=2026-11-10T08:00:00Z

Silinen kayıtları da bildirebilmek için sunucuda kayıtları hemen silmek yerine silindi_at alanı tutmak işini kolaylaştırır.

Çakışmalar

Aynı kayıt iki cihazda çevrimdışıyken değiştirilirse ne olacak? Yaygın yaklaşımlar:

  • Son yazan kazanır: En basiti. Çoğu uygulama için yeterli.
  • Alan bazında birleştirme: Biri başlığı, diğeri açıklamayı değiştirdiyse ikisini de koru.
  • Kullanıcıya sor: Belge düzenleme gibi önemli verilerde.

Hangisini seçeceğine baştan karar ver. Sonradan eklemek zordur.

Test etmeyi unutma

  • Uçak modunda kayıt ekle, uygulamayı kapat, aç, interneti aç: kayıt gitti mi?
  • İstek sırasında bağlantıyı kes: çift kayıt oluştu mu?
  • Emülatörlerde ağ hızını yavaşlatma seçenekleriyle zayıf bağlantıyı dene.
0

0 cevap

Henüz cevap yok. İlk cevabı sen yaz.

Cevap yaz

Cevap yazmak için giriş yapmalısın.

Konu bilgisi
  • Açılış10.11.2026
  • Son etkinlik1 saat önce
  • Cevap0
  • Görüntülenme0
  • Beğeni0
Yeni konu aç