In Beta version of iOS 12 I have observed it gives OTP(from SMS) in keyboard suggestion.
So is there any API which they have created for developers ? Or that would just be an OS feature.
It is OS feature but you need to set UITextField
's input view's textContentType
property oneTimeCode
.
otpTextField.textContentType = .oneTimeCode
NOTE: Security Code AutoFill will only works with System Keyboard it will not work with custom keyboard.
When you get OTP it will look something like this:
Unfortunately, you can't read the full message, you can only read the verify-code in the message.
Swift:
@available(iOS 12.0, *)
public static let oneTimeCode: UITextContentType
myTextField.textContentType = .oneTimeCode
Objective-C:
UITextContentType const UITextContentTypeOneTimeCode NS_AVAILABLE_IOS(12_0);
myTextField.textContentType = UITextContentTypeOneTimeCode;
These following verification code CAN be recognized by the system:
A pure number of lengths of 3-8
like : 123 1234 12345 666666 1234567 12345678 ...
These following verification code CANNOT be recognized by the system:
(i).length of code is less than 3 or more than 8 (ii).include letters
like : 1 12 123a 9h7d 123456789 ...
Others:
Security Code AutoFill will only works with System Keyboard. It will not work with custom keyboard.
There is no api, but you need set textContentType
as .oneTimeCode
of UITextField
property
otpTextField.textContentType = .oneTimeCode
one more thing,
If you use a custom input view for text field, iOS cannot display the necessary AutoFill UI.
Adding to other answers, after testing it seems that the text message needs to include either "Verification number" or "Code" before the number to work properly.
Working:
Not working:
值得一提的是,似乎需要在手机上打开“自动填充密码”键盘选项。
No there is no public API for that. It is automatically handled by OS. You just need to set UITextField's input view's textContentType property to oneTimeCode.
textField.textContentType = .oneTimeCode
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.