简体   繁体   中英

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.

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.

Click here for more info by apple

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

值得一提的是,似乎需要在手机上打开“自动填充密码”键盘选项。

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM