どこにでもAutoFill – WWDC2020

Session概要

アプリにAutoFillを導入し、フィールドに情報を簡単にかつプライバシーを保ち、安全に記入できるようにしましょう。
あなたのアプリの機能に沿ったより良い候補を提案できいるよう、システムに手を加えましょう。
例えば、ナビゲーションアプリからのスマートロケーション提案を提供できますし、プライバシーを保ったまま、QuickTypeバーから連絡先情報をフィールドに插入できるようにもなります。

MacOS Big Surでは、AutoFillはSafariを飛び出しアプリにも拡張されました。
この機能を利用し、あなたのmacOSアプリのユーザに、便利さとより高いセキュリティ、スムーズな体験を提供するための小さな変更について学びましょう https://developer.apple.com/videos/play/wwdc2020/10115/

現住所を利用してAutoFillを行う方法

  • ナビのアプリには住所入力のテキストフィールドがあります
    • テキストフィールドをタップした時にiOSが自動的に適切な場所の候補を提案します
    • QuickTypeバーに候補が表示されるので、ユーザは1回タップするだけで住所を入力可能
  • カレンダーで予定しているイベントが近づくと、キーボードがイベントの場所を提案します
  • 帰宅したい場合には、自宅の住所が自動的に提案されます

どのようにアプリに実装するか

  • TextFieldに UITextContentType APIを設定するだけで良い
  • 一つのUITextContentTypeプロパティに複数のtypeを設定することはできない
    • そのため、アプリの用途に合わせて厳密に設定する必要がある
    • 例えば、ナビゲーションアプリなら全ての住所(.fullStreetAddress)が必要であり、天気アプリなら市(.addressCity)までで十分
let streetAddressTextField = UITextField()
steetAddressTextField.textContentType = .fullStreetAddress  

//Other address granularity: 
// .addressCity, .addressCityAndState, .addressState, .countryName
// .postalCode, .streetAddressLine1, .streetAddressLine2, .sublocality

UITextContentTypeで設定可能な種類

  • URL
  • addressCity
    • 市(都市)の名前
  • addressCityAndState
    • 市町村名
  • addressState
  • countryName
  • fullStreetAdress
  • creditCardNumber
  • familyName
  • givenName
  • jobTitle
    • 仕事、職種
  • location
    • 関心のある座標/場所、住所
  • middleName
  • name
  • namePrefix
    • Dr. や Mr. などの接頭辞
  • nameSuffix
    • Jr. などの接尾辞
  • nickname
  • organizationName
    • 組織名
  • postalCode
    • 郵便番号
  • streetAddressLine1
    • 通りの住所の最初の行(日本では市区町村名までかな??)
  • streetAddressLine2
    • 通りの住所の2行目(具体的なマンション名など)
  • sublocality
    • locality の中で一番大きい民生的な地域であることを示しています
  • telephoneNumber
  • username
  • password
  • newPassword
  • oneTimeCode
    • SMSで送られた2段階認証用one time codeなど

プライバシーについて

  • Appleは「何を」「誰と」共有するかは完全に個人に委ねられるべきであるという考え
  • 例えば、連絡先アプリの情報を別アプリから取得する場合に、ユーザにアクセス権限を求めたりするが、オススメは Contact Picker APIを使用して連絡先へアクセスしないようにすること。そして、ユーザが共有した特定のデータだけアプリに渡されるのでデータの共有を限定的にすることが可能
  • iOS 14ではQuickTypeキーボードにより、テキストフィールドへの入力と同時に連絡先を提案することが可能

// メールや電話番号のAutoFill設定をするだけで連絡先の自動入力が可能

// AutoFill contacts' email address
let emailTextField = UITextField()
emailTextField.textContentType = .emailAddress 

// AutoFill contacts' phone number
let phoneTextField = UITextField()
phoneTextField.textContentType = .telephoneNumber 

// AutoFill contacts' address 
let streetAddressTextField = UITextField()
steetAddressTextField.textContentType = .fullStreetAddress

Password AutoFill

  • ログイン時にユーザ名とパスワードを入力する必要があるアプリで有用
  • iCloudキーチェーンなどに保存されたユーザ名とパスワードを自動的に提案してくれる

let userTextField = UITextField()
userTextField.textContentType = .username

let passwordTextField = UITextField()
passwordTextField.textContentType = .password

セキュリティコードのAutoFill

let securityCodeTextField = UITextField()
securityCodeTextField.textContentType = .oneTimeCode

強力なパスワードのAutoFill

  • 強力なパスワードを自動生成して提案し、iCloudキーチェーンに自動保存することで、ユーザの利便性とアプリのセキュリティ強化となる
  • 詳細はWWDC2018の Automatic Strong Passwords を参照
let userTextField = UITextField()
userTextField.textContentType = .username

let newPasswordTextField = UITextField()
newPasswordTextField.textContentType = .newPassword

macOSでのセキュリティコード AutoFill

  • macOS Big Surからセキュリティコード自動入力が搭載
  • AppKitで作成したアプリは自動入力が完全にサポートされるようになった

let usernameTextField = NSTextField()
usernameTextField.contentType = .username

let passwordField = NSSecureTextField()
passwordField.contentType = .password

let securityCodeTextField = NSTextField()
securityCodeTextField.contentType = .oneTimeCode
最新情報をチェックしよう!