繁体   English   中英

Swift 中未出现保存密码警报

[英]Save Password Alert does not appear in Swift

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

在此处输入图像描述

我为此制作了本教程。 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

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

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

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:// 和有效证书托管文件,并且不使用任何重定向。

设置应用的关联域

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM