Android O okvir za automatsko popunjavanje konačno će riješiti dugotrajni problem zaostajanja s upraviteljima zaporki

Novi okvir za automatsko popunjavanje u Androidu O riješit će dugotrajni problem kašnjenja povezan s uslugama pristupačnosti upravitelja zaporki.

Već je prošlo mjesec dana otkako je Google objavio prvi Android O Developer Preview (vrijeme sigurno brzo leti!), i kao sa svakom novom verzijom Androida - postoji mnogo toga za istražiti. Objavili smo dosta članaka već o Androidu O, ali postoji jedna značajka za koju smatram da nije dobila pozornost koju zaslužuje: Okvir za automatsko popunjavanje.

Automatsko popunjavanje u Androidu O

Upravitelji lozinki danas su desetina desetina (iako smo djelomično u odnosu na open-source KeePass), ali tek s Androidom O Google doista službeno podržava upravitelje zaporki. Uz Android O, aplikacije trećih strana mogu ispuniti popis usluge automatskog popunjavanja, koja komunicira s aplikacijama putem novog okvira za automatsko popunjavanje. Aplikacije koje koriste standard Pogled Elementi će raditi s okvirom za automatsko popunjavanje odmah nakon postavljanja, iako postoje dodatni koraci koje programeri mogu poduzeti 

optimizirati za automatsko popunjavanje kako bi se osiguralo da se svaki od prilagođenih prikaza aplikacije može automatski ispuniti.

Kada prikaz koji se može automatski popuniti dođe u fokus, okvir za automatsko popunjavanje će pozvati zahtjev za automatsko popunjavanje. Usluga automatskog popunjavanja odgovara slanjem određenih skupova podataka za automatsko popunjavanje (kao što su korisničko ime, lozinka, adresa, brojevi kreditne kartice itd.) koje korisnik zatim može odabrati. Uslugu automatskog popunjavanja određuje korisnik u Postavkama --> Aplikacije i obavijesti --> Zadane aplikacije --> Aplikacija za automatsko popunjavanje.

Aplikacija za automatsko popunjavanje u sustavu Android O. Zasluge: Lastpass.

Gornje objašnjenje novog okvira automatskog popunjavanja samo je kratki sažetak onoga što se događa na strani aplikacije koja zahtijeva i usluge automatskog popunjavanja. Ono što je najvažnije za vaše razumijevanje ovdje nisu točni detalji o tome kako automatsko popunjavanje radi u Androidu O, već činjenica da same aplikacije za upravljanje lozinkama više ne otkrivaju kada se View može automatski ispuniti.


Preporučena literatura: AgileBits pokazuje kako će izgledati Autofill Framework za Android O


Automatsko popunjavanje prije Androida O

Usporedite to s načinom na koji je automatsko popunjavanje funkcioniralo prije Androida O. Prije nego što su upravitelji lozinki imali bilo kakvu službenu metodu za otkrivanje kada se View može automatski ispuniti, svaki aplikacija je morala implementirati uslugu pristupačnosti za skeniranje trenutnog prikaza kako bi pronašla mogućnost automatskog popunjavanja polja.

Međutim, korištenje usluge pristupačnosti može dovesti do značajnog zaostajanja pod određenim uvjetima. Kašnjenje povezano s uslugom pristupačnosti vašeg tipičnog upravitelja lozinki toliko je očito da popularne usluge kao što je LastPass čak imaju stranice za podršku gore u vezi s problemom. Ove stranice za podršku obično vam govore da je vaš jedini izlaz za suočavanje s prekomjernim kašnjenjem uzrokovanim Usluga pristupačnosti je ili onemogućiti uslugu pristupačnosti ili se prebaciti na korištenje vlastitog prilagođenog unosa metoda. U svakom slučaju, gubite bilo kakvu mogućnost automatskog popunjavanja.

Ali zašto se čini da LastPassova usluga pristupačnosti ili bilo koja druga usluga pristupačnosti upravitelja lozinki uzrokuje toliko kašnjenja? Razlog je taj što ovi upravitelji lozinki moraju koristiti usluge pristupačnosti za otkrivanje polja za unos. Usluga pristupačnosti atributi definirani su u an XML datoteka resursa unutar APK-a, tako da možemo vidjeti kako usluga radi dekompiliranjem APK datoteke.

Ispod je datoteka resursa preuzeta dekompilacijom LastPass APK-a:


"@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 />

Iz ovoga možemo prikupiti sljedeće informacije: LastPassova usluga pristupačnosti zahtijeva dvije vrste događaja za praćenje - TYPE_VIEW_FOCUSED i TYPE_WINDOW_CONTENT_CHANGED. To čini jer treba znati kada se sadržaj aplikacije/web-stranice promijeni ili dođe u fokus, a zatim dohvaća trenutni sadržaj prozora kako bi potražio sva polja za unos lozinke. No budući da usluga to stalno radi na dva izuzetno često aktivirana događaja pristupačnosti, to rezultira kašnjenjem. Za detaljniju raspravu o tome kako usluge pristupačnosti mogu uzrokovati kašnjenje, upućujem vam svoj prethodni članak o tome.


Preporučena literatura: "Radi kako je predviđeno" - Istraživanje kašnjenja pristupačnosti Androida


Android O ubija dvije muhe jednim udarcem

Prije Androida O, programeri upravitelja lozinki nisu mogli puno učiniti da ublaže ovo zaostajanje. To je zato što upravitelji lozinki nisu mogli saznati kada je polje za unos koje se može automatski popuniti na zaslonu, a da nisu omogućili usluzi pristupačnosti da ih stalno prati. Ali zahvaljujući novom okviru za automatsko popunjavanje u Androidu O, ovi upravitelji lozinki sada mogu povući svoje usluge pristupačnosti. Umjesto toga, aplikacije koje same trebaju unos podataka zahtijevat će Autofill Framework da pozove uslugu automatskog popunjavanja koja će zatim poslati podatke. Zahvaljujući ovom novom okviru, ne samo da će unos lozinke postati puno lakši za korisnike jer se više ne moraju oslanjati na dodatna metoda unosa, ali kašnjenje povezano s omogućavanjem usluga pristupačnosti upravitelja lozinki bit će stvar prošlost.

Znam da za neke od vas ova činjenica možda nije prelomna, ali mislio sam da bi, budući da je rasprava oko usluge pristupačnosti bila tako nijema, ovu temu možda bilo vrijedno ponovno pokrenuti. Samo malo hrane za razmišljanje ovog vikenda!


Što mislite o novom okviru za automatsko popunjavanje za Android O? Javite nam u komentarima ispod!