İzin istekleri, bir cihazdaki hassas bilgileri korur ve yalnızca söz konusu araştırma için bilgiye erişim gerekli olduğunda kullanılmalıdır işlevi görür. Bu dokümanda, projenizi geliştirmek için Aynı (veya daha iyi) işlevlere erişim gerektirmeden bu tür bilgilere; izinlerin, kullanıcı izninin Google tarafından Android işletim sisteminde çalışıyor.
Android izinleriyle ilgili daha genel bir bakış için lütfen İzinlere genel bakış başlıklı makaleyi inceleyin. Kodunuzda izinlerle çalışma hakkında ayrıntılı bilgi için Uygulama izinleri isteme başlıklı makaleyi inceleyin.
Android 6.0 ve sonraki sürümlerde izinler
Android 6.0 (API düzeyi 23) ve sonraki sürümlerde uygulamalar şuradan izin isteyebilir: kullanıcı için daha doğru bir izleme deneyimi sunar. Bu sayede uygulamalar, hizmetler tarafından korunan hizmetleri veya verileri gerçekten ihtiyaç duyduğunda izin isteyebilir. Bu, uygulamanın genelini (gereken) değiştirmese de hassas kullanıcı verilerinin kullanım biçimiyle alakalı birkaç değişiklik nasıl işlenir?
Artırılmış durum bağlamı
Kullanıcılardan çalışma zamanında, uygulamanızın bağlamında, aşağıdakileri yapmalarına izin vermeleri istenir: bu izin gruplarının kapsadığı işlevlere erişebilir. Kullanıcılar, izin istenen bağlama daha duyarlı olur. İstediğiniz izinle uygulamanızın amacı arasında uyuşmazlık varsa kullanıcıya izin isteme nedeninizle ilgili ayrıntılı bir açıklama sunmanız daha da önemlidir. Mümkün olduğunda, isteğinizin açıklamasını hem istek sırasında hem de kullanıcı isteği reddederse takip iletişiminde sağlamanız gerekir.
İzin isteğinin kabul edilme olasılığını artırmak için yalnızca belirli bir özellik gerektiğinde istem gösterin. Örneğin, yalnızca kullanıcı mikrofon düğmesini tıkladığında mikrofon erişimi isteğinde bulunun. Kullanıcıların bekledikleri bir izni isteyebilirler.
İzin verme konusunda daha fazla esneklik
Kullanıcılar, izin isteklerinin yapıldığı sırada ve ayarlar bölümünde izinlere erişimi reddedebilir. Ancak bu işlem, işlevlerin çalışmamasına neden olabilir. Kaç kullanıcının reddeddiğini izlemek kullanarak yeniden düzenleme yapabilirsiniz (ör. Google Analytics kullanarak) veya daha iyi bir izleme deneyimi sunan uygulamanızın düzgün çalışması için neden izne ihtiyacınız olduğuna dair açıklama. Siz Ayrıca, uygulamanızın, kullanıcılarınız için yalnızca belirli izin isteklerini reddedebilir veya ayarlarda izinleri kapatabilirsiniz.
Artan işlem yükü
Kullanıcılardan izin gruplarına erişim iznini bir grup olarak değil, tek tek vermeleri istenir. Bu nedenle, istek ettiğiniz izin sayısını en aza indirmeniz son derece önemlidir. Bu durum, kullanıcıların izin verme yükünü ve dolayısıyla da izin isteklerden en az birinin reddedilme olasılığını artırır.
Varsayılan işleyici olmayı gerektiren izinler
Bazı uygulamalar, arama kayıtları ve SMS mesajlarıyla ilgili hassas kullanıcı bilgilerine erişmek zorundadır. Arama kayıtlarına özgü izinleri talep etmek istiyorsanız uygulamanızı Play Store'da yayınlamanıza rağmen, görüntülenen önce uygulamanızı temel sistem işlevi için varsayılan işleyici olarak ayarlamasına isteyebileceklerini anlamanız gerekir.
Kullanıcılara varsayılan işleyici istemi göstermeyle ilgili yönergeler de dahil olmak üzere varsayılan işleyiciler hakkında daha fazla bilgi için yalnızca varsayılan işleyicilerde kullanılan izinlerle ilgili kılavuzu inceleyin.
Çalıştığınız kitaplıkları tanıma
Uygulamanızda kullandığınız kitaplıklar bazen izin gerektirir. Örneğin,
Örneğin, reklamlar ve analiz kitaplıkları
Zorunlu ayarı uygulamak için LOCATION
izin grubu
işlevi görür. Ancak kullanıcı açısından izin isteği
uygulamanızdan emin olun.
Kullanıcılar aynı işlev için daha az izin kullanan uygulamaları tercih ettiği gibi, geliştiriciler de kitaplıklarını inceleyip gereksiz izin kullanmayan üçüncü taraf SDK'ları seçmelidir. Örneğin,
konum işlevi sunan bir kitaplık kullanıyorsanız,
sizi şu an için FINE_LOCATION
izni istemeyen
konum tabanlı hedefleme işlevini kullanarak.
Arka planda konum erişimini sınırlama
Uygulamanız arka planda çalışırken konum erişimi, uygulamanın temel işlevi açısından kritik öneme sahip olmalı ve kullanıcılara net bir fayda sağlamalıdır.
Her iki izin modelini de test edin
Android 6.0 (API düzeyi 23) ve sonraki sürümlerde kullanıcılar, uygulamayı yüklerken izin vermek yerine uygulama izinlerini çalışma zamanında verir ve iptal eder. Sonuç olarak, uygulamanızı daha geniş bir koşul yelpazesinde test etmeniz gerekir. Android 6.0'dan önce, uygulamanızın hiç çalışmıyorsa uygulama manifest dosyasında beyan ettiği tüm izinlere sahip olduğunu varsayabilirsiniz. Artık kullanıcı, API düzeyinden bağımsız olarak herhangi bir uygulamanın izinlerini etkinleştirebilir veya devre dışı bırakabilir. Uygulamanızın çeşitli izin senaryolarında düzgün çalıştığından emin olmak için test yapmanız gerekir.
Aşağıdaki ipuçları, API düzeyi 23 veya üstünü çalıştıran cihazlarda izinlerle ilgili kod sorunlarını bulmanıza yardımcı olacaktır:
- Uygulamanızın mevcut izinlerini ve ilgili kod yollarını tanımlayın.
- İzin korumalı hizmetler ve veriler genelinde kullanıcı akışlarını test edin.
- Verilen veya iptal edilen izinlerin çeşitli kombinasyonlarını test edin. Örneğin,
Örneğin, bir kamera uygulamasında
CAMERA
,READ_CONTACTS
veACCESS_FINE_LOCATION
inceleyebilirsiniz. Uygulamanın tüm izin yapılandırmalarını sorunsuz bir şekilde işleyebildiğinden emin olmak için uygulamayı bu izinlerin her biri etkin ve devre dışıyken test etmeniz gerekir. - Yönetmek için adb aracını kullanın
komut satırından kaldırın:
- İzinleri ve durumu gruba göre listeleyin:
$ adb shell pm list permissions -d -g
- Bir veya daha fazla izin verin ya da kaldırın:
$ adb shell pm [grant|revoke] <permission-name> ...
- İzinleri ve durumu gruba göre listeleyin:
- Uygulamanızı, izin kullanan hizmetler açısından analiz edin.
Ek kaynaklar
- Android izinleri için Materyal Tasarım yönergeleri
- Android Marshmallow 6.0: İzin İsteme: Bu videoda aşağıdaki konular açıklanmıştır: Android çalışma zamanı izin modeli ve kullanıcılardan izin istemenin doğru yolu izin verir.
- Uygulamanın neden izinlere ihtiyacı olduğunu açıklayın
- Benzersiz tanımlayıcılar için en iyi uygulamalar