Nowa struktura autouzupełniania w systemie Android O rozwiąże długotrwały problem opóźnień związany z usługami dostępności menedżerów haseł.
Minął już miesiąc od udostępnienia przez Google pierwsza wersja zapoznawcza Androida O dla programistów (czas szybko leci!) i jak w przypadku każdej nowej wersji Androida – jest w czym się zagłębiać. Opublikowaliśmy mnóstwo artykułów już o Androidzie O, ale moim zdaniem jest jedna funkcja, której nie poświęcono tak naprawdę uwagi, na jaką zasługuje: Struktura autouzupełniania.
Automatyczne wypełnianie w Androidzie O
Menedżerowie haseł są obecnie dziesiątkami (choć my jesteśmy częściowo w stosunku do KeePass o otwartym kodzie źródłowym), ale dopiero w przypadku Androida O Google naprawdę oficjalnie wspiera menedżery haseł. W systemie Android O aplikacje innych firm mogą wypełniać listę usług autouzupełniania, które komunikują się z aplikacjami za pośrednictwem nowego środowiska autouzupełniania. Aplikacje korzystające ze standardu Pogląd elementy będą od razu działać z platformą autouzupełniania, chociaż programiści mogą wykonać dodatkowe kroki
zoptymalizuj pod kątem autouzupełniania aby mieć pewność, że dowolny z niestandardowych widoków aplikacji będzie mógł zostać automatycznie wypełniony.Kiedy pojawi się widok autouzupełniany, struktura autouzupełniania wywoła żądanie autouzupełniania. Usługa autouzupełniania odpowiada, odsyłając określone zestawy danych autouzupełniania (takie jak nazwa użytkownika, hasło, adres, numery kart kredytowych itp.), które użytkownik może następnie wybrać. Usługę autouzupełniania określa użytkownik w Ustawieniach -> Aplikacje i powiadomienia -> Aplikacje domyślne -> Aplikacja autouzupełniania.
Powyższe wyjaśnienie nowej struktury autouzupełniania to tylko krótkie podsumowanie tego, co dzieje się zarówno po stronie aplikacji wysyłającej żądanie, jak i po stronie usługi autouzupełniania. Najważniejsze dla Twojego zrozumienia nie są dokładne szczegóły działania autouzupełniania w Androidzie O, ale fakt, że Same aplikacje do zarządzania hasłami nie obsługują już wykrywania, kiedy widok może zostać automatycznie wypełniony.
Rekomendowane lektury: AgileBits pokazuje, jak będzie wyglądać platforma autouzupełniania Androida O
Automatyczne uzupełnianie przed Androidem O
Porównaj to z działaniem autouzupełniania przed Androidem O. Zanim menedżerowie haseł dysponowali jakąkolwiek oficjalną metodą wykrywania, kiedy widok może zostać automatycznie wypełniony aplikacja musiała wdrożyć usługę ułatwień dostępu, aby przeskanować bieżący widok w celu znalezienia opcji automatycznego wypełniania pola.
Jednakże korzystanie z usługi ułatwień dostępu może skutkować znacznym opóźnieniem pod pewnymi warunkami. Opóźnienie związane z usługą dostępności typowego menedżera haseł jest jednak tak widoczne, że popularne usługi, takie jak LastPass, nawet strony wsparcia się w tej kwestii. Te strony pomocy zazwyczaj informują, że jedynym sposobem radzenia sobie z nadmiernymi opóźnieniami spowodowanymi przez nie Usługa ułatwień dostępu polega na wyłączeniu usługi ułatwień dostępu lub przełączeniu się na korzystanie z własnych, niestandardowych danych wejściowych metoda. Tak czy inaczej, tracisz jakąkolwiek zdolność autouzupełniania.
Ale dlaczego dokładnie usługa ułatwień dostępu LastPass lub jakakolwiek inna usługa ułatwień dostępu menedżera haseł wydaje się powodować tak duże opóźnienia? Powodem jest to, że menedżerowie haseł muszą wykorzystywać usługi ułatwień dostępu do wykrywania pól wejściowych. Usługa dostępności atrybuty są zdefiniowane w Plik zasobów XML w pliku APK, abyśmy mogli zobaczyć, jak działa Usługa, dekompilując plik APK.
Poniżej znajduje się plik zasobów pobrany z dekompilacji pakietu APK LastPass:
"@string/accessibility_service_description"
android: accessibilityEventTypes="typeViewFocused|typeWindowContentChanged"
android: accessibilityFeedbackType="feedbackGeneric"
android: notificationTimeout="200"
android: accessibilityFlags="flagReportViewIds"
android: canRetrieveWindowContent="true"
android: canRequestEnhancedWebAccessibility="true"
xmlns: andro />
Z tego możemy zebrać następujące informacje: Usługa dostępności LastPass żąda dwóch typów zdarzeń do monitorowania - TYPE_VIEW_FOCUSED i TYPE_WINDOW_CONTENT_CHANGED. Robi to, ponieważ musi wiedzieć, kiedy zawartość aplikacji/strony internetowej zmienia się lub staje się aktywna, a następnie pobiera bieżącą zawartość okna, aby wyszukać pola umożliwiające wprowadzenie hasła. Ponieważ jednak usługa stale robi to w przypadku dwóch niezwykle często uruchamianych zdarzeń dostępności, powoduje to opóźnienia. Aby uzyskać bardziej szczegółową dyskusję na temat tego, w jaki sposób usługi dostępności mogą powodować opóźnienia, odsyłam do mojego poprzedniego artykułu na ten temat.
Rekomendowane lektury: „Praca zgodnie z przeznaczeniem” — badanie opóźnień w dostępności systemu Android
Android O upiecze dwie pieczenie na jednym ogniu
Przed Androidem O niewiele mogli zrobić twórcy menedżerów haseł, aby złagodzić to opóźnienie. Dzieje się tak, ponieważ menedżerowie haseł nie mają możliwości sprawdzenia, kiedy na ekranie znajduje się automatycznie wypełniane pole wejściowe, bez umożliwienia usłudze ułatwień dostępu ciągłego ich monitorowania. Jednak dzięki nowej strukturze autouzupełniania w systemie Android O menedżerowie haseł mogą teraz wycofać usługi ułatwień dostępu. Zamiast tego aplikacje, które same wymagają wprowadzenia danych, poproszą strukturę autouzupełniania o wywołanie usługi autouzupełniania, która następnie wyśle dane. Dzięki tej nowej strukturze nie tylko wprowadzanie haseł stanie się znacznie łatwiejsze dla użytkowników, ponieważ nie muszą już polegać na dodatkową metodę wprowadzania, ale opóźnienie związane z włączeniem usług ułatwień dostępu menedżerów haseł będzie problemem przeszłość.
Wiem, że dla niektórych z Was ten fakt może nie być przełomowy, ale pomyślałem, że skoro dyskusja wokół Usługi Dostępności była tak cicha, to może warto ożywić ten temat. Trochę materiału do przemyśleń w ten weekend!
Co sądzisz o nowej strukturze autouzupełniania Androida O? Daj nam znać w komentarzach poniżej!