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

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

提问人:Rehan Ali Khan 提问时间:2/17/2022 最后编辑:Rehan Ali Khan 更新时间:2/21/2022 访问量:5830

问:

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

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

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

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

OTP screen

iOS Swift Firebase 回调 一次性密码

评论

0赞 Phil Dukhov 2/19/2022
我认为这是不可能的。这是 Android 功能,您是否在任何 iOS 应用程序中见过它?
1赞 Rehan Ali Khan 2/20/2022
很可能没有。但是您能解释一下为什么这是不可能的吗,是因为沙盒还是功能尚不存在?如果您知道原因,请在回答部分回复。
0赞 singhabhi13 2/21/2022
@RehanAliKhan 我认为 iOS 不支持这样的回调。它是这样设计的 - 需要对输入视图执行显式用户操作。参考资料: developer.apple.com/documentation/security/password_autofill/...

答:

4赞 Muhammad Zeeshan 2/21/2022 #1

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

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

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

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

additional restrictions

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

例:

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

在我看来,最好的是你已经取得的成就,即设置文本字段的内容类型。