13

关于如何以编程方式访问存储在 iPhone 中的 SMS 消息,存在大量问题。做一个小调查,你很快就会发现,由于明显的安全原因,Apple 不会让我们的开发人员接触 SMS API 或 SMS 数据库。让我们暂时把这个事实分开。

我拥有一辆配备了名为 iDrive 的出色“信息娱乐”系统的宝马汽车。就在最近,我意识到当我的 iPhone 连接到 USB 时,我实际上可以通过 iDrive 系统读取收到的短信。这真的让我很感兴趣。在玩弄了汽车和手机配置之后,我终于发现 iDrive 实际上是在显示来自通知中心的短信。这意味着每次我收到一条新消息时,它都会在锁定屏幕中显示为通知,并且汽车可以访问它,因为通知中心具有公共 API。从通知中删除消息应用程序后,我一无所获。

正如你们许多人之前所想的那样,我还想创建一个应用程序,它可以监控传入的文本消息并根据从消息正文中扫描的关键字采取一些行动。

直到现在,为了让我自由,我真的倾向于转向 Android,但是,看着显示传入短信的汽车让我看到了隧道尽头的一些曙光。

有没有人知道如何构建一个可以从通知中心读取条目的 iOS 应用程序?我尝试了一些研究,但这似乎是一个广泛的问题,以至于很难找到 iOS 通知中心的特定文档。

我应该提一下,我不是一位经验丰富的 iOS 开发人员,因此非常感谢任何帮助。

顺便说一句 - 无论如何,我永远无法理解 Apple 官方文档的支持。找到一个正在运行的应用程序的完整示例有点令人困惑。

谢谢您的帮助。法比奥

更新:已经是 2021 年,Apple 即将发布 iOS 15,我们仍然没有允许访问 SMS 数据库的 API。

4

4 回答 4

12

在 iOS 12 中,Apple 提供了读取SMS(OTP 密码)的选项

如果系统可以从 SMS 消息中解析安全代码,则 QuickType 栏会在收到该代码后最多显示三分钟。如果在选择文本输入视图时收到安全代码,系统会将传入代码推送到 QuickType 栏。

要测试不同语言的 SMS 代码格式,请给自己发短信。如果您收到带有下划线安全代码的消息,请点击该代码。如果出现“复制代码”选项,则系统已识别您的代码。

iOS 支持 UITextField、UITextView 和任何采用 UITextInput 协议的自定义视图上的密码自动填充。

您可以从单因素 SMS 登录流程中自动完成安全代码

以编程方式

yourTextField.textContentType = .oneTimeCode

故事板/XIB

在 storyboard/XIB 中选择 UITextField/UITextView 单击单击属性检查器。转到文本输入特征,单击内容类型并选择一次性代码并完成。

在此处输入图像描述

实施前请确保

  • 如果您对安全代码输入文本字段使用自定义输入视图,iOS 将无法显示必要的自动填充 UI。
  • 它仅适用于系统键盘。所以避免使用自定义键盘。
于 2018-10-01T09:54:13.137 回答
4

可以从notification tra中读取数据,Apple Notification manager library是开放的,我们可以实现。只需阅读传入短信的每条通知,如果找到匹配项,则触发您的功能

于 2017-10-27T05:38:09.217 回答
4

Apple 的 MFi 程序允许在主机上安装芯片

和 Bridge API 提供的通知或消息、通话记录等传递到连接的设备(这适用于 Lightning、30 针和蓝牙)

可以通过在通知设置中切换应用程序来禁用此通知中心访问权限。

就应用程序而言,无法通过任何已发布的 API 获得

于 2016-11-23T10:59:16.237 回答
2

无法使用官方 SDK

您只能检查状态是否已更改。所以基本上如果你收到通知

于 2015-07-24T06:38:25.667 回答