Sprawdzone metody dotyczące uprawnień aplikacji

Prośby o uprawnienia chronią informacje poufne dostępne na urządzeniu i powinny być używane tylko wtedy, gdy dostęp do informacji jest niezbędny do działania aplikacji. W tym dokumencie znajdziesz wskazówki, jak uzyskać te same (lub lepsze) funkcje bez konieczności uzyskiwania dostępu do takich informacji. Nie jest to wyczerpujące omówienie działania uprawnień w systemie operacyjnym Android.

Ogólne informacje o uprawnieniach na Androidzie znajdziesz w tym artykule. Szczegółowe informacje o tym, jak korzystać z uprawnień w kodzie, znajdziesz w artykule Prośba o uprawnienia aplikacji.

Uprawnienia na Androidzie 6.0 i nowszym

W Androidzie 6.0 (API na poziomie 23) i nowszych aplikacje mogą prosić użytkownika o uprawnienia w czasie działania, a nie przed instalacją. Dzięki temu aplikacje mogą prosić o uprawnienia, gdy faktycznie wymagają usług lub danych chronionych przez te usługi. Chociaż nie zmienia to (koniecznie) ogólnego działania aplikacji, wprowadza kilka zmian związanych ze sposobem przetwarzania danych wrażliwych użytkownika:

Zwiększony kontekst sytuacyjny

Użytkownicy są proszeni o przyznanie uprawnień w czasie działania aplikacji, w kontekście funkcji objętych tymi grupami uprawnień. Użytkownicy są bardziej wyczuleni na kontekst, w którym prosisz o uprawnienia. Jeśli występuje rozbieżność między tym, o co prosisz, a przeznaczeniem aplikacji, tym ważniejsze jest, aby szczegółowo wyjaśnić użytkownikowi, dlaczego prosisz o uprawnienia. W miarę możliwości wyjaśnij swoją prośbę zarówno w momencie jej wysłania, jak i w oknie, które pojawi się, gdy użytkownik ją odrzuci.

Aby zwiększyć prawdopodobieństwo zaakceptowania prośby o uprawnienia, wyświetlaj ją tylko wtedy, gdy wymagana jest konkretna funkcja. Na przykład prośba o dostęp do mikrofonu powinna się pojawiać tylko wtedy, gdy użytkownik kliknie przycisk mikrofonu. Użytkownicy chętniej zezwalają na uprawnienia, których się spodziewają.

Większa elastyczność w przyznawaniu uprawnień

Użytkownicy mogą odmawiać dostępu do poszczególnych uprawnień w momencie, gdy są o nie proszenii w ustawieniach, ale mogą być zaskoczeni, gdy w wyniku tego niektóre funkcje przestaną działać. Warto monitorować, ilu użytkowników odmawia przyznania uprawnień (np. za pomocą Google Analytics), aby móc zmodyfikować aplikację i uniknąć zależności od tych uprawnień lub lepiej wyjaśnić, dlaczego są one potrzebne do prawidłowego działania aplikacji. Musisz też zadbać o to, aby aplikacja obsługiwała wyjątki, gdy użytkownicy odrzucają prośby o przyznanie uprawnień lub wyłączają uprawnienia w ustawieniach.

Zwiększone obciążenie transakcyjne

Użytkownicy są proszeni o przyznanie dostępu do grup uprawnień pojedynczo, a nie jako zestawu. Dlatego niezwykle ważne jest, aby zminimalizować liczbę uprawnień, o które prosisz. Zwiększa to obciążenie użytkownika związane z przyznawaniem uprawnień, a tym samym prawdopodobieństwo odrzucenia co najmniej jednego żądania.

Uprawnienia, które wymagają ustawienia aplikacji jako domyślnego modułu obsługi

Niektóre aplikacje wymagają dostępu do informacji poufnych użytkownika związanych z rejestrami połączeń i SMS-ami. Jeśli chcesz poprosić o uprawnienia dostępu do rejestru połączeń i SMS-ów oraz opublikować aplikację w Sklepie Play, przed poproszeniem o te uprawnienia w czasie działania musisz poprosić użytkownika o ustawienie Twojej aplikacji jako domyślnego modułu obsługi podstawowej funkcji systemu.

Więcej informacji o domyślnych modułach obsługi, w tym wskazówki dotyczące wyświetlania użytkownikom prośby o wybranie domyślnego modułu obsługi, znajdziesz w przewodniku po uprawnieniach używanych tylko w domyślnych modułach obsługi.

Poznaj biblioteki, z którymi pracujesz

Czasami uprawnienia są wymagane przez biblioteki używane w aplikacji. Na przykład biblioteki reklamowe i analityczne mogą wymagać dostępu do LOCATION, aby zaimplementować wymagane funkcje. Z punktu widzenia użytkownika prośba o uprawnienia pochodzi jednak z Twojej aplikacji, a nie z biblioteki.

Użytkownicy wybierają aplikacje, które do realizacji tych samych funkcji wymagają mniej uprawnień. Deweloperzy powinni więc sprawdzać biblioteki i wybierać pakiety SDK innych firm, które nie używają niepotrzebnych uprawnień. Jeśli na przykład używasz biblioteki, która udostępnia funkcje związane z lokalizacją, nie wysyłaj prośby o uprawnienia FINE_LOCATION, chyba że korzystasz z funkcji kierowania na podstawie lokalizacji.

Ograniczanie dostępu do lokalizacji w tle

Gdy aplikacja działa w tle, dostęp do lokalizacji powinien być niezbędny do działania jej podstawowej funkcji i przynosić użytkownikom wyraźne korzyści.

Testowanie obu modeli uprawnień

W Androidzie 6.0 (poziom interfejsu API 23) i nowszych użytkownicy przyznają i cofają uprawnienia aplikacji w czasie jej działania, a nie podczas instalacji. W związku z tym musisz przetestować aplikację w szerszym zakresie warunków. Przed Androidem 6.0 można było założyć, że jeśli aplikacja działa, ma wszystkie uprawnienia zadeklarowane w pliku manifestu. Użytkownik może teraz włączać i wyłączać uprawnienia w dowolnej aplikacji, niezależnie od poziomu interfejsu API. Przeprowadź testy, aby sprawdzić, czy aplikacja działa prawidłowo w różnych scenariuszach związanych z uprawnieniami.

Poniższe wskazówki pomogą Ci znaleźć problemy z kodem związane z uprawnieniami na urządzeniach z API na poziomie 23 lub wyższym:

  • Określ bieżące uprawnienia aplikacji i powiązane ścieżki kodu.
  • Testuj ścieżki użytkowników w usługach i danych chronionych przez uprawnienia.
  • Testuj różne kombinacje przyznanych i cofniętych uprawnień. Na przykład aplikacja aparatu może zawierać w pliku manifestu te funkcje: CAMERA, READ_CONTACTSACCESS_FINE_LOCATION. Przetestuj aplikację z włączonymi i wyłączonymi uprawnieniami, aby upewnić się, że działa prawidłowo w każdej konfiguracji.
  • Użyj narzędzia adb, aby zarządzać uprawnieniami z poziomu wiersza poleceń:
    • Wyświetl uprawnienia i stan według grupy:
      $ adb shell pm list permissions -d -g
    • Przyznaj lub cofnij co najmniej 1 uprawnienie:
      $ adb shell pm [grant|revoke] <permission-name> ...
  • Analizuj aplikację pod kątem usług, które korzystają z uprawnień.

Dodatkowe materiały