当前位置:网站首页>Apple账号密码自动填充
Apple账号密码自动填充
2022-07-01 07:15:00 【朱莉^_^JuneLee】
一、解决问题
为了app登录流程用户体验问题,对于用户登录的账号密码记录并自动填充,为用户提供快速、便捷的登录方式,让用户选择账号即可填充账号密码
二、新技术概述
这个功能已经推出比较久了,在WWDC17上,苹果发布的iOS11,其中带来了App密码自动填充的这一新的API。这一功能的实现能够让用户更方便的管理密码,更容易在我们的应用上登录。
密码自动填充简化了iOS应用和网页的登录和帐户创建任务。只需轻点几下,您的用户就可以创建并保存新密码或登录现有帐户。用户甚至不需要知道他们的密码;系统处理一切。这种便利性增加了用户完成应用程序登录或注册流程并更快地开始使用您的应用程序的可能性。此外,通过鼓励用户选择唯一的强密码,您可以提高应用的安全性。 默认情况下,密码自动填充会将用户的登录凭据保存在其当前的iOS设备上。 iOS可以使用iCloud Keychain在用户的设备上安全地同步这些凭据。密码自动填充仅为应用程序的关联域推荐凭据,并且用户必须在访问这些凭据之前使用Face ID或Touch ID进行身份验证。 密码自动填充还提供实施凭证提供程序扩展的第三方密码管理器的凭据。
WWDC17相关视频地址:Introducing Password AutoFill for Apps
三、效益
使用该技术,会记住用户的账号和密码,能让用户创建并保存新密码或登录现有账户,解决用户因记不住密码或者输错密码导致的登录问题,大大提高用户使用app的便捷性和流畅性。
四、风险评估
该技术由苹果官方推出,并在开发者大会上进行讲解说明,技术方面足够成熟,并且市面上很多APP或者网站上都实现了这个功能,目前未爆出有风险。
五、详细说明
1、项目配置
在工程中开启Associated Domains,或者直接在https://developer.apple.com/登录您的开发者账号,然后进入Certificates, Identifiers & Profiles,选择你的Identifiers,点击编辑,勾选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.hkapp设置截图
3、代码设置
将登陆注册的账号和密码的UITextfield
的textContentType
设置为username
或者emailAddress
、password
然后运行项目,查看效果
1、运行app,输入账号和密码,点击登录,登录后,会弹出是否保存保存密码
2、点击保存后,退出登录,在登录页面,点击账号和密码输入框,键盘会弹出之前保存的账号密码,点击后,进行面容Id或者指纹识别后,自动填充账号密码
3、修改密码后,更新原有账号的密码提醒
手动设置账号密码保存代码
NSString *server = @"oversea-sit.yolanda.hk";
NormalUser *loginUser = [[UserTool sharedUserTool] getLoginUser];
SecAddSharedWebCredential( (**__bridge** CFStringRef)server, (**__bridge** CFStringRef)loginUser.email, (**__bridge** CFStringRef)_newPwdTextField.textField.text, ^(CFErrorRef **_Nullable** error) {
});
然后系统会弹出弹框确认是否更新原有账号保存的密码,点击更新密码,退出登录后,填充的密码就是修改后的密码
边栏推荐
- 运维管理有什么实用的技巧吗
- C语言实现【扫雷游戏】完整版(实现源码)
- Unity2021-Scene视图中物体无法直接选中的解决办法
- 代码实战——从零开始搭建自己的Diffusion models/Score-based generative models
- Cadence OrCAD Capture “网络名”相同,但是未连接或连接错误的解放方案之nodename的用法
- The programmer of Beipiao posted a post for help late at night: I am lonely when my girlfriend is gone
- Subclasses call methods and properties of the parent class with the same name
- MySQL and redis consistency solution
- Paging in servlets and JSPS
- ctfshow-web355,356(SSRF)
猜你喜欢
【Flutter 问题系列第 72 篇】在 Flutter 中使用 Camera 插件拍的图片被拉伸问题的解决方案
Warm congratulations on the successful listing of five elements hehe liquor
盘点华为云GaussDB(for Redis)六大秒级能力
如何进入互联网行业,成为产品经理?没有项目经验如何转行当上产品经理?
atguigu----脚手架--02-使用脚手架(2)
JAX的深度学习和科学计算
The computer has a network, but all browser pages can't be opened. What's the matter?
【LINGO】求解二次规划
Jena基于OWL的默认推理查询
北漂程序员深夜emo发帖求助:女朋友走了我很孤独 ......
随机推荐
Buildreoot override mechanism
在长城证券上做基金定投安全吗?
微软宣布开源 (GODEL) 语言模型聊天机器人
MySQL table partition creation method
转行做产品经理,如何挑选产品经理课程?
灰度何以跌下神坛?
[lingo] find the minimum connection diagram of seven cities to minimize the price of natural gas pipelines
[classification model] Q-type cluster analysis
Jena default inference query based on OWL
Spark入门(一篇就够了)
為什麼這麼多人轉行產品經理?產品經理發展前景如何?
ctfshow-web352,353(SSRF)
解决无法读取META-INF.services里面定义的类
运维面临挑战?智能运维管理系统来帮您
Programming examples of stm32f1 and stm32subeide infrared receiving and decoding of NEC protocol
如何画产品架构图?
Servlet 和 JSP 中的分页
How to use Alibaba vector font files through CDN
发现了一个 MySQL 的巨坑:update 更新别再用影响行数做判断了!!!
1286_ Implementation analysis of task priority setting in FreeRTOS