Konu Başlıkları
Yükleniyor...

Mobil İzin Talepleri: Metin, Zamanlama ve Tek Atışlık Diyalog

İzin Ekranı Tasarımı: Ne Zaman Sorulur, Reddedilince Ne Yapılır

Kamera, konum, mikrofon. Uygulamanın bunları istemesi normal; sorun isteme biçiminde çıkıyor. İzin ekranı arayüzün en kısa ömürlü parçası ama sonucu kalıcı: kullanıcı bir kez hayır dediğinde o özelliğin akışı kapanıyor ve geri açmanın yolu tasarımınıza kalıyor.

Metin: somut fayda, jargon yok

Kullanıcı diyaloğu okurken tek bir soruya cevap arıyor: bunu verirsem ne oluyor. “Daha iyi bir deneyim için” cümlesi bu soruya cevap vermez, sadece yer kaplar.

Karşılaştırın: “Yakınınızdaki havaalanlarını listeleyebilmemiz için konumunuza erişmemiz gerekiyor” cümlesi hem sebebi hem sonucu tek satırda veriyor. “Konum servislerini etkinleştirin” ise bir sistem mesajının kopyası. Verinin ne kadar süre saklandığını da yazabiliyorsanız yazın; kimse bunu beklemiyor, tam da bu yüzden fark ediliyor.

Zamanlama: özelliğe dokunduğu an

İzni, kullanıcı ilgili işi yapmak istediği anda isteyin. “Fotoğraf ekle” düğmesine bastığında kamera izni sormak açıklama gerektirmez, bağlam zaten ekranda.

Kurulum ekranında izinleri topluca sormanın tek avantajı geliştirici tarafında: hepsini bir yerde halledip geçiyorsunuz. Kullanıcı tarafında karşılığı, henüz hiçbir şey görmediği bir uygulamaya arka arkaya dört kez güven vermesi (kurulumda dört izni üst üste soran akışları ben de sonuna kadar götürmüyorum). Kritik olmayan izinleri, kullanıcı uygulamadan ilk faydayı gördükten sonraya bırakın.

Sistem diyaloğu tek atıştır

Burada tasarım tavsiyeleriyle platformun davranışı çarpışıyor. iOS'ta bir izni bir kez sorabilirsiniz; kullanıcı reddettiyse aynı sistem diyaloğunu ikinci kez gösteremezsiniz, çağrı sessizce reddedilmiş sayılır. Android'de de kalıcı ret sonrası istem geri gelmez. Yani “kullanıcı fikrini değiştirebilsin” tavsiyesinin kodda karşılığı, diyaloğu tekrar açmak değil.

Bunun pratik sonucu iki tane. Birincisi, asıl diyaloğu ateşlemeden önce kendi arayüzünüzde bir hazırlık ekranı gösterin: neden istediğinizi orada anlatın, kullanıcı “şimdi değil” derse sistem istemini hiç çağırmayın. Böylece tek atışlık hakkınızı harcamamış olursunuz ve sonra tekrar sorabilirsiniz. İkincisi, ret kalıcı hale geldiğinde tek yolunuz ayarlar sayfası kalır, o yüzden oraya doğrudan bağlantı verin. Bunu üç satırla çözersiniz, üçüncü parti bir kütüphaneye gerek yok: iOS tarafında uygulamanın ayar sayfasına açılan bir URL, Android tarafında uygulama detay ekranını açan bir intent.

Peki ya kullanıcı ayarlara gidip geri döndüğünde ne olacak? Uygulama ön plana döndüğünde izin durumunu yeniden okuyun ve ekranı sessizce güncelleyin. Bunu yapmayan uygulamalarda kullanıcı izni verir, geri döner, aynı uyarıyı görür ve izin vermenin çalışmadığını sanır.

Reddedilen izin bir çıkmaz sokak olmasın

Bir özellik izin olmadan çalışmıyorsa bunu özelliğin bulunduğu yerde söyleyin, boş bir ekran ya da genel bir hata mesajı yerine. “Bu listeyi konumunuza göre sıralayabilmek için konum iznine ihtiyacımız var” cümlesinin altına ayarlar bağlantısı koymak yeter.

Bir de tersini düşünün: özellik izinsiz kısmen çalışabiliyor mu? Konum yoksa şehir seçtirebilirsiniz, kamera yoksa galeriden yükletebilirsiniz. Ret sonrası çalışan bir alternatif sunan akış, ikinci kez izin isteme hakkını da hak eder.

Karanlık desenler kısa vadeli kazanç

Reddet düğmesini soluklaştırmak, seçenekleri çift olumsuzla yazmak, vazgeçmeyi üç adıma yaymak onay oranını yukarı çeker. GDPR'ın aradığı şey açık ve bilinçli rıza, bu tasarımlarla verilen rıza ise ikisi de değil. Ayrıca sistem diyaloğuna hile karışmaz; kullanıcı sizin cilalı ön ekranınızı geçse bile karar platformun kendi penceresinde verilir. Yaptığınız tek şey, o pencereye kızgın bir kullanıcı göndermek olur.