美文网首页
iOS 账号密码自动填充

iOS 账号密码自动填充

作者: Smallwolf_JS | 来源:发表于2020-03-22 22:55 被阅读0次
自动登录的效果,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地址

相关文章

网友评论

      本文标题:iOS 账号密码自动填充

      本文链接:https://www.haomeiwen.com/subject/kyubyhtx.html