跳到主要内容

使用 SwiftUI/UIKit 实现 iOS 应用密码自动填充

· 阅读需 4 分钟
GoSwiftUI
goswiftui.com

了解如何在 SwiftUI 和 UIKit 实现 Apple 的密码自动填充。

Apple 的密码自动填充功能允许用户在不同设备上登录同一个帐户,而无需记住他们的凭据。

例如,在 Web 应用程序中注册时,用户可以生成密码并将凭据保存在他们的 iCloud 钥匙串中。当他们在某个时候运行本机应用程序以访问同一帐户时,该应用程序会在密码 QuickType 栏中建议为网站存储的凭据。在用户进行身份验证后,假设使用 Face ID,系统会预先填写凭据 - 因此无需重新输入它们。

要在 iOS 应用程序中激活密码自动填充功能,需要执行以下步骤:

  1. 设置应用程序的关联域。
  2. 在相关文本字段上设置正确的自动填充类型。

让我们更详细地看一下这些步骤。

为共享 Web 凭据设置应用的关联域

关联域在网站和 iOS 应用程序之间建立安全关联。要支持共享 Web 凭据,需要执行以下步骤:

  1. 为共享的 Web 凭据创建和配置关联的域文件。
  2. 将关联的域文件添加到相关网站。
  3. 将关联的域权利添加到 iOS 应用程序。

这些步骤中的每一个都在有关相关域文件的这篇文章中进行了更详细的描述。

使用 textContentType 启用密码自动填充

设置共享网络凭据后,我们需要做的就是在任何相关输入视图上设置 textContentType 属性以激活正确的自动填充建议。

以下 UITextContentType 值可用:

  • .username 用于帐户名称
  • .password 密码
  • .newPassword 用于新密码
  • .oneTimeCode 用于一次性密码,例如自动完成单因素短信登录流程中的安全代码

让我们看看如何为 SwiftUI 和 UIKit 应用程序做到这一点。

为 SwiftUI 启用密码自动填充

在 SwiftUI 中,我们可以使用 textContentType(_:)方法设置 UITextContentType 值:

TextField("Enter your email", text: $emailAddress)
.textContentType(.username)
.keyboardType(.emailAddress)


TextField("Enter your password", text: $password)
.textContentType(.password)

根据我们提供的 textContentType,iOS 会自动选择一个匹配的键盘来显示给用户。

要呈现不同的键盘,例如,如果应用程序使用电子邮件作为用户名,我们可以另外将.keyboardType 设置为所需的值。

为 UIKit 启用密码自动填充

UIKit 支持 UITextField、UITextView 和任何采用 UITextInput 协议的自定义视图上的密码自动填充。我们可以使用 textContentType 实例属性设置 UITextContentType 值:

userTextField.textContentType = .username
userTextField.keyboardType = .emailAddress
passwordTextField.textContentType = .password

原文(英文):https://tanaschita.com/20220815-supporting-password-autofill-for-ios-appilcations