如何在 iOS、Swift 中自动填充从 firebase 收到的 OTP 代码的 OTP 文本字段? (无需点击)

How to auto fill OTP textfield on OTP code received from firebase in iOS, Swift? (WITHOUT TAPPING)

我想知道一个自动调用并填充 OTP 文本字段的回调函数(在我收到来自 firebase 的 OTP 代码之后)。

我已经尝试过: textfield.contentType = 一次代码。

但这不是我要找的,它只是提供从短信中提取的 otp 代码作为自动完成。 我实际上是在寻找一个在我 phone.

上收到 OTP 代码后自动触发的回调函数

我认为图片很清楚,我想在不点击(键盘占位符之类的东西)接收到的 OTP 代码的情况下填充文本字段。

根据设计,iOS 应用无法访问传入的 SMS 消息。有很多关于类似主题的讨论。

限制的主要原因是隐私。没有记录 public API 接收短信时接收回调。如果您尝试破解 iOS 并收听私人通知,那么您的应用可能会被应用审核团队拒绝。

在研究这个主题时我发现了一些有趣的东西,您可以创建一个扩展程序来接收传入的 SMS 和呼叫事件以过滤垃圾邮件。这种类型的扩展在 Apple 的生态系统中称为 SMS and Call reporting extension。在查看此扩展的文档时,乍一看,我认为如果我们可以将传入消息通知我们的主机应用程序,我们就可以实现所要求的行为。但是当滚动到文档末尾时,我发现这个扩展在设计上有一些额外的限制:

  • 扩展无法与宿主应用共享数据。
  • 分机无法直接访问网络。
  • 仅当发件人号码不在联系人列表中时分机才会接收事件

无论如何,这都是关于文档的,我没有在扩展上尝试过任何东西。您可以做的是尝试创建一个扩展并查看其他可能的解决方案。

示例:

我认为 1 个不好的解决方案是您的分机使用 SMS 内容调用您的服务器,然后您的服务器在静默推送通知负载中转发 SMS 内容。当您的应用程序收到静默通知时,它用于预填充该字段。但这同样不是扩展的预期目的。

在我看来,最好的是您已经实现的,即设置文本字段的内容类型。