在iOS中使用密码填充功能
密码自动填充支持第三方 App 是 iOS 12 中包含的众多新功能之一。为了提高用户体验,越来越多的APP支持了这个功能,现在将这个特性总结一下(虽然貌似有点晚。。。)。
手机设置
首先,你需要启用密码自动填充功能。然后,进入“设置”>“密码和帐户”,随后开启“自动填充密码”即可。
开发者后台配置
新建APP
如果你是新建的APP,可以按照这个流程:
选择APP ID,然后continue:
配置APP所需的东东,然后记得勾选上我们这次需要的Associated Domains选项:
原有APP
如果是原有的APP则直接选择你需要配置的APP ID:
然后勾选Associated Domains即可:
当然,你也可以直接去Xcode中设置:
需要注意的是,即使你使用了xcode这个方式,你仍然需要登录开发者后台,将App ID Prefix拷贝下来,以供后面生成的apple-app-site-association文件使用。
配置后的xcode效果图:
内容为:
webcredentials: api.hgxcs.huaguosun.com
注意:api.hgxcs.huaguosun.com为你托管文件apple-app-site-association的域名,你需要将apple-app-site-association文件放在该域名下供Apple来验证APP。并且,你的域名需要支持HTTPS。
apple-app-site-association的内容格式如下:
{
"webcredentials":{
"apps":["TTUAZSH44S.com.huaguoshan.steward"]
}
}
其中TTUAZSH44S为你的APP ID prefix,com.huaguoshan.steward为你的bundle id。
如果你不是很确定自己的配置是否正确,可以去Branch.io Apple App Site Association Validator 或者 Apple App Search API Validation Tool 验证一下.
开始使用
我们将分别测试注册、登录、修改密码这三个功能。页面如下:
注册
进入注册页面,也就是2个textField,当你输入账号时感觉也没什么不同,但是点击输入密码时,系统会弹出这个页面:
系统会针对输入密码时做出询问:你是使用iPhone为你生成的强密码,还是选择自定义密码。如果你选择的是普通密码,那么就可以手动输入自己定义的密码,选择strong password,那么iPhone会为你自动创建密码。
当我们点击注册按钮后,系统就会询问你是否要保存密码到iCould中。如果你选择保存密码,那么Apple会通过但是不使用存储到iCould的钥匙串中,那么下次即使你更换了其他的设备,只要是同一个iCould账号,同一款APP,登录是就会方便多了。效果见后面的登录。
OC代码实现:
passwordTextField.placeholder = @"请输入密码";
accountTextField.placeholder = @"请输入用户名";
if (@available(iOS 11.0, *)) {
accountTextField.textContentType = UITextContentTypeUsername;
//重点,密码框指定为UITextContentTypeNewPassword, 指定自动填充密码
passwordTextField.textContentType = UITextContentTypeNewPassword;
}
// 有人说账号的textField有时不生效,需要指定UIKeyboardTypeEmailAddress,我测试并没遇到这个问题
accountTextField.keyboardType = UIKeyboardTypeEmailAddress;
passwordTextField.secureTextEntry = YES;
swift的设置是一样的,我是直接在storyboard中设置的,就不上代码了。
ios12之上的版本,你还可以指定生成密码的规则,你还可以使用官方的密码生成规则工具 :
// ios12
passwordTextField.passwordRules = [UITextInputPasswordRules passwordRulesWithDescriptor:@"required: lower; required: upper; required: digit; required: [-]; required: [@]; required: [+]; minlength: 40;"];
登录
我们先使用注册功能,注册3个账号,账号为110,119,120。当我们来到登录页面,会出现提示:
点击右边的小钥匙,可以看到在APP下你存储的所有密码:
OC代码实现:
passwordTextField.placeholder = @"请输入密码";
accountTextField.placeholder = @"请输入用户名";
if (@available(iOS 11.0, *)) {
//重点,passwordTextField的类型指定为UITextContentTypePassword
accountTextField.textContentType = UITextContentTypeUsername;
passwordTextField.textContentType = UITextContentTypePassword;
}
passwordTextField.secureTextEntry = YES;
更换密码和发送验证码
点击弹出的密码,就会自动填充到验证码框。
OC代码实现:
accountTextField.textContentType = UITextContentTypeUsername;
passwordTextField.textContentType = UITextContentTypeNewPassword;
smsCodeTextField.textContentType = UITextContentTypeOneTimeCode;
网页实现,我还没有实验,可以参考官方文档。