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

Reh*_*han 6 callback one-time-password ios firebase swift

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

我已经尝试过:textfield.contentType = onetimecode。

但这不是我想要的,这只是将从短信中获取的 otp 代码作为自动完成提供。我实际上正在寻找一个在我的手机上收到 OTP 代码后自动触发的回调函数。

我认为图片很清楚,我想填充文本字段而不点击(键盘占位符)收到的 OTP 代码。

一次性密码屏幕

Muh*_*han 4

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

限制的主要原因是隐私。没有记录在案的公共 API 可以在收到 SMS 时接收回调。如果您尝试破解 iOS 并监听私人通知,那么您的应用程序可能会被应用程序审核团队拒绝。

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

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

额外的限制

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

例子:

在我看来,第一个糟糕的解决方案是您的分机使用短信内容调用您的服务器,然后您的服务器在静默推送通知负载中转发短信内容。当您的应用程序收到静默通知时,它的作用是预填充该字段。但这又不是扩展的预期目的。

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