Google wysyła e-maile z ostrzeżeniem dla programistów, aby nie korzystali z usług ułatwień dostępu niezgodnie z przeznaczeniem, w przeciwnym razie ich aplikacje zostaną usunięte ze Sklepu Play.
Aktualizacja: LastPass właśnie odpowiedział do tej wiadomości i stwierdza, że „nie będzie to miało natychmiastowego wpływu” na ich aplikacje na Androida. Czas pokaże, czy oznacza to, że inne wnioski zostaną złagodzone.
Niektóre z najbardziej innowacyjnych aplikacji w Sklepie Play wykorzystują interfejsy API w sposób, jakiego Google nigdy nie planował. Istnieją aplikacje, które mogą zmienić przypisanie klawiszy głośności, aby pomijać utwory muzyczne, nagrywać i odtwarzać dane wejściowe dotykowe stron internetowych lub gier, a nawet zapewniają alternatywne klawisze nawigacyjne, dzięki którym możesz korzystać z całego urządzenia ekran. Wszystkie te przykłady, o których właśnie wspomniałem, opierają się na interfejsach API dostępności systemu Android. Ale to może wkrótce zmienić, ponieważ zespół Sklepu Google Play wysyła e-maile do programistów, informując ich, że mogą
nie wdrażają już usług ułatwień dostępu, chyba że będą postępować zgodnie z wytycznymi Google.Co to jest usługa dostępności?
Aby zrozumieć, dlaczego jest to istotne, musimy najpierw wyjaśnić, czym jest dostępność w odniesieniu do Androida. Ogólnie dostępność oznacza zwiększenie dostępności aplikacji na Androida dla użytkowników z pewnymi niepełnosprawnościami, na przykład osób niedowidzących. Chociaż w najlepszym interesie każdego programisty leży, aby jego aplikacje były bardziej dostępne dla użytkowników niepełnosprawnych, istnieją specjalna klasa aplikacji, które mają na celu zwiększenie użyteczności wszystkich aplikacji na Androida dla użytkowników niepełnosprawności. Nazywa się to usługami dostępności.
Usługa dostępności, powszechnie nazywana a11y, to aplikacja, do której system może przekazywać określone informacje w zależności od tego, jakie wydarzenia rejestry usługi dostępności, których należy słuchać. Aplikacja, która chce wdrożyć usługę dostępności, musi dodać plik android.permission.BIND_ACCESSIBILITY_SERVICE
uprawnienia do pliku AndroidManifest, aby tylko system mógł powiązać się z usługą aplikacji.
Na przykład, jeśli usługa dostępności jest zbudowana tak, aby nasłuchiwać TYPE_VIEW_CLICKED
zdarzeń, to usługa otrzyma z systemu informację o wszelkich przyciskach, które użytkownik mógł nacisnąć. Usługa ułatwień dostępu może również reagować i wykorzystywać określone gesty i zdarzenia kluczowe, zanim inne aplikacje je otrzymają. Wreszcie usługa ułatwień dostępu może również wstrzyknąć określone zdarzenia kluczowe, takie jak przycisk Wstecz, podzielony ekran lub przycisk ostatnich aplikacji.
Zatem usługi dostępności mogą być niezwykle potężny i użyteczny. Kilka najpopularniejszych, innowacyjnych aplikacji w sklepie Google Play polega na a11y w wykonywaniu swoich obowiązków. Oto tylko kilka przykładów, które wpadły mi do głowy:
- Automatyczne wprowadzanie - przechwytuj KeyEvents i wykonuj gesty dotykania/przeciągania
- Mapa przycisków - przechwycić KeyEvents i zmapować je na inne KeyEvents
- Zazielenianie - automatycznie hibernuje aplikacje, wymuszając ich zamknięcie przed wyłączeniem ekranu
- Wprowadzanie+ - wykryj, kiedy aplikacja klawiatury jest otwarta, aby wyświetlić pływający przycisk akcji
- LastPass - skanuj strony w poszukiwaniu wpisów nazwy użytkownika/hasła (konieczne przed Androidem Oreo)
- Szybko przełącz - wyślij KeyEvent dla przycisku Wstecz
- Zadanie - wykrywaj, kiedy aplikacje są otwarte, dzięki czemu możesz wykonać dowolną akcję zdefiniowaną przez użytkownika
- Typ Maszyna - nagrywaj cały wprowadzony tekst, aby nigdy nie stracić żadnego wprowadzonego tekstu
Żadna z tych aplikacji nie wykorzystuje a11y w sposób zamierzony przez Google, czyli pomagający użytkownikom niepełnosprawnym. Założę się, że zdecydowana większość aplikacji wdrażających usługę ułatwień dostępu robi to w przypadku funkcji wykraczających poza zakres kompetencji Google. Ale na tym właśnie polega piękno Androida i interfejsów API, takich jak dostępność — Google zwykle nie ogranicza tego, co programiści mogą, a czego nie mogą zrobić. Wydaje się jednak, że to luźne podejście do korzystania z usług ułatwień dostępu zmienia się wraz z Google Play Zespół sklepu wysyła e-maile do programistów, ostrzegając ich o nadchodzących zmianach w ich zasadach dotyczących 11 lat.
Co dokładnie robi Google?
Firma informuje programistów, że jeśli ich aplikacja korzysta z usługi ułatwień dostępu z jakiegokolwiek powodu innego niż pomoc użytkownikom niepełnosprawnym, wówczas muszą wycofać możliwość korzystania z tego uprawnienia w ciągu 30 dni, w przeciwnym razie ich aplikacja zostanie usunięta ze Sklepu Play. Niezastosowanie się do tego wymogu może skutkować naruszeniem konta programisty w Sklepie Play, co może ostatecznie doprowadzić do zamknięcia konta.
W przypadku kilku aplikacji, które korzystają z a11y, aby pomóc użytkownikom niepełnosprawnym, Google twierdzi, że ci programiści wystarczy po prostu dodać widoczne dla użytkownika powiadomienie o powodzie, dla którego aplikacja tego potrzebuje pozwolenie. Jednakże, jak wspomniałem wcześniej, usługi ułatwień dostępu są używane znacznie częściej w aplikacjach, które ostatecznie naruszają tę nową politykę.
Pełny e-mail wysłany do programistów
Witam programistów w ****,
Kontaktujemy się z Tobą, ponieważ Twoja aplikacja **** o nazwie pakietu **** żąda „pozwolenie na Androida. BIND_ACCESSIBILITY_SERVICE.' Aplikacje żądające usług ułatwień dostępu powinny być używane wyłącznie w celu ułatwienia użytkownikom niepełnosprawnym korzystania z urządzeń i aplikacji z Androidem. Twoja aplikacja musi być zgodna z naszymi Uprawnienia naszą politykę prywatności i wymogi dotyczące ujawniania jawnych informacji Dane użytkownika polityka.
Konieczne są działania: jeśli jeszcze tego nie robisz, musisz wyjaśnić użytkownikom, w jaki sposób Twoja aplikacja korzysta z „pozwolenie na Androida. BIND_ACCESSIBILITY_SERVICE', aby pomóc użytkownikom niepełnosprawnym korzystać z urządzeń i aplikacji z Androidem. Aplikacje, które w ciągu 30 dni nie spełnią tego wymogu, mogą zostać usunięte z Google Play. Możesz też usunąć wszelkie prośby o usługi ułatwień dostępu w swojej aplikacji. Możesz także cofnąć publikację aplikacji.
Jeśli chcesz wprowadzić zmiany w swoich aplikacjach, wykonaj następujące kroki:
- Przeczytaj przez Uprawnienia I Dane użytkownika aby uzyskać więcej szczegółów, i upewnij się, że Twoja aplikacja jest zgodna ze wszystkimi zasadami wymienionymi w sekcji Zasady programu dla programistów.
- Jeśli nie potrzebujesz uprawnienia BIND_ACCESSIBILITY_SERVICE w swojej aplikacji lub uprawnienia są wykorzystywane do celów innych niż pomaganie użytkownikom niepełnosprawnym w korzystaniu z urządzeń i aplikacji z Androidem:
- Usuń prośbę o to uprawnienie z manifestu aplikacji.
- Zaloguj się w Konsoli Play i prześlij zmodyfikowany, zgodny z zasadami plik APK.
- Lub, jeśli potrzebujesz uprawnienia BIND_ACCESSIBILITY_SERVICE w swojej aplikacji, aby pomóc użytkownikom niepełnosprawnym korzystać z urządzeń i aplikacji z Androidem:
- Umieść następujący fragment w opisie informacji o aplikacji: „Ta aplikacja korzysta z usług ułatwień dostępu”.
- Zanim poprosisz użytkownika o włączenie tego uprawnienia w aplikacji, udostępnij widoczne dla użytkownika informacje na temat tego użycia. Twoje ujawnienie musi spełniać każdy z poniższych wymogów:
- Ujawnienie informacji należy dokonać za pośrednictwem Androida: podsumowanie I androida: opis elementy klasy AccessibilityServiceInfo
- Ujawnienie musi opisywać funkcjonalność, którą uprawnienie usługi ułatwień dostępu umożliwia Twojej aplikacji. Każda funkcja używana w żądaniu usługi ułatwień dostępu musi zostać zadeklarowana w ujawnieniu wraz z uzasadnieniem.
Możesz też cofnąć publikację aplikacji.
Wszystkie naruszenia są śledzone. Poważne lub powtarzające się naruszenia dowolnego rodzaju spowodują zamknięcie Twojego konta programisty oraz zbadanie i możliwe zamknięcie powiązanych kont Google.
Jeśli zapoznałeś się z naszymi zasadami i uważasz, że mogliśmy popełnić błąd, skontaktuj się z naszym działem zespół wsparcia polityki. Jeden z moich kolegów skontaktuje się z Tobą w ciągu 2 dni roboczych.
Pozdrowienia,
Zespół sprawdzający Google Play
Czytaj więcej
Dlaczego Google usuwa usługi ułatwień dostępu ze Sklepu Play?
Chociaż korzystanie z usług ułatwień dostępu jest wiadomo, że powoduje spore opóźnienia, prawdziwy powód, dla którego Google zaczyna atakować te aplikacje, jest prawdopodobnie związany z rosnącym problemem exploitów wykorzystujących a11y. Chociaż aplikacje, o których wspomniałem powyżej, wykorzystują a11y do pożytecznych celów, złośliwi programiści mogą z łatwością je wykorzystać do złych celów. Na przykład usługa dostępności można wykorzystać do wdrożenia keyloggera, ataku ransomware lub exploita phishingowego.
Wysiłki Google mające na celu ochronę użytkowników przed złośliwymi usługami ułatwień dostępu skupiają się głównie na ujawnianiu informacji. Obecnie włączenie usługi dostępności, która rejestruje się na określone zdarzenia, takie jak TYPE_VIEW_TEXT_CHANGED
spowoduje wyświetlenie okna dialogowego z ostrzeżeniem, że aplikacja może ukraść Twoje hasła. Można by pomyśleć, że taka wiadomość skutecznie zapobiegałaby nieodpowiedzialnemu przyznawaniu aplikacji przez użytkowników. Jednakże istnieje wiele udokumentowanych przypadków, w których aplikacje nakłaniają użytkowników do przyznania 11-letniego kredytu. Niektóre ataki idą jeszcze dalej, np Exploit Cloak and Dagger I Ataki typu Toast Message Overlay które w inżynierii społecznej zachęcają użytkownika do przyznania mu 11 lat, fałszywie przedstawiając na ekranie to, z czym wchodzi w interakcję.
Tego typu ataki są skuteczne na zdecydowanej większości urządzeń z Androidem. Google poczynił znaczne postępy w zapobieganiu atakom typu overlay lub toast (co widać w AOSP, jeśli szukasz a11y), ale sytuacja doszła do tego, że Google zdecydował, że lepiej będzie ograniczyć korzystanie z usług ułatwień dostępu całkowicie. To ma sens, ale tak naprawdę do bani ponieważ to posunięcie zabije funkcjonalność wielu innowacyjnych aplikacji.
Co mogą zrobić programiści?
Niestety, tam niewiele mogą zrobić programiści w odpowiedzi na te zmiany. Programiści mogą albo zastosować się do żądań Google, usuwając usługę ułatwień dostępu, albo spotkać się z groźbą usunięcia ich aplikacji i ewentualnego zamknięcia konta. Samo dodanie informacji o tym, dlaczego ich aplikacja korzysta z a11y, zadziałałoby tylko wtedy, gdyby ich aplikacja była zgodnie z prawem miała na celu pomaganie użytkownikom niepełnosprawnym, co nie opisuje większości aplikacji obecnie korzystających z a11y.
Refaktoryzacja aplikacji tak, aby nie korzystały już z usługi ułatwień dostępu, jest możliwa w przypadku niektórych, ale nie wszystkich, aplikacji, o których wspomnieliśmy. Menedżerowie haseł, tacy jak LastPass, mogą migruj do struktury autouzupełniania, ale tylko wtedy, gdy użytkownik korzysta z systemu Android 8.0 Oreo lub nowszego. Jeśli aplikacja używa a11y do monitorowania, kiedy inne aplikacje są otwarte, zamiast tego można ją napisać za pomocą usługi odpytywania przy użyciu interfejsu API UsageStats. Aplikacje takie jak Tasker mogą przetrwać taką zmianę. Inne, takie jak Button Mapper i AutoInput, nie mają szczęścia — bez roota nie ma dobrego sposobu na przechwycenie KeyEvents.
Choć zdajemy sobie sprawę z niebezpieczeństwa, jakie niesie ze sobą umożliwienie złośliwej aplikacji dostępu do interfejsów API ułatwień dostępu, szkoda, że Google kastruje niektóre naprawdę przydatne aplikacje. Mamy nadzieję, że zasady określone przez Google zostaną odwrócone lub po prostu twierdzą, że zostały źle zinterpretowane. W obecnej formie treść e-maila jest całkiem jasna – postępuj zgodnie z naszymi wytycznymi lub opuść Sklep Play. To ponure przypomnienie, że Google ma pełną władzę nad tym, jakie aplikacje powinny znajdować się w Sklepie Play, i w każdej chwili może wyciągnąć spod Ciebie dywanik.
Aktualizacja 1: Myląca dokumentacja programisty
Dokumenty programistyczne Google dla budowanie usługi dostępności wydają się zaprzeczać nowemu podejściu zespołu Sklepu Google Play. W chwili pisania tego tekstu strona miała następujący tekst:
Usługa ułatwień dostępu to aplikacja zapewniająca ulepszenia interfejsu użytkownika, aby pomóc użytkownikom niepełnosprawnym lub tym, którzy mogą chwilowo nie być w stanie w pełni korzystać z urządzenia. Na przykład użytkownicy, którzy prowadzą samochód, opiekują się małym dzieckiem lub biorą udział w bardzo głośnej imprezie, mogą potrzebować dodatkowej lub alternatywnej informacji zwrotnej z interfejsu.
Co więcej, jeśli porównasz sformułowania na stronie z wersja archiwalna strony z lipca, przekonasz się, że nie ma notatki o tworzeniu usług ułatwień dostępu wyłącznie w celu pomocy użytkownikom niepełnosprawnym.
Dziękujemy João Dias za skontaktowanie się z nami i przekazanie tych informacji.