登录页面用户去填写账号密码后,提示用户保存到icloud或者是自带的密码app中,下次登录时直接在键盘中点击选择,这个交互就很好,如下示例:


用户点击键盘中的QuickTypeBar 区域直接填充已保存的密码,交互就非常愉快及快捷,不必每次再去繁琐的输入!
开发准备
一、app代码配置
objectivec//输入账号的textField配置 _phoneTF.textContentType = UITextContentTypeUsername;
objectivec//输入密码的textField配置 _codeTF.textContentType = UITextContentTypePassword;
二、app的target配置

点击加号后将webcredentials:后面改为你的域名,比如:abcd.com,尽量改为你的正常域名哦!在下面第三步的时候就需要用到!必须保持一致!

三、登录事件
在你的登录逻辑中添加以下代码
objectivec// 输入的账号 NSString *account = [weakSelf.phoneTF.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; // 输入的密码 NSString *password = [weakSelf.codeTF.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; // webcredentials:example.com 填写的服务器地址 NSString *services = @"abcd.com"; // 存储密码 SecAddSharedWebCredential((CFStringRef)services,(CFStringRef)account,(CFStringRef)password,^(CFErrorRef _Nullable error){ if(error) { NSLog(@"错误 %@",error); } else{ NSLog(@"成功"); } });
四、开发者中心配置
登录开发者https://developer.apple.com/网站,找到你的项目bunldeID,勾选Associated Domains复选框,并点击右上角的save保存按钮

创建一个名为apple-app-site-association的文件,不要任何后缀名!!!打开后粘贴以下内容,
teamId.bundleId替换为上图两处的id拼接在一块后保存此文件。
objectivec{ "webcredentials": { "apps": ["teamId.bundleId"] } }
示例:

则文件apple-app-site-association内容为:
{
"webcredentials": {
"apps": "L4DFAB2343.com.abc.management"
}
}
五、服务器端配置
在服务器的根目录创建一个.well-known的文件夹,将上述生成的文件apple-app-site-association放在这个目录中。
使用你的浏览器打开以下连接验证是否成功,将example.com替换为上述第二步使用的域名!你将能看到浏览器下载了一个文件或者是打了一个页面,说明配置成功!若不成功,则检查上述步骤是否完全正确!以下二选一验证即可。
或者通过以下页面进行验证,将example.com替换为上述的域名!
到此全部完成。
1.要仔细看看创建的文件apple-app-site-association,一定不能带有扩展名。
2.apple-app-site-association文件内容是 JSON,也要检查JSON格式是否正确
运行APP,则可以看到在登录页面输入账号时键盘的表现!
最后注意事项:
/**
UIKeyboardTypePhonePad
UIKeyboardTypeNumberPad
是专为输入电话号码设计的数字小键盘,默认不会自动触发系统的密码自动填充建议栏,这是iOS系统的原生特性限制。
*/
textField的键盘类型为上述两者时,是不会弹出密码选项的!
_phoneTF.keyboardType = UIKeyboardTypeNumbersAndPunctuation;
