18

我想实现一个 iOS 应用程序,它将使用 SMS 文本作为原始信息。我认为苹果不允许这样做。iOS 应用程序可以读取/访问 SMS 文本吗?还是我们有任何其他方法可以做到这一点?

修改:我们可以阅读余额消息等未保存在短信框中的服务消息吗?

4

2 回答 2

17

正确,您无法在标准的非越狱 iPhone 上访问这些内容。您应该向 Apple 提交错误,也许他们将来会改进 SMS 访问。

  1. 不可能
  2. 检查这个

  3. 允许通过应用程序发送短信,但不允许访问收件箱以获取短信/电子邮件。

只有当手机越狱时才有可能。有很多工具可以越狱你的手机。

越狱后,应用程序会在以下位置打开 SQLite 数据库

/var/mobile/Library/SMS/sms.db 并读取消息表。

它包含收到消息的日期/时间、发件人/收件人的电话号码,甚至是消息的明文。

于 2013-10-26T10:12:54.737 回答
2

我很确定它只能在越狱手机上完成。

将这个已启动的 plist 放入/System/Library/LaunchDaemons.它将在 sms 数据库更改时触发脚本。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
 <key>Label</key>
 <string>com.billybob.SMSremote</string>
 <key>ProgramArguments</key>
 <array>
 <string>/usr/sbin/script</string>
 </array>
 <key>Nice</key>
 <integer>20</integer>
 <key>WatchPaths</key>
 <array>
 <string>/private/var/mobile/Library/SMS/sms.db</string>
 </array>
</dict>
</plist>

对于脚本,我将使用以下内容来确定是否有包含字符串的消息:

sqlite3 /var/mobile/Library/SMS/sms.db "select 'String Found' from message where text like '&&XX&&' order by date desc limit 1"

对于整个脚本也许

case $( sqlite3 /var/mobile/Library/SMS/sms.db "select 'String Found' from message where text like '&&XX&&' order by date desc limit 1" ) in 'String Found') sqlite3 /var/mobile/Library/SMS/sms.db "delete * from message where text like '&&XX&&'" ; commandscript;;esac

找到字符串时按顺序删除包含该字符串的所有消息并执行命令脚本。

当然你需要一部越狱的手机和来自 cydia 的 sqlite。同样的过程也可以在其他数据库上完成。我不确定如果没有 shell 脚本你会怎么做,但我相信这是可能的。我还没有测试过这个脚本,所以你可能想在尝试之前复制你的 sms.db。 https://stackoverflow.com/a/8120599/4731224

于 2017-02-16T07:46:11.600 回答