Статьи

Ускоренный вход в систему с паролем автозаполнения в iOS 11

Конечный продукт
Что вы будете создавать

Вход в систему — это первый шаг, который должен выполнить пользователь, когда он запускает приложение, для которого требуется учетная запись. Обычно это занимает несколько секунд, если пользователь запоминает свои учетные данные и может сразу их ввести. Вместо этого другим пользователям, возможно, придется переключиться на предпочитаемую им службу менеджера паролей ( iCloud Keychain , 1Password , LastPass и т. Д.), Чтобы скопировать свое имя пользователя и пароль. Излишне говорить, что это взаимодействие замедляет пользователей, и некоторые из них просто выпадают из процесса.

Были некоторые попытки улучшить этот опыт. 1Password, например, предлагает хорошее расширение, которым могут воспользоваться разработчики приложений. Еще одно решение, уже включенное в iOS начиная с WWDC 2014, — Safari Shared Credentials .

В iOS 11, тем не менее, Apple представила еще более плавный способ оптимизации процесса входа в систему: новый API автозаполнения паролей. По сравнению с предыдущими решениями, это проще для пользователей и быстрее для разработчиков.

В этом посте вы узнаете, как ускорить процесс входа в систему и улучшить удержание пользователя с помощью Password AutoFill, нового API, представленного в iOS 11.

Автозаполнение пароля позволяет пользователям вводить свои учетные данные для входа непосредственно в ваше приложение, взаимодействуя с панелью быстрого набора, которая показана над клавиатурой. Улучшение потока входа увеличит количество пользователей и репутацию вашего приложения. После этого урока вы сможете сократить продолжительность входа в систему до нескольких секунд.

Есть два шага для реализации автозаполнения паролем в вашем приложении:

  • Показать панель быстрого набора со значком ключа и позволить пользователям вручную выбрать правильный логин.
  • При желании можно связать приложение и веб-сайт безопасным способом, чтобы на панели быстрого набора можно было указать правильный логин для пользователя, чтобы еще больше ускорить процесс.

Первый шаг — сделать так, чтобы панель быстрого набора отображалась с помощью кнопки. После этого шага пользователи смогут нажать на него и вручную выбрать правильный логин из представленного контроллера представления. Единственное свойство, необходимое для отображения панели QuickType, — это установить свойство textContent в UITextField или UITextView . Если у вас есть пользовательский элемент управления, соответствующий <UITextInput> , будет применяться тот же код.

Вы должны добавить это свойство в ваши поля электронной почты / имя пользователя и пароль. Одна общая реализация будет следующей:

1
2
usernameTextField.textContentType = .username
passwordTextField.textContentType = .password

iOS покажет панель QuickType на всех устройствах под управлением iOS 11, если в цепочке для ключей сохранен хотя бы один пароль. Если вы тестируете на симуляторе и не видите панели быстрого набора, скорее всего, потому что ваша цепочка для ключей пуста.

Панель QuickType с простым значком ключа

После того, как пользователь нажимает значок ключа и проходит аутентификацию с помощью Touch ID, отображается список всех сохраненных паролей. Пользователь может искать или прокручивать, и когда правильные учетные данные найдены, одним нажатием будут заполнены поля для входа.

Как видите, самая медленная часть этого процесса — найти правильный логин в цепочке для ключей. В следующем разделе мы увидим, как мы можем удалить этот шаг и еще больше улучшить опыт.

Вы также можете указать iOS веб-сайт, с которым связано ваше приложение. Если цепочка для ключей содержит учетные данные, сохраненные из Safari на iOS или macOS, будут предложены эти учетные данные, что избавит вас от необходимости вручную искать их в цепочке для ключей.

Если вы уже используете Universal Links , ваше приложение должно отобразить учетные данные для вашего сайта на панели быстрого набора. iOS знает, какой веб-сайт связан с вашим приложением, поэтому он на 100% готов предложить учетные данные.

Еще один способ прочно связать ваше приложение и веб-сайт без универсальных ссылок — это служба домена, связанная с веб-учетными данными.

Переключитесь на настройки проекта Xcode, перейдите на вкладку « Возможности » и включите « Связанные домены» . Добавьте URL своего сайта сюда. Допустим, доменное имя вашего сайта — amazingwebsite.com : указанное доменное имя должно быть webcredentials: amazingwebsite.com .

Раздел возможностей Xcode с включенными ассоциированными доменами

Вот и все для конфигурации в проекте Xcode. iOS теперь знает связанный веб-сайт вашего приложения. Последний шаг — загрузить файл на свой сервер, чтобы iOS могла подтвердить, что вы являетесь владельцем веб-сайта, который вы пытаетесь связать с приложением. (Это сделано для того, чтобы вредоносные приложения не могли украсть учетные данные с других веб-сайтов.)

Создайте новый текстовый файл (вне вашего проекта XCode, если вы предпочитаете) с именем apple-app-site-association . Это стандартное имя, которое iOS ищет на вашем сервере, используя безопасное соединение (на вашем сервере должен быть установлен SSL). Содержание файла также довольно стандартное. Просто скопируйте и вставьте следующий код.

1
2
3
4
5
{
    «webcredentials» : {
        «apps» : [«1EMDW8DVTP.com.patrickbalestra.AutoFill»]
    }
}

Вы должны изменить строку в массиве apps на ваш идентификатор группы (который можно найти на портале для разработчиков в разделе членства), за которым следует точка и идентификатор пакета приложения. Создайте папку с именем .well-known в корневом каталоге вашего сервера и загрузите в нее файл.

Чтобы убедиться, что все прошло как положено, проверьте в веб-браузере, существует ли файл по указанному адресу. Это мой адрес, например: https://patrickbalestra.com/.well-known/apple-app-site-association .

Если вы видите файл JSON правильно, как на следующем рисунке, все готово.

Содержимое сайта JSON

Запустите приложение и обратите внимание, что на панели QuickType отображаются учетные данные вашего сайта, чтобы вы могли войти в систему одним нажатием.

Предложение учетных данных в панели QuickType

Если вы хотите узнать больше об автозаполнении паролем, посмотрите сессию 206 на WWDC 2017 .

Как мы только что видели, реализовать автозаполнение паролем очень просто. Вам следует подумать о том, чтобы потратить несколько минут на его реализацию для удобства ваших пользователей и бизнеса. Это ускорит процесс входа в систему и улучшит срок хранения вашего приложения.

Следите за новыми учебными пособиями, посвященными новым API для iOS 11, а пока ознакомьтесь с некоторыми другими нашими статьями по разработке приложений для iOS.

  • Мобильная разработка
    WWDC 2017 Последствия: самые важные объявления
    Барт Джейкобс
  • iOS SDK
    Realm Мобильная база данных для iOS
    Дорон Кац
  • iOS SDK
    Защита данных iOS в покое: брелок
    Коллин Стюарт