在 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
下)使用适当的 Team
和 Bundle Identifier
签署了我的应用程序。有人知道这个错误是从哪里来的吗?
您是否试图向用户表明密码是否足够安全?
请在此处使用此软件包来执行此操作:
https://pub.dev/packages/password_strength
确保用这个包的小部件替换密码字段
我能够通过满足自动填充强密码在 iOS 上工作的以下先决条件来解决此问题:
- 设置
Associated Domains
:https://developer.apple.com/documentation/xcode/supporting-associated-domains。它涉及从您的网络服务器的根目录(或 .well-known)提供 apple-app-site-association
文件,并将 Associated Domains
权利添加到您的应用程序权利列表中。
- 将
Autofill Credential Provider
权利添加到您的应用程序。
PS。最新的 Flutter 2.8.x 包含一个错误,在这里 https://github.com/flutter/flutter/issues/94043 进行了讨论,所以如果你想让它工作,你需要降级到 v.2.5.x 或等待错误修复。
编辑:在 Flutter 2.10.1 中,上述错误已修复。
为了一个小型编码项目,我在 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
下)使用适当的 Team
和 Bundle Identifier
签署了我的应用程序。有人知道这个错误是从哪里来的吗?
您是否试图向用户表明密码是否足够安全? 请在此处使用此软件包来执行此操作:
https://pub.dev/packages/password_strength
确保用这个包的小部件替换密码字段
我能够通过满足自动填充强密码在 iOS 上工作的以下先决条件来解决此问题:
- 设置
Associated Domains
:https://developer.apple.com/documentation/xcode/supporting-associated-domains。它涉及从您的网络服务器的根目录(或 .well-known)提供apple-app-site-association
文件,并将Associated Domains
权利添加到您的应用程序权利列表中。 - 将
Autofill Credential Provider
权利添加到您的应用程序。
PS。最新的 Flutter 2.8.x 包含一个错误,在这里 https://github.com/flutter/flutter/issues/94043 进行了讨论,所以如果你想让它工作,你需要降级到 v.2.5.x 或等待错误修复。
编辑:在 Flutter 2.10.1 中,上述错误已修复。