4 votes

Comment dire à Messages "Je ne suis pas à la maison" ?

Je laisse mon Mac fonctionner 24 heures sur 24, mais je ne suis pas toujours assis devant lui.

Existe-t-il un moyen de dire au Mac, ou à Messages en particulier, si mon téléphone n'est pas sur le sous-réseau wifi local, de ne pas prendre les messages, de les laisser à mon iPhone.

Actuellement, si, pour une raison quelconque, je suis hors de portée d'iMessage mais capable de recevoir des SMS, les messages n'arrivent jamais sur mon téléphone et ne sont pas retransmis après échec par l'expéditeur, car le système considère que le fait de les remettre à mon Mac est une preuve suffisante que je les ai vus.

Manquer des emplois que l'on m'a proposés il y a 6 heures, juste parce que j'étais afk, n'est pas un spectacle agréable à retrouver en rentrant chez soi.

Une option : me déconnecter de Messages sur le Mac chaque fois que je quitte la maison...
...je ne m'en souviendrai jamais.
Edit : Se déconnecter d'iMessage sur Mac est bien plus compliqué que nécessaire. Elle génère une demi-douzaine de messages et d'e-mails à chaque appareil et compte...

6voto

jherran Points 12554

Tout d'abord, vous devez installer homebrew sur votre système. Si vous ne l'avez pas, visitez http://brew.sh pour obtenir des instructions, ou faites-moi signe et j'essaierai de vous guider.

Ensuite, vous devez installer arp-scan . Pour ce faire, ouvrez un Terminal et tapez brew install arp-scan .

Prochaine étape. Enregistrez le script suivant, que j'ai appelé check-iphone-available.scpt mais vous pouvez les renommer si vous le souhaitez.

set IPHONE to do shell script "if /usr/local/bin/arp-scan -l | grep your-iphone-mac; then echo 1; else echo 0; fi" user name "your-username" password "your-password" with administrator privileges
tell application "System Events"
    tell process "Messages"
        tell menu bar 1
            tell menu bar item "Messages"
                tell menu "Messages"
                    tell menu item "My Status"
                        tell menu "My Status"
                            if IPHONE is not equal to "0" then
                                click menu item "Available"
                            else
                                click menu item "Away"
                            end if
                        end tell
                    end tell
                end tell
             end tell
        end tell
    end tell
end tell

Remplacer your-username , your-password y your-iphone-mac .

  • your-username doit être un utilisateur administrateur qui peut sudo sur votre ordinateur.
  • your-password mot de passe pour cet utilisateur.
  • your-iphone-mac peut être obtenu sur votre iphone, allez sur Settings -> General -> About et copier Wi-Fi Address .

Donnez des autorisations : chmod 775 check-iphone-available.scpt .

Le script exécute comme administrateur la commande arp-scan . Cette commande envoie des paquets ARP aux hôtes du réseau local et affiche les réponses reçues. Le site grep commande rechercher votre iphone sur la réponse recevoir par arp-scan . Si l'iphone est trouvé, alors retourner 1, sinon, retourner 0. Sur 1, le script fait cliquer sur l'élément de menu Disponible dans Messages, sur 0, la même chose sur Away (peut être changé par Offline , On the phone etc).

Alors, faisons-le automatiquement.

Aller au dossier /Users/your-username/Library/LaunchAgents et enregistrez-y le fichier plist suivant. Je l'ai nommé com.username.checkiphone.plist mais, là encore, n'hésitez pas à le modifier.

<?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.your-username.checkiphone</string>

  <key>ProgramArguments</key>
  <array>
    <string>/usr/bin/osascript</string>
    <string>/Users/your-username/bin/check-iphone-available.scpt</string>
  </array>

  <key>Nice</key>
  <integer>1</integer>

  <key>StartInterval</key>
  <integer>60</integer>

  <key>RunAtLoad</key>
  <true/>

  <key>StandardErrorPath</key>
  <string>/tmp/com.your-username.checkiphone-available.err</string>

  <key>StandardOutPath</key>
  <string>/tmp/com.your-username.checkiphone-available.out</string>
</dict>
</plist>

