在 Flutter 应用程序中显示自动强密码 iOS

Show Automatic Strong password iOS in Flutter app

为了一个小型编码项目,我在 iPhone 上手动安装了自制的 Flutter 应用程序。这个应用程序有一个注册页面,用户可以在其中填写他们的电子邮件和密码来注册该应用程序。为了启用 iOS 自动强密码,我使用了 Flutter AutofillGroup 小部件,并为相应的文本字段提供了适当的 AutofillHints:

return AuthScaffoldView(
      title: 'Sign in',
      child: Container(
        color: Colors.white,
        child: AutofillGroup(
          child: Column(
            children: [
              CupertinoTextField(
                onEditingComplete: () => FocusScope.of(context).unfocus(),
                placeholder: 'Email',
                keyboardType: TextInputType.emailAddress,
                controller: model.editableUser.email,
                autofillHints: [AutofillHints.email],
                clearButtonMode: OverlayVisibilityMode.editing,
              ),
              CupertinoTextField(
                onEditingComplete: () => FocusScope.of(context).unfocus(),
                placeholder: 'Wachtwoord',
                controller: model.editableUser.password,
                autofillHints: [AutofillHints.newPassword],
                clearButtonMode: OverlayVisibilityMode.editing,
              ),
              CupertinoTextField(...

当我 运行 我的 phone 上的应用程序时,AutofillHints 按预期工作 email TextField,但是在点击密码 TextField 时,我收到以下错误 Xcode 输出:

[AutoFill] Cannot show Automatic Strong Passwords for app bundleID: {bundleID} due to error: Cannot identify the calling app's process. Check teamID and bundleID in your app's application-identifier entitlement.

我在 Xcode(在 Signing & Capabilities 下)使用适当的 TeamBundle Identifier 签署了我的应用程序。有人知道这个错误是从哪里来的吗?

您是否试图向用户表明密码是否足够安全? 请在此处使用此软件包来执行此操作:

https://pub.dev/packages/password_strength

确保用这个包的小部件替换密码字段

我能够通过满足自动填充强密码在 iOS 上工作的以下先决条件来解决此问题:

  1. 设置 Associated Domainshttps://developer.apple.com/documentation/xcode/supporting-associated-domains。它涉及从您的网络服务器的根目录(或 .well-known)提供 apple-app-site-association 文件,并将 Associated Domains 权利添加到您的应用程序权利列表中。
  2. Autofill Credential Provider 权利添加到您的应用程序。

PS。最新的 Flutter 2.8.x 包含一个错误,在这里 https://github.com/flutter/flutter/issues/94043 进行了讨论,所以如果你想让它工作,你需要降级到 v.2.5.x 或等待错误修复。

编辑:在 Flutter 2.10.1 中,上述错误已修复。