WWDC2018在6月份如期而來,也是到了繼續(xù)學(xué)習(xí)新功能的時(shí)期。今天分享下新的功能,關(guān)于登錄注冊(cè)時(shí)自動(dòng)填充/建議賬戶密碼及新特性讀取短信驗(yàn)證碼。
去年的WWDC中,我們可以借助系統(tǒng)提供的接口來實(shí)現(xiàn)自動(dòng)讀取鑰匙串中用戶已有賬戶密碼
代碼配置
let userTextField = UITextField()
userTextField.textContentType = .username
let passwordTextField = UITextField()
passwordTextField.textContentType = .password
Ps:如果有特殊要求,記得對(duì)鍵盤類型做修改。
今年,我們還可以像系統(tǒng)一樣給用戶提供建議密碼,而且我們可以自定義所提供的密碼的規(guī)則。這個(gè)可以用到我們的登錄注冊(cè)之中。
let userTextField = UITextField()
userTextField.textContentType = .username
let newPasswordTextField = UITextField()
newPasswordTextField.textContentType = .newPassword
let confirmNewPasswordTextField = UITextField()
confirmNewPasswordTextField.textContentType = .newPassword
AutoFill will:
- Infer the view controller type
- Check eligibility based on associated domains Detect relevant sign up form elements Suggest a user name
- Insert a strong password
- Save the password after user signs up
PS:上面這個(gè)是工作機(jī)制,可以適當(dāng)了解下,可能哪里出問題了就能從這上面找到原因
需要注意到是,蘋果提示說注冊(cè)為用戶提供建議密碼時(shí),用戶名與密碼應(yīng)在同一個(gè)界面,應(yīng)該很少有產(chǎn)品會(huì)把這些信息分離吧??。
配置建議密碼時(shí)需要給定密碼的規(guī)則,否則建議新密碼不會(huì)生效并提示錯(cuò)誤
let newPasswordTextField = UITextField()
...
let rulesDescriptor = "allowed: upper, lower, digit; required: [$];"
newPasswordTextField.passwordRules = UITextInputPasswordRules(descriptor: rulesDescriptor)
Storyboard 配置
登錄的賬戶密碼配置


這個(gè)是用戶名的配置,可以選擇e-mail、username等等等,具體的可以自己根據(jù)具體情況,或者都試試怎么用的~

登錄界面就是這么配置,非??焖?。重復(fù)的地方就不在標(biāo)記了,只對(duì)需要注意到地方標(biāo)記了一下。
注冊(cè)的賬戶密碼配置


這個(gè)content type 是NewPassword 只有iOS12 下才有,而且在這下面多了一個(gè)Password Rule選項(xiàng),需要填入建議密碼的規(guī)則,這個(gè)rule下面簡(jiǎn)單說下。
Password Rule
這個(gè)規(guī)則是蘋果提供的,會(huì)生成20字節(jié)長(zhǎng)度的密碼,包含了大小寫,數(shù)字等??梢愿鶕?jù)蘋果給定的來只做相應(yīng)自己的密碼生成規(guī)則,但是又不建議這么做。因?yàn)楫?dāng)前默認(rèn)的密碼生成規(guī)則已經(jīng)是優(yōu)化的可以了,如果在此基礎(chǔ)上繼續(xù)限定的話,會(huì)使密碼的重復(fù)性增加,破解的難度降低。 除非有特殊需求,不然不建議在針對(duì)默認(rèn)規(guī)則做限制生成新的規(guī)則。
具體的可以去官網(wǎng)的規(guī)則生成工具那里看看。
Password Rules Validation Tool
Security Code AutoFill
我最喜歡的功能,幫助用戶直接從短信讀取驗(yàn)證碼,不用再看短信,記密碼,回App錄入這么麻煩了,有了這個(gè)就可以直接從系統(tǒng)讀取到短信的驗(yàn)證碼自動(dòng)填入,只需要?jiǎng)觿?dòng)你的手指頭~~~
看下蘋果的效果圖


代碼也非常簡(jiǎn)單
let securityCodeTextField = UITextField()
securityCodeTextField.textContentType = .oneTimeCode
storyboard的配置與username沒有區(qū)別。其他的事情只需要等著系統(tǒng)幫你做就好了~,但是,是的還有但是,你必須使用系統(tǒng)鍵盤才會(huì)有這個(gè)提示。
我自己體驗(yàn)了一下,雖然Session演示中給的都是對(duì)英文的自然語言分析,其實(shí)對(duì)中文還算OK。截圖沒找到就不上了,大家可以升級(jí)下iOS 12找個(gè)webView 的登錄界面試一下,主流公司的產(chǎn)品基本都適配了。
設(shè)備間驗(yàn)證
Federated authentication,暫時(shí)這么叫吧,這個(gè)是我暫時(shí)沒法驗(yàn)證的,是各個(gè)設(shè)備之間做驗(yàn)證登錄等等一系列操作。等有機(jī)會(huì)繼續(xù)補(bǔ)充上去。