Может ли приложение iOS читать/получать SMS-текст?
Я хочу реализовать приложение iOS, которое будет использовать текст SMS в качестве исходной информации. Я думаю, что Apple этого не допускает. Может ли приложение iOS читать/получать SMS-текст? или у нас есть какой-либо другой подход, чтобы сделать то же самое?
Модификация. Можем ли мы читать служебные сообщения, которые не сохраняются в поле SMS, например, сообщение о балансе?
Ответы
Ответ 1
Правильно, вы не можете получить доступ к ним на стандартном, не-jailbroken iPhone. Вы должны указать ошибку с Apple, возможно, они улучшат доступ к SMS в будущем.
Это возможно только в том случае, если телефон взломан. Существует множество инструментов для джейлбрейка телефона.
Как только Jailbreaked, приложение закроет базу данных SQLite в
/var/mobile/Library/SMS/sms.db
и прочитайте таблицу сообщений.
Он содержит дату/время получения сообщения, номер телефона отправителя/получателя и даже чистый текст сообщения.
Ответ 2
Я уверен, что это можно сделать только на джейлбрейк-телефонах.
Поместите этот начальный plist в /System/Library/LaunchDaemons.
Он вызовет script при изменении базы данных 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>
Для script я бы использовал следующее: чтобы определить, есть ли сообщение, содержащее строку:
sqlite3 /var/mobile/Library/SMS/sms.db "select 'String Found' from message where text like '&&XX&&' order by date desc limit 1"
для всего script возможно
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
В случае слов, когда строка найдена, удалите все сообщения, содержащие строку, и запустите commandcript.
Конечно, вам нужен джейлбрейк-телефон и sqlite от cydia. Такой же процесс можно было бы сделать и в других базах данных. Я не уверен, как вы это сделаете без оболочки script, но я уверен, что это возможно. Я еще не тестировал script, поэтому вы можете захотеть сделать копию своего sms.db перед попыткой.
fooobar.com/info/543395/...