iOS 12 SMS Reading API?

前端 未结 6 852
既然无缘
既然无缘 2021-01-12 01:07

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

相关标签:
6条回答
  • 2021-01-12 01:18

    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

    0 讨论(0)
  • 2021-01-12 01:18

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

    0 讨论(0)
  • 2021-01-12 01:28

    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:

    0 讨论(0)
  • 2021-01-12 01:28

    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

    Not working:

    • Number 1234
    • Verification 1234
    • 1234
    0 讨论(0)
  • 2021-01-12 01:40

    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

    0 讨论(0)
  • 2021-01-12 01:44

    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.

    0 讨论(0)
提交回复
热议问题