Uygulamanız İnterneti Kaybettiğinde Ne Olur? (Ve Çalışmaya Nasıl Devam Edersiniz)
Uygulamanız internet bağlantısını kaybettiğinde, çevrimdışı öncelikli (offline-first) bir uygulama çökmez ya da donmaz — çalışmaya devam etmenizi sağlar, değişikliklerinizi cihazınızda kaydeder ve siz tekrar bağlandığınızda her şeyi senkronize eder; ister üç dakika sonra olsun ister üç gün sonra.
WiFi’ınız gidiyor. Uygulamanızda bir formu dolduruyorsunuz—alanların yarısı tamam, buna beş dakika ayırdınız. Ne olur?
Uygulamanız sadece çevrimiçi çalışıyorsa, hikaye şöyle: sayfa yeniden yüklenir. Verileriniz yok olur. Baştan başlarsınız. Uygulamayı kapatırsınız ve bir daha geri dönmezsiniz.
Uygulamanız çevrimdışı öncelikliyse, hikaye farklıdır: yazmaya devam edersiniz. Verileriniz güvendedir. WiFi geri geldiğinde (üç dakika sonra ya da üç gün sonra), her şey senkronize olur. Çevrimdışı öncelikli tasarım tek cümleyle bu: uygulama internet bağlantısı olmadan da çalışmaya devam eder, değişikliklerinizi cihazınızda kaydeder ve siz tekrar bağlandığınız an bunları senkronize eder.
Çoğu uygulama oluşturucu, inşa etmesi daha kolay olduğu için çevrimdışı desteğini atlar. Ama çevrimdışı öncelikli olmak karmaşık değil—kasıtlı bir tercih. Bu, birinin elini uzattığı bir uygulamayla, sildiği bir uygulama arasındaki fark.
Uygulamanız İnterneti Kaybettiğinde Gerçekte Ne Olur?
Uygulamanız interneti kaybettiğinde ya çalışmaya devam eder ya da etmez—ortası yoktur. Ve bağlantı kaybı nadir bir durum değildir: uçaktaki bir kullanıcının interneti yoktur, bir tünelde olan kullanıcının sinyali yoktur, kırsal bir etkinlik mekanındaki kullanıcının bağlantısı zayıftır, ev routerı gece 3’te yeniden başlayan kullanıcı ölü bir WiFi’da takılı kalır, telefonuna bağlı kullanıcı hotspot kotasına ulaşır.
Bütün bu durumlarda, uygulamanız ya çalışır ya da çalışmaz.
Serbest çalışanlar için bir zaman takip uygulaması geliştirmiştik. Çevrimdışıyken çöküyordu. Bir serbest çalışan (bunu inşaat sahalarında, sinyal olmadan kullanıyordu) uygulamayı kullanmayı bıraktı—kalem ve kağıda geri döndü, çünkü kalem en azından her yerde çalışıyordu. Üç ay sonra, çevrimdışı mod eklendikten sonra geri döndü ve bir daha ayrılmadı.
Mekanizma basit: internet kesildiğinde işi cihazda kaydet, bağlantı geri geldiğinde senkronize et. Hepsi bu.
Farklı Çevrimdışı Türleri Nelerdir?
Planlamanız gereken üç tür çevrimdışı durum vardır: kasıtlı, sürpriz ve yavaş—ve her biri farklı bir çözüm gerektirir.
Kasıtlı çevrimdışı — Kullanıcı çevrimdışı çalışmayı kendisi seçti. Uçaktalar ya da WiFi’ın kötü olduğunu biliyorlar. Sonra senkronize edeceklerini biliyorlar. İnşa etmesi en kolay olanı: taslakları cihazda kaydedin, bağlantı geri geldiğinde gönderin.
Sürpriz çevrimdışı — İnternet beklenmedik şekilde kesildi. Kullanıcı bir işin ortasındaydı. Onları cümlenin ortasında keserseniz, sinirlenirler. Çözüm aynı (taslakları cihazda kaydedin), ama kullanıcı deneyimi daha nazik olmalı: uygulamanın çalışmaya devam ettiğini gösterin ve tekrar çevrimiçi olduklarında onlara haber verin.
Yavaş çevrimdışı — Bağlantı var, ama o kadar yavaş ki yok denecek kadar az. Bir müşteri bir formu doldurur, gönder’e tıklar, sonra gönderimin tamamlanması için 20 saniye bekler. O ana kadar bir şeylerin bozulduğunu düşünür ve tekrar gönder’e tıklar (şimdi de kopya bir kayıt oluşur). Bu, test edilmesi en zor olanı, ama çözümü dürüst: iş yapılırken bunu gösterin (bir yükleme animasyonu ile) ya da taslağı kaybetmeden sayfadan ayrılmalarına izin verin.
Uygulama Oluşturucunuzdan Çevrimdışı Modu Nasıl İstersiniz?
Bunu tek büyük bir özellik olarak değil, parça parça istersiniz—çevrimdışı öncelikli olmak tek bir onay kutusu değil, bir tasarım felsefesidir. Uygulama oluşturucunuza götürebileceğiniz beş somut istek:
-
Taslakları cihazda kaydet: “Biri bir formu veya notu doldurduğunda, bunu telefonuna/tarayıcısına kaydet. Sayfayı yenilerse, form hâlâ dolu olmalı.” Test edin: bir şeyi doldurun, tarayıcı sekmesini kapatın, tekrar açın—form hâlâ orada olmalı.
-
Çevrimdışı çalış: “İnternet yoksa, uygulama elimizdeki veriyi göstermeli, kullanıcının okumasına ve değişiklik yapmasına izin vermeli ve değişiklikleri internet geri geldiğinde senkronize edilmek üzere sıraya almalı.” Test edin: WiFi’ınızı kapatın, işe yarar bir şey yapmayı deneyin, sonra WiFi’ı tekrar açın ve verinin senkronize olduğunu izleyin.
-
Sessizce senkronize et: “Değişiklikleri senkronize ederken büyük bir diyalog gösterme. Üstte ‘Kaydediliyor…’ gibi küçük bir gösterge göster, bitince kaybolsun. Kaydetme başarısız olursa, değişikliği cihazda tut ve daha sonra tekrar dene.”
-
Gerçeği göster: “Kullanıcıya hangi verinin taze (sunucudan yeni senkronize edilmiş) ve hangisinin sadece yerel olduğunu (henüz senkronize edilmemiş) söyle. Küçük bir gösterge veya etiket kullan—korkutucu yapma, sadece dürüst ol.”
-
Tek bir iş akışı, önce yerel: “Kullanıcının uygulamaya gelme sebebi olan asıl şey (bir rezervasyona bakmak, bir not yazmak, zaman takip etmek) çevrimdışı çalışmalı. İyi-olsa-da-olur özellikler (tüm geçmiş kayıtlarda arama yapmak, canlı fiyatlandırma çekmek) internet gerektirebilir.”
Gerçek Hikayeler
Düğün planlamacısı RSVP’leri yönetmek için bir uygulama inşa ettirdi. Listeyi yazdırıp etkinliklerde dolaşır, yanıtları işaretlerdi. Ama mekanlardaki WiFi berbattı. Çevrimdışı öncelikli olmasını istedi: kontrol listesini cihazda kaydet, eve döndüğünde senkronize et. Şimdi bu, ana aracı—telefonunda sinyal olsa bile, uygulama veri beklemeden çalışıyor. Bunu çok seviyor.
Sınıf öğretmeni öğrenci ilerlemesini takip etmek için bir uygulama kullanıyordu. Zayıf bağlantılı odalar arasında geçiş yaparken sürekli düzenlemelerini kaybediyordu. Çevrimdışı mod, özgürce çalışabilmesi, sonra senkronize edebilmesi ve telefonu ile işi arasında seçim yapmak zorunda kalmaması anlamına geldi. Tek bir değişiklik, büyük bir güven artışı.
Sigorta eksperi hasar raporlarını sahada dolduruyordu (bazı kırsal alanlarda sinyal yok). Orijinal uygulama göndermek için internet gerektiriyordu. Çevrimdışı taslaklar ekledik. Şimdi formu dolduruyor, çevrimdışı gönderiyor ve senkronizasyon eve dönerken gerçekleşiyor. Artık “eve varana kadar hiçbir şey gönderemiyorum” yok.
Üçü de “sadece daha iyi WiFi al” ile çözülebilirdi, ama gerçek dünya böyle işlemiyor. Çevrimdışı öncelikli olmak, daha iyi senkronizasyondan çok daha büyük bir güven değişimiydi.
Çevrimdışı Öncelikli Olmak Uygulamanızı Daha Hızlı mı Yapar?
Evet—çevrimdışı öncelikli uygulamalar daha hızlı hissettirir çünkü sunucuyu beklemezsiniz. Yazarsınız, uygulama cihazda kaydeder (anında) ve arka planda senkronize eder. Yükleme animasyonu yok, bekleme yok. İnternet olsa bile, deneyim daha çeviktir çünkü sunucu araya girmez.
Sadece çevrimiçi bir uygulama, her değişikliği onaylamak için sunucuyu beklemek zorundadır. Bir tuş vuruşu → ağ isteği → sunucu doğrulaması → yanıt → kullanıcıya gösterim. Bu normalde sorun değildir, ama yavaş ağlarda (ya da yavaş bir sunucuya sahip mobilde), her etkileşim takılır.
Çevrimdışı Öncelikli Bir Uygulama İnşa Etmenin Maliyeti Nedir?
Çevrimdışı öncelikli olmak, önceden mühendislik zamanı gerektirir. Uygulama oluşturucunuzun şunları düşünmesi gerekir:
- Yerel depolama: Uygulama çökerse yok olmaması için veriyi telefonda/tarayıcıda nasıl saklayacağı. Zor değil, ama kasıtlı olması gerekiyor.
- Çakışma çözümü: Kullanıcı çevrimdışıyken bir alanı değiştirirse, sonra başka biri (ya da farklı bir cihaz) senkronizasyondan önce aynı alanı değiştirirse, hangisi kazanır? Genellikle çevrimiçi olan (daha taze), ama kullanıcı şaşırtılmak yerine uyarılmalı. Gerçek örnek: iki telefon aynı notu çevrimdışı düzenliyor, ikisi de çevrimiçi oluyor—senkronize etmeye ikinci giden kazanıyor, ilk kullanıcı “Sizin versiyonunuz daha eskiydi, işte güncel olanı” mesajını görüyor.
- Bayat veri: Kullanıcı üç gün çevrimdışıysa, uygulama tekrar bağlandığında her şeyi sessizce mi yenilemeli, yoksa önce sormalı mı? Sormak daha güvenli—eski veriye kaydedilmemiş değişiklikler eklenmiş olabilir.
Bunları düşünmek bedava değil, ama tahmin edeceğinizden daha basit.
Karşılığı: insanların güvendiği uygulamalar. Çevrimdışı öncelikli bir uygulama bahane üretmez (“bunu kullanmak için internet gerekiyor”) ve işinizi kaybetmez. Bu çok büyük bir şey.
Uygulamanızın Çevrimdışı Çalışıp Çalışmadığını Nasıl Test Edersiniz?
Bunu test etmek için uçağa binmenize gerek yok—telefonunuzdaki uçak modu test sahanız. İşte nasıl:
- Açın ve bir şey doldurun: Normal bir şey yapın (bir form doldurun, bir not ekleyin).
- Çevrimdışına geçin: Uçak modunu açın veya WiFi’ı kapatın.
- Çalışmaya devam edin: Aynı şeyi tekrar yapmayı deneyin. Uygulama reddediyorsa, çevrimdışı öncelikli değildir. Uygulama çalışıyorsa, iyi. Kafa karıştırıcıysa, uygulama oluşturucunuzdan net bir “Çevrimdışısınız” göstergesi isteyin.
- Tekrar çevrimiçi olun: Uçak modunu kapatın.
- Senkronizasyonu kontrol edin: Değişiklikleriniz otomatik olarak senkronize oldu mu? Bir “senkronize et” düğmesine tıklamanız ya da sayfayı yenilemeniz gerektiyse, henüz tam anlamıyla orada değil demektir.
En iyi çevrimdışı uygulamalar o kadar normal hissettirir ki çevrimdışı olduklarını fark etmezsiniz—sadece uygulamanın hâlâ çalıştığını fark edersiniz.
İnşa ettirdiğiniz uygulamanın gerçekten çevrimdışı çalışması gerekiyor mu? Cevap “kullanıcılarımın interneti zayıf, ya da sinyal olmayan yerlerde çalışıyorlar” ise, evet. “Her zaman kararlı bir WiFi’dalar” ise, şimdilik bunu atlayabilirsiniz. Ama birisi “işimi kaybettim” dediği an, keşke daha erken istesem diyeceksiniz.