Платформа автозаполнения Android O наконец-то решит давнюю проблему с задержкой работы менеджеров паролей

Новая платформа автозаполнения в Android O решит давнюю проблему с задержкой, связанную со службами специальных возможностей менеджеров паролей.

Прошел уже месяц с тех пор, как Google выпустила первая предварительная версия Android O для разработчиков (время летит быстро!), и, как и в случае с любой новой версией Android, здесь есть над чем покопаться. Мы опубликовали много статей уже говорил об Android O, но есть одна особенность, которая, как мне кажется, не получила того внимания, которого она заслуживает: Платформа автозаполнения.

Автозаполнение в Android O

Менеджеров паролей в наши дни пруд пруди (хотя мы частичный KeePass с открытым исходным кодом), но только в Android O Google по-настоящему официально поддерживает менеджеры паролей. В Android O сторонние приложения могут дополнить список службы автозаполнения, которая взаимодействует с приложениями через новую платформу автозаполнения. Приложения, использующие стандартные Вид элементы будут работать с Autofill Framework «из коробки», хотя есть дополнительные шаги, которые разработчики могут предпринять для 

оптимизировать для автозаполнения чтобы гарантировать возможность автозаполнения любого из пользовательских представлений приложения.

Когда автозаполняемое представление попадает в фокус, платформа автозаполнения вызывает запрос автозаполнения. Служба автозаполнения в ответ отправляет обратно определенные наборы данных автозаполнения (например, имя пользователя, пароль, адрес, номера кредитных карт и т. д.), которые пользователь затем может выбрать. Служба автозаполнения указывается пользователем в «Настройки» -> «Приложения и уведомления» -> «Приложения по умолчанию» -> «Приложение автозаполнения».

Приложение автозаполнения в 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? Дайте нам знать в комментариях ниже!