2

我希望在用户登录我的应用程序时出现此警报。

在此处输入图像描述

我为此制作了本教程。iOS 12 密码工具:提高用户安全性和体验

我也看过这个话题。并在我的 LoginViewController.swift 中的 viewDidDisappear 或 viewWillDisappear 中使用此代码。但是这个警报根本没有出现。

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)

    if user.id != 0 {
        usernameTextField.text = nil
        passwordTextField.text = nil
    }

}

我的权利文件是这样的(假设twitter.com是我的应用程序的网站):

<key>com.apple.developer.associated-domains</key>
<array>
    <string>applinks:twitter.com</string>
    <string>webcredentials:twitter.com</string>
</array>
<key>com.apple.developer.authentication-services.autofill-credential-provider</key>
<true/>

当然,我的usernameTextField内容类型是usernamepasswordTextField内容类型是password

所以我想问为什么这个警报没有响起。

4

2 回答 2

1

创建新帐户或更改密码时,请为密码 TextField 使用 .newPassword 文本内容类型:

newPasswordTextField.textContentType = .newPassword
confirmPasswordTextField.textContentType = .newPassword

在文本输入视图上启用密码自动填充


您还可以使用 Security.SecSharedCredentials API 管理 iCloud 钥匙串凭据。它仍然需要域关联(权利):

SecAddSharedWebCredential("your_domain.com" as CFString,
                           usernameTextField.text as CFString,
                           newPasswordTextField?.text as CFString, {(error) in })

SecAddSharedWebCredential


接下来,您应该将 Apple App Site Association 文件添加到您的网站。

创建一个名为 apple-app-site-association 的文件(不带扩展名)。更新文件以包含字典的 JSON 表示形式,其中列出了与您的域相关联的应用标识符,用于 webcredentials 服务。

{
   "webcredentials": {
       "apps": [    "D3KQX62K1A.com.example.DemoApp",
                    "D3KQX62K1A.com.example.DemoAdminApp" ]
    }
}

对应用标识符使用以下格式:

<Team Identifier>.<Bundle Identifier>

将此文件放在站点的 .well-known 目录中,或直接放在其根目录中。如果您使用 .well-known 目录,则文件的 URL 应与以下格式匹配:

https://<fully qualified domain>/.well-known/apple-app-site-association

您必须使用带有有效证书的 https:// 托管文件,并且不使用任何重定向。

设置应用的关联域

于 2019-11-28T09:32:10.947 回答
0

实现自动填充密码功能后,保存密码警报将在您推送呈现(全屏)到下一个时显示ViewController

于 2021-11-30T05:24:48.577 回答