提问人:Rehan Ali Khan 提问时间:2/17/2022 最后编辑:Rehan Ali Khan 更新时间:2/21/2022 访问量:5830
如何在 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 = onetimecode。
但这不是我要找的,这只是从短信中获取的 otp 代码作为自动完成。 我实际上是在寻找一个回调函数,该函数在手机上收到 OTP 代码后自动触发。
我认为图片很清楚,我想在不点击(键盘占位符)收到的 OTP 代码的情况下填充文本字段。
答:
根据设计,iOS 应用程序无法访问传入的 SMS 消息。关于类似的话题有很多讨论。
限制的主要原因是隐私。没有记录在案的公共 API 用于在收到短信时接收回调。如果您尝试破解 iOS 并收听私人通知,那么您的 App 可能会被 App Review 团队拒绝。
在对这个主题进行研究时,我发现了一些有趣的东西,您可以创建一个扩展程序,该扩展程序可以接收传入的短信和呼叫事件,以便进行垃圾邮件过滤。这种类型的扩展在 Apple 的生态系统中称为 SMS 和呼叫报告扩展。在查看此扩展的文档时,乍一看,我认为如果我们能通知主机应用程序有关传入消息的信息,我们就可以实现所要求的行为。但是,在滚动到文档末尾时,我发现根据设计,此扩展有一些额外的限制:
- 扩展无法与主机应用共享数据。
- 扩展无法直接访问网络。
- 仅当发件人的号码不在联系人列表中时,分机才会接收事件
无论如何,这都是关于文档的,我没有在扩展上尝试过任何东西。您可以做的是尝试创建一个扩展并查看其他可能的解决方案。
例:
在我看来,一个糟糕的解决方案是您的扩展使用SMS内容调用您的服务器,然后您的服务器在静默推送通知有效负载中转发SMS内容。当您的应用收到静默通知时,它的作用是预填充该字段。但同样,这不是扩展的预期目的。
在我看来,最好的是你已经取得的成就,即设置文本字段的内容类型。
评论