Uygulama izinleri en iyi uygulamaları

İ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 ve ACCESS_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> ...
  • Uygulamanızı, izin kullanan hizmetler açısından analiz edin.

Ek kaynaklar