【问题标题】:Swift get OneTimePassword (OTP) in classSwift 在课堂上获取 OneTimePassword (OTP)
【发布时间】:2020-06-26 16:55:27
【问题描述】:

我已经阅读了如何使用 Storyboards 和 UI 文本元素来实现这一点,这似乎很简单,但是,我正在构建一个混合应用程序,所以我需要在控制器中拦截这个 OTP 并将其提供给另一个事件侦听器会将其传递给我的应用程序,因此在这种情况下,我无法使用 ios 文本输入字段等,但肯定有一种方法可以连接设备功能以接收和解析它的值?

【问题讨论】:

  • 不,没有。 iOS 提供检测到的 OTP 作为适当类型文本字段的键盘快捷键。您的代码只有在“输入”到文本字段后才能获取代码
  • 我们在谈论同样的事情。我正在考虑当您注册 tinder 并添加您的电话号码,然后您会收到一条带有代码的短信,有时屏幕上的输入会自动填充此号码,我无法接收类/控制器中的该数字并将其发送到其他地方的另一个服务
  • 是的。这就是我所指的。代码没有被任何 api 暴露。用户可以从快捷栏中选择它以自动输入。我从未见过它自动填充。如果应用程序这样做,那么它正在使用其他方法,可能是它自己的推送通知。 iOS 自动将短信中的代码输入到文本字段中会侵犯隐私

标签: ios swift swift3


【解决方案1】:

您无法解析安全代码。它只能这样工作:

如果系统可以从 SMS 消息中解析安全代码,则 QuickType 栏在代码输入后最多显示三分钟 已收到。如果在文本输入视图显示时收到安全码 选中后,系统将传入的代码推送到 QuickType 栏。


参考:Swift Docs


UPD:粘贴到UITextField的代码就可以访问了

【讨论】:

  • 但是可以使用该代码自动填充输入,所以有没有办法在控制器中获取代码并将其发送到另一个服务?
  • @Kravitz 您可以监听UITextField 的值变化,当它达到您需要的字符数时,尝试将其发送到您想要的任何地方。但是,没有办法直接访问它。 iOS 自己完成的自动填充和其他相关工作。
  • 这通过将contentType 设置为UITextField 来完成,然后iOS 将建议用户自动完成。