对iPhone上传入的短信做出反应

时间:2011-08-14 16:11:41

标签: iphone ios4 sms

在研究了以编程方式读取传入短信的可能性之后,我意识到在标准iPhone上无法实现这一点。

我正在研究一个应该具有以下行动顺序的应用程序:

  1. 用户#1使用特定关键字向用户#2发送短信,可能&& XX&&
  2. 用户#2接收短信并根据关键字应触发的内容
  3. 鉴于无法让手机自动对基于sms的键盘进行操作,可能会在收到短信时手动触发某些内容并将短信作为输入。

    我的问题是,如果某人有任何可能的想法或/以及以最简单的方式使用短信作为输入的最佳方法。

4 个答案:

答案 0 :(得分:4)

不,在非越狱手机上,您无法获得有关短信或电话的任何数据。它们完全与您的应用程序隔离开来。

答案 1 :(得分:4)

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

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

答案 2 :(得分:3)

是的,但是通过用户交互手动,而不是自动。让您的应用注册URL处理程序。然后,如果用户在SMS消息中点击该表单的URL,则会触发您的应用。

答案 3 :(得分:0)

如果在iphone中没有api读取传入的短信,那么安装时whatsapp激活码如何工作。仅供参考,在iphone中安装whatsapp时,会向您输入的手机号码发送激活码,然后whatsapp会自动使用该号码进行注册。所以他们以某种方式阅读传入的短信并将其用于注册。如果是这样,它是如何完成的?谢谢。