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

6
我希望了解一个回调函数,可以在我从Firebase接收到OTP代码后自动调用并填充OTP文本字段。
我已经尝试过: textfield.contentType = onetimecode。
但这不是我要找的,这只是将从短信中获取的otp代码作为自动完成。 实际上,我正在寻找一个回调函数,在我手机上接收OTP代码后自动触发。
我认为图片能够清楚地说明问题,我想在不点击(键盘占位符)接收到的OTP代码的情况下填充文本字段。

OTP screen


我不认为这是可能的。这是 Android 的特性,你在任何 iOS 应用程序中见过它吗? - Phil Dukhov
1
很可能不行。但是你能解释一下为什么不可能吗?是因为沙盒的原因还是功能尚不存在?如果你知道原因,请在答案部分回复。 - Rehan Ali Khan
@RehanAliKhan,我认为iOS不支持这样的回调。它是按照这种方式设计的 - 需要在输入视图上进行明确的用户操作。 参考:https://developer.apple.com/documentation/security/password_autofill/enabling_password_autofill_on_a_text_input_view#overview - singhabhi13
1个回答

4

按设计,iOS应用程序无法访问收到的短信。有很多关于类似主题的讨论。

限制的主要原因是隐私。没有公开记录的API可以接收短信时的回调。如果您尝试黑客攻击iOS并监听私有通知,则您的应用程序可能会被App Review团队拒绝。

在研究这个主题时,我发现了一些有趣的内容。你可以创建一个扩展程序来接收短信和呼叫事件,以用于垃圾邮件过滤的目的。这种类型的扩展称为苹果生态系统中的SMS和通话报告扩展。在查看此扩展的文档时,乍一看,如果我们可以向主机应用程序通知有关传入消息,就可以实现所要求的行为。但是,在浏览文档末尾时,我发现由于设计原因,该扩展具有一些附加限制:

  • 扩展不能与主机应用程序共享数据。
  • 扩展无法直接访问网络。
  • 扩展仅在发送方号码不在联系人列表中时接收事件

additional restrictions

无论如何,这都与文档有关,我还没有尝试过扩展上的任何内容。您可以尝试创建一个扩展程序,并查看其他可能的解决方案。

例子:

我脑海中的1个不好的解决方案是,您的扩展程序使用短信内容调用您的服务器,然后您的服务器将短信内容转发到静默推送通知有效负载中。当您的应用程序接收到静默通知时,它就能够填充字段。但是,这并不是扩展的预期目的。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接