Apple账号密码自动填充

背景

只是好奇,但是再次留个备份,还未验证。

一、解决问题

为了app登录流程用户体验问题,对于用户登录的账号密码记录并自动填充,为用户提供快速、便捷的登录方式,让用户选择账号即可填充账号密码

二、新技术概述

这个功能已经推出比较久了,在WWDC17上,苹果发布的iOS11,其中带来了App密码自动填充的这一新的API。这一功能的实现能够让用户更方便的管理密码,更容易在我们的应用上登录。

密码自动填充简化了iOS应用和网页的登录和帐户创建任务。只需轻点几下,您的用户就可以创建并保存新密码或登录现有帐户。用户甚至不需要知道他们的密码;系统处理一切。这种便利性增加了用户完成应用程序登录或注册流程并更快地开始使用您的应用程序的可能性。此外,通过鼓励用户选择唯一的强密码,您可以提高应用的安全性。 默认情况下,密码自动填充会将用户的登录凭据保存在其当前的iOS设备上。 iOS可以使用iCloud Keychain在用户的设备上安全地同步这些凭据。密码自动填充仅为应用程序的关联域推荐凭据,并且用户必须在访问这些凭据之前使用Face ID或Touch ID进行身份验证。 密码自动填充还提供实施凭证提供程序扩展的第三方密码管理器的凭据。

三、效益

使用该技术,会记住用户的账号和密码,能让用户创建并保存新密码或登录现有账户,解决用户因记不住密码或者输错密码导致的登录问题,大大提高用户使用app的便捷性和流畅性。

四、风险评估

该技术由苹果官方推出,并在开发者大会上进行讲解说明,技术方面足够成熟,并且市面上很多APP或者网站上都实现了这个功能,目前未爆出有风险。

五、详细说明

1、项目配置

在工程中开启Associated Domains,或者直接在https://developer.apple.com/登录您的开发者账号,然后进入Certificates, Identifiers & Profiles,选择你的Identifiers,点击编辑,勾选Associated Domains

工程开启Associated Domains,如下:在这里插入图片描述
点击添加按钮会直接增加一个webcredentials:example.com, 官方给的格式是: <service>:<fully qualified domain>:<port number> 。而图片中的webcredentials是网页和应用共享证书的服务,具体如下:

applinks: 通用链接服务
webcredentials:网页和应用共享证书凭据服务
activitycontinuation:HandOff服务

网站如果需要适应example.com的子域名的话,则为 .example.com ,并且保证每条增加的都应有webcredentials: 头部。

2、服务器配置

创建一个名为apple-app-site-association的json文件(不要添加json后缀),然后里面填入的信息如下:

TeamId为,该项目开发者账号的TeamId,可在开发者账号上查看
BundleId为,该项目的Bundle identifier,在项目上可查看

{"webcredentials":{  
        "apps": ["$TeamId.$Bundle id" ]
     }
}

然后将此json文件放到服务器域名根目录,或者.well-known目录下面,只要能够使用访问即可
然后服务器人员给到我们访问的域名,我们将其域名,添加到上面的Associated Domains中,格式为
webcredentials:$域名,比如webcredentials:api.yolanda.hk

3、代码设置

将登陆注册的账号和密码的UITextfield的textContentType设置为username或者emailAddresspassword
然后运行项目,查看效果

1、运行app,输入账号和密码,点击登录,登录后,会弹出是否保存保存密码

在这里插入图片描述

2、点击保存后,退出登录,在登录页面,点击账号和密码输入框,键盘会弹出之前保存的账号密码,点击后,进行面容Id或者指纹识别后,自动填充账号密码

在这里插入图片描述

3、修改密码后,更新原有账号的密码提醒

手动设置账号密码保存代码

NSString *server = @"oversea-sit.yolanda.hk1";
    NSString *account = self.accountTextField.text;
    NSString *password = self.passwordTextField.text;
    
    SecAddSharedWebCredential((__bridge CFStringRef)server, (__bridge CFStringRef)account, (__bridge CFStringRef)password, ^(CFErrorRef  _Nullable error) {
        if (error) {
            NSLog(@"保存失败, = %@", error);
        } else {
            NSLog(@"保存成功");
        }
    });

然后系统会弹出弹框确认是否更新原有账号保存的密码,点击更新密码,退出登录后,填充的密码就是修改后的密码
在这里插入图片描述

参考文档:
1. https://juejin.cn/post/6844903885908213767
2. https://blog.csdn.net/weixin_44836266/article/details/125389571

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值