自动登录的效果,iOS11+
Bound identifier 开启Associated Domains
你可以直接在https://developer.apple.com/登录,然后进入Certificates, Identifiers & Profiles,选择你的Identifiers,点击编辑,勾选Associated Domains。
服务器设置
创建一个名为apple-app-site-association的json文件(不要添加json后缀),然后里面填入的信息如下:
{"webcredentials":{
"apps": ["$TeamId.$Bound id" ]}
}
然后将此json文件放到域名根目录,或者.well-known目录下面,只要能够使用
如下网址能够访问到即可:apps内容格式为TeamId.Bundle Identifier。
https://example.com/.well-known/apple-app-site-association
https://example.com/apple-app-site-association
工程开启Associated Domains
储存密码到钥匙串
注意
UIKIT_EXTERN UITextContentType const UITextContentTypeName NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN UITextContentType const UITextContentTypeNamePrefix NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN UITextContentType const UITextContentTypeGivenName NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN UITextContentType const UITextContentTypeMiddleName NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN UITextContentType const UITextContentTypeFamilyName NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN UITextContentType const UITextContentTypeNameSuffix NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN UITextContentType const UITextContentTypeNickname NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN UITextContentType const UITextContentTypeJobTitle NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN UITextContentType const UITextContentTypeOrganizationName NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN UITextContentType const UITextContentTypeLocation NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN UITextContentType const UITextContentTypeFullStreetAddress NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN UITextContentType const UITextContentTypeStreetAddressLine1 NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN UITextContentType const UITextContentTypeStreetAddressLine2 NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN UITextContentType const UITextContentTypeAddressCity NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN UITextContentType const UITextContentTypeAddressState NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN UITextContentType const UITextContentTypeAddressCityAndState NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN UITextContentType const UITextContentTypeSublocality NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN UITextContentType const UITextContentTypeCountryName NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN UITextContentType const UITextContentTypePostalCode NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN UITextContentType const UITextContentTypeTelephoneNumber NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN UITextContentType const UITextContentTypeEmailAddress NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN UITextContentType const UITextContentTypeURL NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN UITextContentType const UITextContentTypeCreditCardNumber NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN UITextContentType const UITextContentTypeUsername NS_AVAILABLE_IOS(11_0);
UIKIT_EXTERN UITextContentType const UITextContentTypePassword NS_AVAILABLE_IOS(11_0);
注意版本的兼容,还需要设置你的输入框的contentType
当然自动填充验证码,也是一样的道理.还有自动生成强密码,还有规则
密码的格式
自动生成的密码,我们可以通过一些方法指定生成的密码格式和规则. 可以在官方提供的密码格式工具Password Rules Validation Tool 上面调试自己的密码格式,将生成的密码格式描述复制下来,设置给UITextField的passwordRules属性.
if (@available(iOS 12.0, *)) {
self.passwordField.textContentType = UITextContentTypeNewPassword;
self.passwordField.passwordRules = [UITextInputPasswordRules passwordRulesWithDescriptor:@"required: lower; required: upper; allowe: digit; required: [-]; minlength: 5;"];
}
还有域名仅支持https
保存用户名和密码的code
SecAddSharedWebCredential( (__bridge CFStringRef)@"smallwolfios.github.io", (__bridge CFStringRef)@"dsfsdkf", (__bridge CFStringRef)_passwordField.text, ^(CFErrorRef _Nullable error) {
if (!error) {
NSLog(@"密码保存成功");
}else{
NSLog(@"密码保存失败");
}
});
利用苹果iOS11 推出密码自动填充的功能来简便用户的登录操作,其中textContentType还有很多特性,通过iCloud、HandOff可以实现跨设备的极佳的体验。另外本文没有提及生成强密码部分,因为在国内还是很少人用这个功能吧,至少本人是这样,怕忘记密码或者在其他端登录不晓得密码的尴尬,苹果提供的生成强密码可以根据指定的规则来生成,还是很方便的.
dmo地址
网友评论