Troubleshooting iOS AutoFill

Introduction

Codebook's Password AutoFill integration for iOS 12 allows you log into websites (and other iOS apps!) securely using the login and password credentials you store in Codebook. But how does AutoFill determine which Entries to suggest, and which Fields to fill?

How Codebook Fields Are Structured

In Codebook, credentials—such as login names, email addresses, and passwords— are collectively known as Fields. A grouping of such Fields is what constitutes an Entry record. Each Field has a value and is associated with a Label (i.e. Password, Email, Website). Labels serve to both name a Field, and determine its behavior. Labels all have a Mode property that defines the desired behavior of the Field associated with the Label. The available Modes of Labels within Codebook are:

  • Date
  • Email Address
  • Note
  • Number
  • Password
  • PIN
  • Plain Text
  • Secret Agent Action
  • Telephone Number
  • Two-Factor Key (TOTP)
  • URL / Website

For example, a Field with a Label that has its Mode set to Website offers the ability to open the Field value in the user's default web browser, and a Field with a Label set to Email Address offers the option to open the user's default mail client and start a new email with the Field value as the recipient.

How AutoFill Determines Which Entries to Suggest Above the Keyboard

When AutoFill is first configured on your device, any Entries with Fields that have Labels of Mode URL / Website are setup on the device's AutoFill store so that the Username/Email Field is presented as a suggestion when attempting to AutoFill into a webpage/app of the associated domain.

When an Entry is modified, it's associated AutoFill store entry is updated as well.

For example, let's say you have this Entry for the Zetetic Discuss forum website:

Zetetic Discuss example Codebook Entry

If you visit this website and tap on the login form, the associated Entry will automatically show up above the keyboard:

AutoFill Suggestion above the keyboard

Note: only login names and URLs are provided as credentials to iOS so it can tell Codebook what password to retrieve. Your passwords remain stored in Codebook.

How AutoFill Determines Which Fields To Use

When an Entry is selected for AutoFilling:

  • Codebook attempts to locate the first Field that has a Mode of Email Address (the actual Label name can be anything), or the first Field with a Label named Username (or any localized version of Username) -- the localized translations of Username are as follows:
    • English: Username
    • Chinese: 用户名
    • French: nom d'utilisateur
    • Japanese: ユーザー名
    • German: benutzername
    • Spanish: nombre de usuario
  • Codebook then attempts to locate the first Field that has a Mode of Password (the actual Label name can be anything).

Codebook returns the located Email/Username + Password combination to the webpage/app that AutoFill was invoked from, and the information is filled in. If only a Email/Username or Password is located, that field will be filled in and the other one will be left blank.

Troubleshooting

The Correct Entry Isn't Suggested Above Keyboard

Sometimes the Entry you'd like to AutoFill doesn't have an URL / Website Field. In this scenario, you can invoke AutoFill using the Key Symbol above the keyboard and search for the desired Entry. After selecting it, Codebook will suggest adding an URL / Website Field to the Entry for the associated domain so it will show up above the keyboard in the future.

Codebook won't suggest to add an URL / Website Field in these scenarios:

  • There isn't both a Username/Email + Password combination (i.e. there is only a Username/Email or Password but not both).
  • You're attempting to AutoFill into an App (not Safari) that doesn't have an associated domain -- Apps aren't required to have an associated domain, so not all Apps have them setup. In this scenario, there is no way to get the desired entry to show up above the keyboard for AutoFill, instead you'll need to use the serach mechanism within AutoFill to locate the Entry each time.

My Desired Username Field Isn't Being Filled

Firstly, make sure the desired Field is the first Username/Email Field in the Field list.

There are a couple of options to make sure that AutoFill finds the proper Username Field:

  1. Make sure the Field's Label name exactly matches Username or one of the Username translations listed above (case insensitive).
  2. Change the Field Label's Mode to Email Address via [More] > Settings > Customize Labels.

I have multiple Username/Email/Password Fields in the Entry and The Incorrect One is Being Used

AutoFill looks for the first occurrence of Username/Email + Password, so make sure the desired Fields occur first in the Field list (higher than any other Username/Email + Password Fields).

As always, if you're experiencing any difficulty with Password AutoFill or any other aspect of Codebook please feel free to reach out to us at support@zetetic.net