Android M ve Uygulama İzinlerindeki Köklü Değişiklik
Mehmet Altıparmak - 03 Haziran 2015
Geçtiğimiz perşembe ve cuma günleri Google her yıl düzenli olarak organize ettiği geliştirici konferansı Google I/O'yu gerçekleştirdi. Android işletim sisteminin yeni sürümü Android M ile gelecek değişikliklerden bahsedilen konferansta, açılış konuşmasının ilk konusu yeni izin yapısıydı.
Yeni izin yapısıyla uygulamaların talep ettiği izinler artık kurulum aşamasında değil kullanım aşamasında kullanıcıların karşısına çıkıyor (iOS uygulamalarında olduğu gibi). Kullanıcılar isterse uygulama izin ayarları sayfasından izinleri yönetebiliyor, istediği izinleri kaldırıp uygulamayı kullanmaya devam edebiliyor.
Madde madde kullanıcı deneyiminin etkilendiği noktalara bakacak olursak;
M öncesinde uygulama yüklerken kullanıcı "Yükle (Install)" düğmesine bastığı anda uygulamanın talep ettiği izinlerin bir listesi çıkar ve kullanıcıdan onay ister. M ile birlikte yükle düğmesine basıldıktan sonra izin listesi görünmeyecek ve düğmeye basılır basılmaz uygulama indirilip cihaza kuruluyor olacak.
Şekil 1: M ile birlikte yükle düğmesine bastıktan sonra
Şekil 2: M öncesinde yükle düğmesine bastıktan sonra
M öncesinde cihaza kurulan bir uygulama talep ettiği tüm izinlere yetki almış oluyor. M ile birlikte izin talepleri uygulama kullanım esnasında talep ediliyor ve kullanıcı izin vermeme şansına sahip.
Şekil 3: M'de bir uygulama izin talebinde bulunurken
M öncesinde kullanıcılar uygulamalara verdikleri izinleri geri alamıyorlar. Tek seçim uygulamayı kaldırmak. M ile birlikte kullanıcılar uygulama izinlerini tek tek kapatabilme/açabilme olanağına sahipler. Böylece kullanıcılar izinleri nedeniyle şüphe uyandıran bir uygulamayı şüpheye sebep olan izni kapatarak diğer özellikleriyle kullanmaya devam edebilecekler.
Şekil 4: M'de uygulama izinleri ekranı
M öncesinde bir uygulama yeni bir izinle birlikte güncellendiğinde bu yeni izin için tekrar kullanıcıdan onay alındığı için uygulama otomatik güncelleme özelliğinden faydalanamıyordu. M ile birlikte tüm izin talepleri çalışma zamanında yapıldığı için yeni bir izin içeren güncellemeler de otomatik olarak güncellenecek.
Android M bir cihazda kullanıcı eski bir uygulamanın izinlerini kaldırmaya çalıştığında, işletim sistemi kullanıcıyı bu uygulamanın yeni izin modeliyle uyumlu olmadığı ve bu şekilde sağlıklı çalışmayabileceği konusunda bilgilendiriyor.
Bu değişiklikleri uygulama sahipleri açısından yorumlayacak olursak, birçok uygulama sahibi kullanıcılarından uygulamanın talep ettiği izinler nedeniyle şikayet, olumsuz yorum almıştır ve hatta kullanıcısını kaybetmiştir. Yeni izin modeliyle beraber kullanıcıların izinler üzerindeki hakimiyeti bu sorunu büyük oranda çözecektir. Daha az kullanıcı kaybı ve yükleme oranlarında artış beklenebilir. Otomatik güncelleme özelliğine takılmıyor olması da uygulamaların kullanıcılara daha hızlı ve daha pürüzsüz bir şekilde iletilmesini sağlayacak.
Peki, geliştiriciler olarak bu değişiklere nasıl yanıt vermeliyiz, uygulamalarımızı güncellememiz gerekiyor mu?
Yeni izin yapısını kullanmak istiyorum
Bir uygulamayı yeni izin yapısına geçirmek için öncelikle targetSdk Android M ("MNC") yapılmalı. Android M hedeflendikten sonra uygulama izin gerektiren işlemi yapmadan hemen önce yeni tanıtılan API'lar aracılığı ile söz konusu izne sahip olup olmadığını sorgulamalı ve eğer izne sahip değil ise talep etmelidir. Bu işlemden sonra kullanıcıya yukarıda bahsettiğimiz onay kutusu gösterilecektir. İzin isteyeceğim yeri nasıl bileceğim diye düşünürseniz, Android Studio'nun yeni sürümü imdadınıza yetişiyor.
Şekil 5: Android Studio izin kontrolü yapılması gerektiğini belirtiyor.
Yeni izin yapısını kullanmak istemiyorum
Yeni izin yapısını kullanmak istemeyenler Android M öncesinde bir targetSdk seçmek zorunda. Peki, bu durum kullanıcıların izinleri kaldırabilmelerini engelliyor mu? Hayır! Android M'de çalışan uygulamalar hangi targetSdk'e göre derlenmiş olursa olsun kullanıcılar her zaman izinleri kaldırma hakkına sahip.
Tasarımda nelere dikkat etmeliyiz?
M ile birlikte uygulama her zaman ihtiyacı olan izinlere sahip olmayacağı için olumsuz koşullardaki akışlar iyi düşünülmelidir. Uygulama tasarlanırken iznin olmadığı durumlarda uygulamanın akışını veya kullanılabilirliğini ciddi şekilde bozmayacak tasarımlar yapılmalı, uygun bilgilendirme, yönlendirme ekranları çıkarılmalıdır.
Uygulamamı güncellemezsem ne olur?
Uygulamalar yeni izin modeline güncellense de güncellenmese de kullanıcılar M ile birlikte izinleri kaldırabilecekler. Bu durum eski modeli kullanmaya devam eden uygulamaları olumsuz yönde etkiliyor olacak. Örneğin, uygulama kullanıcının izni kaldırdığı bir işlemi yapmaya çalıştığında API başarılı cevap dönecek ancak aslında arka planda hiçbir işlem yapmamış olacak. Konum bilgisi sorgulayan bir uygulamaya konum bilgisi bulunamadı dönecek. Haliyle izin modellerinin çalışma mantığını bilmeyen kullanıcılar uygulamanın hatalı çalıştığını düşünecekler ve muhtemel bir kullanıcı kaybı oluşacak. Uygulamanızın Android M'de tuhaf davranışlar sergilemesini istemiyorsanız M yayınlanmadan uygulamanızı güncellemelisiniz.
Şekil 6: Android M Zaman Planı
Uygulamamı güncellerim ama kullanıcı izin vermezse ne yapmalıyım?
Google bu durum için Material Design kılavuzundaki boş durumlar, hatalar başlıklarına göz atmamızı tavsiye ediyor. Kullanıcıya izin karşılığında ona sağlayacağımız faydayı açıklamamızı öneriyor.
Diğer Google tavsiyeleri
Google I/O oturumunda verilen diğer tavsiyeler:
Uygulamanız ilk defa açıldığında hemen izin istemek yerine, uygulamanızı tanıtan, uygulamanızın değer teklifini açıklayan bilgilendirme ekranları kullanın.
Kritik izinler dışında, izinleri sadece ihtiyaç duyulduğunda isteyin. WhatsApp'ı düşünürsek mikrofon iznini uygulama açıldığında değil, kullanıcı mikrofon düğmesine basarak ses kaydı göndermek istediğinde talep edin.
İzin istediniz, kullanıcı izni verdi, kullanıcıya o izin ile ona vereceğiniz değeri teklifini hemen gösterin.
Sistemin halihazırda bir Intent ile hizmet verdiği işlemler için izin istemek yerine bu intentleri kullanın.
Oturumda sorulan bazı sorular ve verilen cevaplar
Belli izin gruplarından bahsettiniz, peki diğer izinler ne olacak?
İzinlerle ilgili çok fazla değişiklik yapıyoruz. Bu konuda daha sonra bilgilendirme yapacağız.
M ve öncesi sürümleri de destekleyen bir uygulamamıza yeni bir izin ekledik, ne olacak?
Eğer M öncesinde otomatik güncellemeden faydalanmak istiyorsanız izinleri sadece M için eklemek mümkün. Bu durumda M öncesi için uygulama bu izne sahip olmayacak.
Kullanıcıyı izin ayarları ekranına yönlendirebilecek miyiz?
Evet, ama bazı şartlar var. Kullanıcıdan izin talep etmemizi sağlayan pencere ilk gösterimden sonra "Bir daha gösterme" seçeneğine sahip. Eğer kullanıcı bu seçeneği seçerek izni vermezse uygulama içerisinden uygulama ayarlarına yönlendirmek mümkün olacak. "Bir daha gösterme" seçeneğini işaretlemeden izni vermezse, izin ayarları sayfasına yönlendirmek mümkün.
OEM uygulamaları da aynı akışa tâbi midir?
Zorunlu ve isteğe bağlı izin modeli hakkında planlarınız var mı?
Örnek proje ve diğer kaynaklar
Google örnek bir projeyi GitHub üzerinden paylaşmış durumda. Diğer kaynaklar için Android M Preview sitesini ziyaret edebilirsiniz. Oturum videolarına buradan ulaşabilirsiniz.
Açılış görseli: kirillm / 123RF Stok Fotoğraf
Çok net bir döküman olmuş, ellerine sağlık Mehmet,