Çoklu Cihaz Kullanıcısı: Kimlik, Senkronizasyon ve Devam Ettirme
Aynı kişi sabah masaüstünde başladığı işi akşam telefonda bitirmek istiyor. Bunu desteklemek çoğu ekipte "ayarları buluta koyalım" cümlesiyle geçiştiriliyor, oysa iş orada başlıyor. Cihazlar arası deneyimin iki gerçek problemi var: kullanıcıyı cihazdan bağımsız tanımak ve iki cihaz aynı veriyi değiştirdiğinde hangisinin kazanacağına karar vermek.
Devamlılığın önkoşulu kimliktir
Sepetini masaüstünde dolduran kullanıcı, aynı sepeti telefonunda görmek ister. Bunun tek yolu o kişiyi iki cihazda da tanımaktır, yani hesap. Anonim ziyaretçide çerez cihaza bağlıdır ve cihaz değişince bağ kopar.
Bu, tasarım tarafında rahatsız edici bir sonuç doğurur: cihazlar arası devamlılık vaat eden akış, kullanıcıdan önce kayıt ister. Çoğu ekip bu bedeli hesaplamadan devamlılık özelliği planlar, sonra da giriş ekranındaki terk oranına şaşırır. Karar açık olmalı. Ya devamlılığı hesabın somut faydası olarak konumlandırıp girişi işlemin ortasında değil, kullanıcının kazancı görünür olduğu anda isteyeceksiniz, ya da anonim kullanıcı için devamlılık sözü vermeyeceksiniz.
Ara bir yol var: sepet bağlantısını ya da devam kodunu kullanıcıya verip cihaz değiştirmesine izin vermek. Küçük bir çözüm, hesabı zorunlu kılmadan işi görür.
Senkronizasyon bir çakışma politikasıdır
Senkronizasyonu veri taşıma işi sanmak, sorunların çoğunun kaynağıdır. Asıl soru şu: aynı kayıt iki cihazda değiştiyse ne olacak? Cevap vermezseniz sistem sizin yerinize cevap verir ve varsayılan cevap neredeyse her zaman "son yazan kazanır" olur.
Son yazan kazanır kuralı sessizce veri siler. Kullanıcı telefonda notunun bir satırını düzeltir, masaüstündeki sekme arka planda saat sonra kendi eski kopyasını gönderir, düzeltme kaybolur. Kimse hata mesajı görmez. Kullanıcı sadece "bu uygulama bazen kaydetmiyor" der ve haklıdır.
Çakışmayı kayıt bazlı zaman damgasıyla değil, alan bazlı birleştirmeyle çözerim: iki taraf farklı alanlara dokunduysa ikisi de yaşar, aynı alana dokunduysa kullanıcıya iki sürümü gösterip seçtirirsiniz. Bu ikinci durum düşündüğünüzden nadir çıkar, o yüzden "karmaşık olur" gerekçesiyle atlamaya değmez.
Bu bir arayüz kararıdır, altyapı kararı değil. Çakışma ekranının nasıl görüneceğine tasarımcı karar vermezse, kullanıcıya ham iki JSON gösteren bir uyarı kutusu çıkar.
Her tercih taşınmaz
Tercihlerin tamamını cihazlar arasında taşımak yaygın bir hatadır. Kişiye ait olanla cihaza ait olanı ayırın.
- Kişiye ait: dil, para birimi, gizlilik tercihleri, kayıtlı adresler, filtreler.
- Cihaza ait: yazı boyutu, koyu tema, bildirim izinleri, indirilmiş içerik.
Telefonda punto büyütmüş bir kullanıcının 27 inç ekranda aynı devasa yazıyla karşılaşması, senkronizasyonun kullanıcıya zarar verdiği yerdir. Bildirim tercihi de öyle: iş bilgisayarında sessiz olmak isteyen kişi telefonda bildirim istiyor olabilir.
Devam etmeyi teklif edin, kendiliğinden başlatmayın
Kullanıcıyı ikinci cihazda otomatik olarak bıraktığı yere fırlatmak kontrolü elinden alır. Doğru davranış, üstte küçük bir şerit: "Dün masaüstünde yarım kalan başvuruya devam et." Kullanıcı isterse tıklar, istemezse temiz bir ekranla başlar.
Bu şeridin ömrü de sınırlı olmalı. Üç hafta önceki yarım işlemi hatırlatmak yardım değil, gürültüdür. Yedi gün çoğu ürün için makul bir sınırdır, alışveriş sepetinde daha kısa.
Güvenlik tarafında abartılmaması gereken kısım
Veriyi aktarımda ve saklamada şifrelemek zaten temel gerekliliktir, tartışma konusu değil. Tasarımı asıl ilgilendiren kısım oturum yönetiminin görünür yüzü: kullanıcı hangi cihazlarda açık oturumu olduğunu görebilmeli ve tek tek kapatabilmeli. Bu ekranı sunan ürün sayısı hâlâ az, oysa maliyeti düşük ve kaybolan telefon senaryosunda kullanıcının ilk aradığı şey bu.
Buna karşılık her yeni cihaz girişinde doğrulama kodu istemek, güvenlikten çok terk oranı üretir. Riskli olanı ayırın: yeni ülke, yeni tarayıcı ve hassas işlem birlikte geldiğinde sorun, sadece cihaz değişti diye sormayın.