密码自动填充保存密码 SwiftUI

Fre*_* A. 5 autofill ios swiftui

再会。

我正在尝试在 SwiftUI 中实现一个登录页面,但我无法弄清楚如何让应用程序在成功登录后提示用户保存他们的凭据。

这是输入字段的代码。

        TextField("Phone number", text: $phoneNumber)
            .keyboardType(.numbersAndPunctuation)
            .textContentType(.username)

        SecureField("Password", text: $password)
            .keyboardType(.asciiCapable)
            .textContentType(.password)
Run Code Online (Sandbox Code Playgroud)

成功后,环境变量发生变化,父组件将停止呈现登录页面。

我已启用“自动填充凭据提供程序”权利。

我想要实现的是在 iOS 中使用原生的“密码管理器”,https://developer.apple.com/documentation/security/password_autofill

iOS 上的密码自动填充提示

当用户提交他们的凭据并成功进行身份验证时,应该会向他们显示类似上面的提示,询问他们是否要保存用于登录的密码。

pd9*_*d95 10

密码自动填充的问题不是 UIKit/SwiftUI 实现。要获得应用程序的支持,最重要的事情是:

  1. 将“关联域”功能添加到您的应用程序并将“域”设置为webcredentials:example.com(替换example.com为您实际拥有并有权访问的域!)。

  2. 在您的网站(可在给定域下访问)上,将名为 的文件apple-app-site-association放入您的公共可访问根目录中的 文件夹 中.well-known
    您可以使用命令测试访问curl https://www.example.com/.well-known/apple-app-site-association。(是的,必须启用 HTTPS 并拥有有效的证书!)

  3. 的内容apple-app-site-association必须引用您的 Apple 开发团队 ID 和应用程序的捆绑包标识符,如下所示:(团队 ID 为“A1BC23REUG”,捆绑包标识符为“com.example.signin-playground”)

{
  "webcredentials": {
    "apps": [ 
      "A1BC23REUG.com.example.signin-playground"
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)
  1. 使用适当的修饰符标记 SwiftUI 中的输入字段textContentType

我在这个要点中写了一个小例子,我成功地测试了它。

如果自动填充不起作用(例如,您只得到一个不特定的密码完成对话框),您通常必须检查文件中的包/团队标识符和apple-app-site-association。如果您最近更改了文件中的某些内容,则该内容可能会缓存在您的设备上(因此您可以删除应用程序并再次重新安装)或缓存在 Apple 的 CDN 网络中(在这种情况下,您可以激活备用模式)如此处记录的

如果没有出现“您想保存此密码吗”对话框,则说明您没有正确设置“关联域”,或者 iOS 启发式方法未检测到屏幕中的相关更改。