10

在 iOS 12 的 Beta 版中,我观察到它在键盘建议中提供了 OTP(来自 SMS)。
那么他们为开发人员创建了任何 API 吗?或者这只是一个操作系统功能。

4

6 回答 6

9

它是操作系统功能,但您需要设置UITextField输入视图的textContentType属性oneTimeCode

otpTextField.textContentType = .oneTimeCode

注意:安全代码自动填充仅适用于系统键盘,不适用于自定义键盘。

当您获得 OTP 时,它将如下所示:

在此处输入图像描述

于 2018-06-11T06:24:43.990 回答
6

不幸的是,您无法阅读完整的消息,您只能阅读消息中的验证码。

迅速:

@available(iOS 12.0, *)
public static let oneTimeCode: UITextContentType

myTextField.textContentType = .oneTimeCode

目标-C:

UITextContentType const UITextContentTypeOneTimeCode NS_AVAILABLE_IOS(12_0);

myTextField.textContentType = UITextContentTypeOneTimeCode;

以下这些验证码可以被系统识别:

长度为 3-8 的纯数

喜欢:123 1234 12345 666666 1234567 12345678 ...


系统无法识别以下验证码:

(i). 代码长度小于 3 或大于 8 (ii). 包括字母

喜欢:1 12 123a 9h7d 123456789 ...


其他:

安全代码自动填充仅适用于系统键盘。它不适用于自定义键盘。

于 2018-09-28T08:00:52.980 回答
4

没有api,但你需要设置textContentType为属性.oneTimeCodeUITextField

otpTextField.textContentType = .oneTimeCode

还有一件事,

如果您对文本字段使用自定义输入视图,iOS 将无法显示必要的自动填充 UI。

点击此处获取更多苹果信息

于 2018-06-11T06:12:47.237 回答
3

添加到其他答案,经过测试,似乎短信需要在号码之前包含“验证码”或“代码”才能正常工作。

在职的:

  • 验证号 1234
  • 验证号:1234
  • 验证码 1234
  • 验证码:1234
  • 代码 1234
  • 代码:1234
  • 一次性密码 1234
  • 一次性密码:1234

不工作:

  • 号码 1234
  • 验证 1234
  • 1234
于 2019-04-28T17:38:20.107 回答
1

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

于 2019-10-21T15:37:00.570 回答
0

不,没有公共 API。它由操作系统自动处理。您只需要将 UITextField 的输入视图的 textContentType 属性设置为 oneTimeCode。

textField.textContentType = .oneTimeCode

于 2018-11-12T07:02:12.827 回答