Новата рамка за автоматично попълване в Android O ще разреши дългогодишен проблем със забавяне, свързан с услугите за достъпност на мениджърите на пароли.
Вече измина месец, откакто Google пуснаха първи Android O Developer Preview (времето сигурно лети бързо!) и както при всяка нова версия на Android - има много неща за задълбочаване. Ние сме публикували много статии за Android O вече, но има една функция, която смятам, че всъщност не е получила вниманието, което заслужава: Рамка за автоматично попълване.
Автоматично попълване в Android O
Мениджърите на пароли са стотинка в наши дни (въпреки че ние сме част от KeePass с отворен код), но само с Android O Google наистина официално поддържа мениджъри на пароли. С Android O приложенията на трети страни могат да запълнят списъка на услуга за автоматично попълване, която комуникира с приложения чрез новата рамка за автоматично попълване. Приложения, които използват стандартни Преглед елементи ще работят с рамката за автоматично попълване от кутията, въпреки че има допълнителни стъпки, които разработчиците могат да предприемат, за
оптимизиране за автоматично попълване за да се гарантира, че всеки от персонализираните изгледи на приложението може да бъде попълнен автоматично.Когато изглед с възможност за автоматично попълване влезе във фокуса, рамката за автоматично попълване ще извика заявка за автоматично попълване. Услугата за автоматично попълване отговаря, като изпраща обратно определени набори от данни за автоматично попълване (като потребителско име, парола, адрес, номера на кредитни карти и т.н.), които потребителят след това може да избере. Услугата за автоматично попълване се посочва от потребителя в Настройки --> Приложения и известия --> Приложения по подразбиране --> Приложение за автоматично попълване.
Обяснението на новата рамка за автоматично попълване по-горе е само кратко резюме на това, което се случва от страна както на заявеното приложение, така и на услугата за автоматично попълване. Това, което е най-важно за вашето разбиране тук, не са точните подробности за това как работи автоматичното попълване в Android O, а фактът, че самите приложения за мениджър на пароли вече не се справят с откриването кога даден изглед може да бъде попълнен автоматично.
Препоръчителна литература: AgileBits показва как ще изглежда рамката за автоматично попълване на Android O
Автоматично попълване преди Android O
Сравнете това с това как работи автоматичното попълване преди Android O. Преди мениджърите на пароли да имаха някакъв официален метод за откриване кога изгледът може да бъде попълнен автоматично, всеки приложението трябваше да внедри услуга за достъпност, за да сканира текущия изглед, за да намери възможност за автоматично попълване полета.
Използването на услуга за достъпност обаче може водят до значително забавяне при определени условия. Изоставането, свързано с услугата за достъпност на вашия типичен мениджър на пароли, обаче е толкова очевидно, че популярни услуги като LastPass дори имат страници за поддръжка по въпроса. Тези страници за поддръжка обикновено ви казват, че единственото ви средство за справяне с прекомерно забавяне, причинено от техните Услугата за достъпност е или да деактивирате услугата за достъпност, или да преминете към използване на собствен персонализиран вход метод. Така или иначе губите всякакъв вид способност за автоматично попълване.
Но защо точно услугата за достъпност на LastPass или услугата за достъпност на който и да е друг мениджър на пароли изглежда причинява толкова много забавяне? Причината е в начина, по който тези мениджъри на пароли трябва да използват услугите за достъпност, за да открият полета за въвеждане. Услуга за достъпност атрибути са определени в ан XML ресурсен файл в рамките на APK, така че можем да видим как работи услугата, като декомпилираме APK файла.
По-долу е ресурсният файл, взет от декомпилирането на LastPass APK:
"@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 />
От това можем да извлечем следната информация: Услугата за достъпност на LastPass изисква два типа събития за наблюдение - TYPE_VIEW_FOCUSED и TYPE_WINDOW_CONTENT_CHANGED. Той прави това, защото трябва да знае кога съдържанието на приложение/уеб страница се променя или попада на фокус, и след това извлича текущото съдържание на прозореца, за да потърси полета за въвеждане на парола. Но тъй като услугата постоянно прави това при две изключително често задействащи събития за достъпност, това води до забавяне. За по-задълбочено обсъждане на това как услугите за достъпност могат да причинят забавяне, ви препращам към моята предишна статия по въпроса.
Препоръчителна литература: „Работа по предназначение“ – изследване на забавянето на достъпността на Android
Android O убива два заека с един камък
Преди Android O разработчиците на мениджъри на пароли не можеха да направят много, за да смекчат това забавяне. Това е така, защото мениджърите на пароли не са имали начин да разберат кога полето за автоматично попълване е на екрана, без да активират услугата за достъпност да ги следи постоянно. Но благодарение на новата рамка за автоматично попълване в Android O, тези мениджъри на пароли вече могат да оттеглят своите услуги за достъпност. Вместо това, самите приложения, които се нуждаят от въвеждане на данни, ще поискат от рамката за автоматично попълване да се обади на услугата за автоматично попълване, която след това ще изпрати данните. Благодарение на тази нова рамка не само въвеждането на парола ще стане много по-лесно за потребителите, тъй като те вече не трябва да разчитат на допълнителен метод за въвеждане, но забавянето, свързано с активирането на услугите за достъпност на мениджърите на пароли, ще бъде част от минало.
Знам, че за някои от вас този факт може да не е новаторски, но си помислих, че тъй като дискусията около Услугата за достъпност беше толкова мълчалива, тази тема може би си струваше да се разпали отново. Само малко храна за размисъл този уикенд!
Какво мислите за новата рамка за автоматично попълване на Android O? Кажете ни в коментарите по-долу!