web-dev-qa-db-fra.com

Une application iOS pourrait-elle lire / accéder au texte SMS?

Je veux implémenter une application iOS qui utilisera le texte SMS comme information brute. Je pense que Apple ne le permet pas. Une application iOS pourrait-elle lire/accéder SMS texte? Ou avons-nous une autre approche pour faire de même?

Modification: Peut-on lire des messages de service qui ne sont pas enregistrés dans la boîte SMS comme un message de solde?

15
Saurabh Shukla

Correct, vous ne pouvez pas y accéder sur un iPhone standard non jailbreaké. Vous devriez déposer un bogue auprès d'Apple, peut-être qu'ils amélioreront l'accès SMS à l'avenir.

  1. Pas possible
  2. Vérifiez ceci

  3. Pour SMS envoi via l'application autorisé mais pour accéder à la boîte de réception pour sms/email non autorisé.

Cela n'est possible que lorsque le téléphone est jailbreaké. Il existe de nombreux outils pour jailbreaker votre téléphone.

Une fois Jailbreaké, une application peut ouvrir la base de données SQLite à

/var/mobile/Library/SMS/sms.db et lisez le tableau des messages.

Il contient, la date/heure de réception du message, le numéro de téléphone de l'expéditeur/destinataire et même le texte clair du message.

16
Pradhyuman sinh

Je suis presque sûr que cela ne peut se faire que sur des téléphones jailbreakés.

Mettez cette liste de lancement dans /System/Library/LaunchDaemons. Il déclenchera le script chaque fois que la base de données sms change.

<?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>

Pour le script, j'utiliserais quelque chose comme ceci pour déterminer s'il y a un message contenant la chaîne:

sqlite3 /var/mobile/Library/SMS/sms.db "select 'String Found' from message where text like '&&XX&&' order by date desc limit 1"

pour tout le script peut-être

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

Dans les mots d'ordre lorsque la chaîne est trouvée, supprimez tous les messages contenant la chaîne et exécutez le script de commande.

Bien sûr, vous avez besoin d'un téléphone jailbreaké et de sqlite de cydia. Le même processus pourrait également être appliqué aux autres bases de données. Je ne sais pas comment vous vous y prendriez sans script Shell, mais je suis sûr que c'est possible. Je n'ai pas encore testé le script, vous voudrez peut-être faire une copie de votre sms.db avant d'essayer. https://stackoverflow.com/a/8120599/4731224

2
J.Arji