Best Practices für App-Berechtigungen

Berechtigungsanfragen schützen vertrauliche Informationen auf einem Gerät und sollte nur verwendet werden, wenn der Zugriff auf Informationen der App funktionieren. Dieses Dokument enthält Tipps dazu, ohne Zugriff auf dieselben oder bessere Funktionen auf solche Informationen zugreifen; Es ist keine abschließende Diskussion darüber, im Android-Betriebssystem.

Einen allgemeinen Überblick über die Android-Berechtigungen finden Sie in der Berechtigungsübersicht. Weitere Informationen zum Arbeiten mit Berechtigungen in Ihrem Code Siehe App-Berechtigungen anfordern.

Berechtigungen unter Android 6.0 und höher

Unter Android 6.0 (API-Ebene 23) und höher können Apps Berechtigungen nicht mehr vor der Installation, sondern erst zur Laufzeit vom Nutzer anfordern. Dadurch können Apps Berechtigungen anfordern, wenn die App die Dienste oder Daten benötigt durch die Dienste geschützt sind. Dadurch ändert sich die gesamte App zwar nicht (unbedingt) bringt es einige Änderungen mit sich, die die Art und Weise betreffen, wie sensible Nutzerdaten behandelt wird:

Mehr situativer Kontext

Nutzer werden während der Laufzeit, im Kontext Ihrer App, um die Berechtigung gebeten, auf die Funktionen zugreifen, die von diesen Berechtigungsgruppen abgedeckt sind. Nutzer sind empfindlicher in Bezug auf den Kontext, in dem die Berechtigung angefordert wird. Wenn die angeforderte Berechtigung nicht zum Zweck Ihrer App passt, ist es noch wichtiger, den Nutzern ausführlich zu erklären, warum Sie die Berechtigung anfordern. Sie sollten Ihre Anfrage nach Möglichkeit sowohl bei der Anfrage als auch in einem Folgedialog erläutern, wenn der Nutzer die Anfrage ablehnt.

Um die Wahrscheinlichkeit zu erhöhen, dass eine Berechtigungsanfrage akzeptiert wird, wenn eine bestimmte Funktion benötigt wird. Zum Beispiel nur nach dem Mikrofon fragen. wenn ein Nutzer auf die Mikrofonschaltfläche klickt. Nutzer sind eher bereit, eine Berechtigung zuzulassen, die sie erwarten.

Mehr Flexibilität beim Gewähren von Berechtigungen

Nutzer können den Zugriff auf einzelne Berechtigungen bei der Anfrage und in den Einstellungen verweigern. Sie sind aber möglicherweise überrascht, wenn die Funktion dadurch nicht funktioniert. Es ist empfehlenswert, zu beobachten, wie viele Nutzer Berechtigungen ablehnen (z. B. mit Google Analytics). So können Sie Ihre App entweder so umstrukturieren, dass sie nicht mehr von dieser Berechtigung abhängt, oder eine bessere Erklärung dafür liefern, warum Sie die Berechtigung für die ordnungsgemäße Funktion Ihrer App benötigen. Ich dass Ihre App Ausnahmen verarbeitet, wenn Nutzer in den Einstellungen Berechtigungsanfragen ablehnen oder Berechtigungen deaktivieren.

Erhöhter Transaktionsaufwand

Nutzer werden aufgefordert, den Zugriff für Berechtigungsgruppen einzeln und nicht als Set zu gewähren. Dieses ist es sehr wichtig, die Anzahl der Berechtigungen, die Sie benötigen, anfragen. Dies erhöht den Aufwand beim Erteilen von Berechtigungen für den Nutzer, sodass erhöht die Wahrscheinlichkeit, dass mindestens eine der Anfragen abgelehnt wird.

Berechtigungen, die die Umstellung auf einen Standard-Handler erfordern

Einige Apps benötigen Zugriff auf vertrauliche Nutzerdaten im Zusammenhang mit Anruflisten und SMS. Wenn Sie die Berechtigungen für die Anrufliste anfordern möchten und SMS-Nachrichten senden und Ihre App im Play Store veröffentlichen, müssen Sie die Nutzer Ihre App als Standard-Handler für eine zentrale Systemfunktion festzulegen, bevor die diese Laufzeitberechtigungen anfordern.

Weitere Informationen zu Standard-Handlern, einschließlich einer Anleitung zum Anzeigen eines Standard-Handler-Aufforderung für Nutzer, siehe Leitfaden zu Berechtigungen, die nur in Standard-Handler.

Wissen, mit welchen Bibliotheken Sie arbeiten

Manchmal sind für die Bibliotheken, die Sie in Ihrer App verwenden, Berechtigungen erforderlich. Für Anzeigen- und Analysebibliotheken benötigen möglicherweise Zugriff auf die LOCATION Berechtigungsgruppe zum Implementieren der erforderlichen Funktionalität. Aus Sicht des Nutzers stammt die Berechtigungsanfrage jedoch von Ihrer App, nicht von der Bibliothek.

Genauso wie Nutzer Apps auswählen, die für denselben Zweck sollten Entwickler ihre Bibliotheken überprüfen und Drittanbieter-SDKs verwenden, die keine unnötigen Berechtigungen nutzen. Wenn beispielsweise wenn Sie eine Bibliothek mit Standortfunktionen nutzen, fordern nur dann die Berechtigung „FINE_LOCATION“ an, mit Funktionen für die geografische Ausrichtung.

Hintergrundzugriff auf Standort beschränken

Wenn Ihre App im Hintergrund ausgeführt wird, kann der Zugriff auf Der Standort sollte für die Hauptfunktionen der App und einen klaren Vorteil für die Nutzenden aufzeigen.

Für beide Berechtigungsmodelle testen

Ab Android 6.0 (API-Level 23) gewähren oder widerrufen Nutzer Apps Berechtigungen während der Laufzeit zu erteilen, anstatt dies beim Installieren der App zu tun. Als müssen Sie Ihre App unter einer größeren Bandbreite von Bedingungen testen. Vorher Android 6.0 haben, könnten Sie davon ausgehen, dass Ihre App alle Berechtigungen hat, die im App-Manifest deklariert sind. Die Nutzenden kann Berechtigungen für alle Apps unabhängig vom API-Level aktivieren oder deaktivieren. Es empfiehlt sich, Tests durchzuführen, um sicherzustellen, dass Ihre App auf verschiedenen Berechtigungsszenarien.

Die folgenden Tipps helfen dir, berechtigungsbezogene Codeprobleme zu finden auf Geräten mit API-Level 23 oder höher:

  • Ermitteln Sie die aktuellen Berechtigungen Ihrer App und die zugehörigen Codepfade.
  • Nutzerflüsse für Dienste und Daten mit Berechtigungen testen
  • Testen Sie verschiedene Kombinationen gewährter oder widerrufener Berechtigungen. Für Eine Kamera-App könnte z. B. CAMERA, READ_CONTACTS und ACCESS_FINE_LOCATION in seinem Manifest. Du solltest die App mit jeder dieser Berechtigungen testen aktiviert und deaktiviert werden, damit die App alle Berechtigungen reibungslos zu gestalten.
  • Mit dem Tool adb können Sie Berechtigungen über die Befehlszeile verwalten:
    • Berechtigungen und Status nach Gruppe auflisten:
      $ adb shell pm list permissions -d -g
    • Gewähren oder widerrufen Sie eine oder mehrere Berechtigungen:
      $ adb shell pm [grant|revoke] <permission-name> ...
  • App auf Dienste analysieren, die Berechtigungen verwenden.

Weitere Informationen