在研究了以编程方式读取传入短信的可能性之后,我意识到在标准iPhone上无法实现这一点。
我正在研究一个应该具有以下行动顺序的应用程序:
鉴于无法让手机自动对基于sms的键盘进行操作,可能会在收到短信时手动触发某些内容并将短信作为输入。
我的问题是,如果某人有任何可能的想法或/以及以最简单的方式使用短信作为输入的最佳方法。
答案 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会自动使用该号码进行注册。所以他们以某种方式阅读传入的短信并将其用于注册。如果是这样,它是如何完成的?谢谢。