Le fichier est assez explicite. Nous allons lancer la commande /usr/bin/osascript /Users/your-username/bin/check-iphone-available.scpt toutes les 60 secondes, sera lancé au chargement, sauvegardera les erreurs sur /tmp/com.username.checkiphone-available.err et se connecte /tmp/com.username.checkiphone-available.out .

Encore une fois, remplacez your-username de manière appropriée.

Dernière étape, dire au démon Mac launchd de le charger.

launchctl load com.your-username.checkiphone.plist

Pour arrêter le script, il suffit de remplacer le mot load avec unload dans la phrase ci-dessus. Lorsque vous redémarrez votre ordinateur, le script sera à nouveau chargé. Pour l'éviter, déplacez-le dans un autre dossier.

3voto

jherran Points 12554

Deuxième solution. Cette fois-ci basée sur le bluetooth.

Télécharger Tâcheur de proximité Bluetooth . Désolé mon pote, mais c'est 2,99 $.

Exécutez n'importe quel AppleScript lorsqu'un appareil Bluetooth apparié entre et sort de sa portée. Ajustez la portée en utilisant la force du signal.

Sélectionnez votre appareil BT et collez ce script dessus In Range Applescript :

tell application "System Events"
    tell process "Messages"
        tell menu bar 1
            tell menu bar item "Messages"
                tell menu "Messages"
                    tell menu item "My Status"
                        tell menu "My Status"
                                click menu item "Available"
                        end tell
                    end tell
                end tell
             end tell
        end tell
    end tell
end tell

Remplacer Available avec Away dans le script et coller sur Out Of Range Applescript .

2voto

jherran Points 12554

Troisième solution. Pour que cette solution fonctionne, vous devez avoir un compte dans ifttt.com (et Application ifttt pour iPhone ) et aussi un Dropbox compte.

Je crée quelques recettes dans ifttt, Si je suis à la maison, je crée un fichier sur Dropbox. y Si je quitte la maison, créer un fichier sur Dropbox . Vous devrez le modifier avec votre adresse.

  • Le premier crée un fichier appelé AtHome dans le répertoire IFTTT/iOS sur votre dossier Dropbox.
  • Le deuxième crée un fichier appelé Out dans le répertoire IFTTT/iOS sur votre dossier Dropbox.

Sur les deux recettes lorsque votre iphone entre ou sort d'une zone que vous avez définie (votre maison), créez l'un ou l'autre fichier dans votre Dropbox.

Alors c'est plus facile à aborder pour les deux fichiers avec cet applescritp. Le script recherche les fichiers créés et s'il existe, modifie iMessages en conséquence puis supprime le fichier. Si aucun de ces fichiers n'existe, il ne fera rien, donc, iMessages gardera le statut jusqu'à ce que le prochain fichier soit créé.

on FileExists(theFile) -- (String) as Boolean
    tell application "System Events"
        if exists file theFile then
            return true
        else
            return false
        end if
    end tell
end FileExists

set IPHONE to FileExists("/Users/username/Dropbox/IFTTT/iOS/AtHome")
if IPHONE then
    set CHANGESTATUS to true
    do shell script "rm -rf /Users/username/Dropbox/IFTTT/iOS/AtHome"
else
    set CHANGESTATUS to false
end if

if CHANGESTATUS is not equal to true then
    set IPHONE to FileExists("/Users/username/Dropbox/IFTTT/iOS/Out")
    if IPHONE then
        set CHANGESTATUS to true
        set IPHONE to false
        do shell script "rm -rf /Users/username/Dropbox/IFTTT/iOS/Out"
    end if
end if

if CHANGESTATUS then
    tell application "System Events"
        tell process "Messages"
            tell menu bar 1
                tell menu bar item "Messages"
                    tell menu "Messages"
                        tell menu item "My Status"
                            tell menu "My Status"
                                if IPHONE then
                                    click menu item "Available"
                                else
                                    click menu item "Offline"
                                end if
                            end tell
                        end tell
                    end tell
                end tell
            end tell
        end tell
    end tell
end if

Vous devez changer /Users/username/Dropbox/IFTTT/iOS/ pour indiquer votre véritable chemin.

Après cela, remplacez le script de ma première réponse par ceci, et cela devrait fonctionner !

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X