Bir spor salonu zincirinin üyelik uygulamasını düşünün. Üye, salonun bodrum katındaki girişte uygulamayı açıyor; turnikeden geçmek için QR kodunu gösterecek. Bodrum katta çekim yok. Uygulama dönen bir simgeyle bekliyor, sonra "Bir hata oluştu" yazıyor. Arkada sıra birikiyor, görevli üyenin adını elle arıyor. Ertesi gün mağazada tek yıldızlı bir yorum var: "Uygulama hiç çalışmıyor."
Uygulama aslında çalışıyor. Sorun, QR kodunun her açılışta sunucudan yeniden istenmesi. Kodun telefonda saklanması mümkündü; kimse "bu ekran internetsiz açılmalı mı?" diye sormamıştı.
Çevrimdışı mod genellikle saha ekipleri için yapılan uygulamalarla anılır. Oysa tüketici uygulamalarında da kullanıcılar metroda, uçakta, asansörde, otoparkta, yurt dışında veri paketi kapalıyken ya da sadece zayıf bir kafe ağında uygulamayı açar. Aşağıdaki sorular, bir uygulamanın bu anlarda nasıl davranacağına önceden karar vermek için.
1. Hangi ekranlar internetsiz açılmalı?
Her ekranı çevrimdışı çalışır hale getirmek pahalıdır ve çoğu zaman gereksizdir. Ekranları üç gruba ayırmak işi netleştirir:
- Mutlaka açılmalı. Kullanıcının bir kapının, bir kasanın ya da bir görevlinin önünde gösterdiği şeyler: bilet, biniş kartı, üyelik kodu, rezervasyon onayı, sipariş numarası. Bunlar internetsiz açılmıyorsa, uygulamanın en önemli anı kaybedilmiş demektir.
- Son hali yeterli. Geçmiş siparişler, kaydedilen tarifler, indirilen dersler, hesap bilgileri. Kullanıcı birkaç saatlik veriyi görmeyi, hiçbir şey görmemeye tercih eder.
- İnternet şart. Ödeme, canlı stok, anlık fiyat, mesajlaşmanın gönderme tarafı. Bunlar çevrimdışı çalışmaz; ama ekran bunu açıkça söylemeli (bkz. 5. madde).
Bu listeyi ilk tasarım toplantısında çıkarmak, sonradan "neden bu ekran açılmıyor" diye düzeltme yapmaktan çok daha ucuzdur.
2. Telefonda ne saklanacak ve ne kadar süre?
"Son hali yeterli" grubundaki her ekran için iki karar verin: verinin telefonda saklanıp saklanmayacağı ve ne zaman eski sayılacağı. Bir kampanya listesi bir gün sonra yanıltıcı olabilir; geçmiş siparişler aylarca doğrudur.
Saklanan veri ekranda tarihiyle gösterilmeli: "Son güncelleme: bugün 08:40." Kullanıcı neye baktığını bilirse eski veri bir sorun değil, bir kolaylıktır. Ayrıca telefonda tutulan verinin bir sınırı olmalı. Her ürün görselini sonsuza kadar saklayan bir uygulama birkaç ay sonra telefonun depolama alanında üst sıralara çıkar ve silinir.
Kişisel veri saklanıyorsa, bunun cihazda şifreli tutulması ve kullanıcı çıkış yaptığında silinmesi de aynı listeye yazılmalı.
3. Kullanıcı internetsizken bir şey yaparsa ne olacak?
Okumak işin kolay kısmıdır. Asıl karar, kullanıcının çevrimdışıyken yaptığı işlemlerde verilir: bir ürünü favorilere eklemek, bir notu kaydetmek, bir antrenmanı tamamlandı diye işaretlemek, bir formu doldurmak.
İki seçenek vardır. Ya işlem reddedilir ve kullanıcıya "bağlantı gelince tekrar deneyin" denir, ya da işlem telefonda bekleyen bir listeye yazılır ve bağlantı gelince sırayla gönderilir. İkincisi kullanıcı için çok daha iyidir, ama her işlem için uygun değildir. Bir not ya da favori sıraya alınabilir; bir ödeme ya da bir randevu saatinin kesinleşmesi alınamaz, çünkü bağlantı geldiğinde o saat dolmuş olabilir.
Sıraya alınan her işlem ekranda bekliyor olarak görünmeli ve gönderildiğinde bu işaret kalkmalı. Kullanıcı yaptığı şeyin kaybolup kaybolmadığını merak etmemeli.
4. İki cihaz aynı veriyi değiştirirse ne olacak?
Kullanıcı tabletinde bir alışveriş listesine süt ekliyor, aynı anda telefonunda listeden ekmeği siliyor; telefon o sırada çevrimdışı. Bağlantı gelince hangisi kazanır?
Bu durum nadir gibi görünür ama paylaşılan listeler, aile hesapları ve birden fazla cihaz kullanan kişilerde düzenli olarak yaşanır. Her veri türü için kuralı önceden yazın. Çoğu durumda basit bir kural yeter: listeye eklemeler birleştirilir, aynı alan iki kez değiştirildiyse son değişiklik kazanır. Bir metnin tamamının üstüne yazılması gibi kayıp yaratabilecek durumlarda ise kullanıcıya iki sürümü gösterip seçtirmek daha güvenlidir.
5. Uygulama bağlantı durumunu nasıl söylüyor?
En kötü çevrimdışı deneyim, kullanıcının neyin olup bittiğini bilmediği deneyimdir: sonsuza kadar dönen bir yükleme simgesi, genel bir "hata oluştu" mesajı ya da hiçbir şey yapmayan bir buton.
Bunun yerine:
- Ekranın üstünde sakin, küçük bir şerit: "Çevrimdışısınız. Kaydettikleriniz bağlantı gelince gönderilecek."
- İnternet gerektiren butonlarda açık bir açıklama: "Ödeme için internet bağlantısı gerekiyor."
- Yükleme için bir üst süre. Birkaç saniye içinde yanıt gelmezse, saklanan veri varsa onu gösterin, yoksa ne olduğunu söyleyin.
Bağlantı geri geldiğinde de bunu sessizce halletmek genellikle yeterlidir. Kullanıcıyı her bağlantı değişiminde bir bildirimle rahatsız etmeyin.
6. Zayıf bağlantı da test ediliyor mu?
Çoğu ekip çevrimdışı modu uçak modunu açıp kapatarak test eder. Gerçek hayatta daha sık görülen durum ise hiç bağlantı olmaması değil, yavaş ve kopuk kopuk bir bağlantıdır. Telefon bağlı olduğunu düşünür, istek gönderilir, cevap otuz saniye boyunca gelmez.
Test planına zayıf bağlantıyı da ekleyin. Hem iOS hem Android geliştirme araçlarında ağı yavaşlatmak ve kesintili hale getirmek mümkündür. Ekranların bu koşulda ne yaptığını görün: bekleyen işlemler iki kez gönderiliyor mu, yarım kalan bir yükleme ekranı kilitliyor mu, kullanıcı aynı butona üç kez basabiliyor mu?
İki kez gönderme sorunu özellikle önemlidir. Sunucu her işlemi tek bir kimlikle almalı; aynı işlem ikinci kez gelirse tekrar kaydetmemeli.
7. Çevrimdışı kullanım ölçülüyor mu?
Çevrimdışı moda ne kadar yatırım yapılacağı, kullanıcıların gerçekte ne sıklıkla internetsiz kaldığına bağlıdır. Bu bilgi tahminle değil ölçümle gelmeli.
Uygulama, çevrimdışı açılış sayısını, sıraya alınan işlem sayısını ve bunların ne kadar sonra gönderildiğini kaydedebilir (bağlantı gelince toplu olarak). Birkaç haftalık veri, hangi ekranların gerçekten internetsiz kullanıldığını gösterir. Bazen beklenmedik bir sonuç çıkar: kullanıcıların büyük kısmı uygulamayı aynı yerde, örneğin bir salonun bodrum katında açıyordur.
Kısaca
Çevrimdışı mod tek bir özellik değil, bir dizi karardır. Hangi ekranların mutlaka açılacağını belirleyin, telefonda neyin ne kadar süre saklanacağına karar verin, çevrimdışı yapılan işlemleri ya açıkça reddedin ya da görünür bir sıraya alın, çakışma kurallarını yazın, bağlantı durumunu sakin bir dille söyleyin, zayıf bağlantıyı da test edin ve çevrimdışı kullanımı ölçün.
Mobil uygulama projelerinde ekranları bu üç gruba ilk tasarım aşamasında ayırıyor, çevrimdışı davranışı da diğer özellikler gibi kabul testlerine yazıyoruz.
Böyle bir proje mi planlıyorsun?
10 adımda planla