iOS 12短信阅读API?

10
在iOS 12的测试版中,我观察到系统会在键盘建议中展示短信验证码。那么,他们是否为开发者创建了相应的API呢?或者这只是一个操作系统内置的功能?
6个回答

9

这是操作系统的一个功能,但是你需要设置UITextField的输入视图的textContentType属性为oneTimeCode

otpTextField.textContentType = .oneTimeCode

注意:安全码自动填充只能与系统键盘一起使用,无法与自定义键盘一起使用。

当您收到OTP时,它将看起来像这样:

enter image description here


6

很遗憾,您无法阅读完整的消息,只能阅读消息中的验证代码。

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;

以下验证码系统可以识别:

3-8位的纯数字

例如:123 1234 12345 666666 1234567 12345678 ...


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

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

例如:1 12 123a 9h7d 123456789 ...


其他提示:

安全码自动填充只能与系统键盘一起使用,无法与自定义键盘一起使用。


你的信息来源是什么?我们能获取一个链接吗? - Michael Ozeryansky
黄色的文本,符号“>”用于引用某些内容。我问这个问题是因为你似乎引用了一些参考资料。 - Michael Ozeryansky
我也看到了短信字符的限制是70个! - Matthew Usdin
@mattyU 你在哪里看到的? - 刘俊利
请查看 https://developer.apple.com/news/?id=z0i801mg 和 https://wicg.github.io/sms-one-time-codes/#format。 - Aure77
显示剩余2条评论

4

虽然没有API,但您需要将UITextField属性的textContentType设置为.oneTimeCode

otpTextField.textContentType = .oneTimeCode

还有一件事:

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

点击此处查看苹果提供的更多信息


3

除其他回答外,经测试发现文本消息需要在数字前包含“验证号码”或“代码”才能正常工作。

可行的格式:

  • 验证号码1234
  • 验证号码:1234
  • 验证代码1234
  • 验证代码:1234
  • 代码1234
  • 代码:1234
  • OTP 1234
  • OTP:1234

不可行的格式:

  • 数字1234
  • 验证1234
  • 1234

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

0

很抱歉,这方面没有公共API。它由操作系统自动处理。 您只需要将UITextField的输入视图的textContentType属性设置为oneTimeCode即可。

textField.textContentType = .oneTimeCode


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接