在研究以编程方式读入传入短信的可能性后,我意识到它不可能在标准的iPhone上。对iPhone上的传入短信作出反应
我研究了应有下列行动序列中的应用:
- 用户#1具有特定关键字发送短信给用户#2,也许& & XX & &
- 用户# 2收到短信和基于关键字的东西应该触发
鉴于无法让手机采取基于短信的keyw ork自动可能在接收到短信时手动触发某些事件,并将我们的短信作为输入。
我的问题是,如果有人有任何想法什么是可能的或/和什么是最简单的方式使用短信作为输入的最佳方法。
在研究以编程方式读入传入短信的可能性后,我意识到它不可能在标准的iPhone上。对iPhone上的传入短信作出反应
我研究了应有下列行动序列中的应用:
鉴于无法让手机采取基于短信的keyw ork自动可能在接收到短信时手动触发某些事件,并将我们的短信作为输入。
我的问题是,如果有人有任何想法什么是可能的或/和什么是最简单的方式使用短信作为输入的最佳方法。
不,在非越狱手机上,您无法获取有关短信或电话的任何数据。它们完全脱离了您的应用程序。
是的,但手动通过用户交互,而不是自动。让你的应用注册一个URL处理程序。然后,如果用户在SMS消息内点击该表单的URL,您的应用将被触发。
我很确定它只能在越狱手机上完成。
将此启动plist放入/ System/Library/LaunchDaemons中。只要短信数据库发生变化,它就会触发脚本。
<?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的副本。
如果在iPhone中没有读取传入短信的API,那么WhatsApp激活代码在安装时如何工作。仅供参考,在iphone中安装whatsapp时,激活码会发送到您输入的手机号码,然后由whatsapp自动使用以进行注册。所以不知何故,他们读取传入的短信并将其用于注册。如果是这种情况,它是如何完成的?谢谢。
欢迎来到SO,这是一篇很好的文章。 :)我建议你看看常见问题:http://stackoverflow.com/faq了解更多关于这个真棒社区! – ForceMagic