iOS应用程序可以读取/访问SMS文本吗?

时间:2013-10-26 06:48:35

标签: ios iphone sms messageui

我想实现一个iOS应用程序,它将使用SMS文本作为原始信息。我认为Apple不允许这样做。 iOS应用程序可以读取/访问SMS文本吗?或者我们还有其他方法可以做同样的事情吗?

修改:我们可以读取未保存在SMS框中的服务消息,如余额消息吗?

2 个答案:

答案 0 :(得分:16)

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

  1. 不可能
  2. 检查this

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

  4. 只有在手机越狱时才有可能。有许多工具可以越狱你的手机。

    一旦Jailbreaked,应用程序cal打开SQLite数据库

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

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

答案 1 :(得分:2)

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

将此launchd 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