【问题标题】:How to auto fill OTP textfield on OTP code received from firebase in iOS, Swift? (WITHOUT TAPPING)如何在从 iOS、Swift 中的 firebase 收到的 OTP 代码上自动填充 OTP 文本字段? (无需点击)
【发布时间】:2022-02-21 02:21:49
【问题描述】:

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

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

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

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

【问题讨论】:

  • 我认为这不可能。它是 Android 功能,您在任何 iOS 应用中都见过吗?
  • 很可能没有。但是你能解释一下为什么这是不可能的,是因为沙盒还是功能还不存在?如果您知道原因,请在答案部分回复。
  • @RehanAliKhan 我认为 iOS 不支持这样的回调。它是这样设计的——需要对输入视图进行明确的用户操作。参考:developer.apple.com/documentation/security/password_autofill/…

标签: ios swift firebase callback one-time-password


【解决方案1】:

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

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

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

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

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

示例:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-10
    • 2020-06-26
    • 2018-08-10
    • 2021-12-31
    • 1970-01-01
    • 2022-10-13
    • 1970-01-01
    相关资源
    最近更新 更多