web-dev-qa-db-ja.com

iOSアプリケーションは、SMSテキストを読み取り/アクセスできますか?

SMSテキストを生の情報として使用するiOSアプリケーションを実装したい。Appleはこれを許可しない。iOSアプリケーションは読み取り/アクセスできますか? SMS text?それとも、同じことをする他のアプローチがありますか?

変更:SMSボックスに残高メッセージのように保存されていないサービスメッセージを読み取ることはできますか?

15
Saurabh Shukla

正解です。ジェイルブレイクされていない標準のiPhoneではこれらにアクセスできません。あなたはAppleにバグを報告するべきです、おそらくそれらは将来的にSMSアクセスを改善するでしょう。

  1. ありえない
  2. チェック これ

  3. SMSの場合、アプリケーションを介した送信は許可されますが、SMS/Eメールの受信ボックスへのアクセスは許可されません。

電話が脱獄されている場合にのみ可能です。あなたの電話を脱獄するための多くのツールがあります。

脱獄すると、アプリケーションは次の場所でSQLiteデータベースを開きます。

/var/mobile/Library/SMS/sms.dbおよびメッセージテーブルを読み取ります。

メッセージが受信された日付/時刻、送信者/受信者の電話番号、さらにはメッセージのクリアテキストも含まれています。

16
Pradhyuman sinh

私はそれがジェイルブレイクされた電話でのみ行うことができるとかなり確信しています。

この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が必要です。同じプロセスを他のデータベースでも行うことができます。シェルスクリプトなしでこれを実行する方法はわかりませんが、それが可能であると確信しています。まだスクリプトをテストしていないので、試す前にsms.dbのコピーを作成することをお勧めします。 https://stackoverflow.com/a/8120599/4731224

2
J.Arji