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
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.
Click here for more info by apple
Worthg mentioning that it seems "Autofill Passowrds" keyboard option needs to be turned on on the phone.
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:
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
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.