NITESH
NITESH

Reputation: 537

iOS 12 SMS Reading API?

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.

Upvotes: 10

Views: 11079

Answers (6)

jonoljon
jonoljon

Reputation: 31

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:

  • Verification number 1234
  • Verification number: 1234
  • Verification code 1234
  • Verification code: 1234
  • Code 1234
  • Code: 1234
  • OTP 1234
  • OTP: 1234

Not working:

  • Number 1234
  • Verification 1234
  • 1234

Upvotes: 3

AntDC
AntDC

Reputation: 1917

Worthg mentioning that it seems "Autofill Passowrds" keyboard option needs to be turned on on the phone.

Upvotes: 1

Viren Malhan
Viren Malhan

Reputation: 115

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

Upvotes: 0

刘俊利
刘俊利

Reputation: 358

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.

Upvotes: 6

iParesh
iParesh

Reputation: 2368

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

Upvotes: 4

iVarun
iVarun

Reputation: 6611

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:

enter image description here

Upvotes: 9

Related Questions