Come dire ai messaggi "Non sono a casa"?

4

Lascio il mio Mac in esecuzione 24 ore su 24, 7 giorni su 7, ma non ci sono sempre seduto.

C'è un modo per dire al Mac, o ai messaggi in particolare, se il mio telefono non si trova sulla sottorete wifi locale, non prendere messaggi, lasciarli a prendere il mio iPhone.

Attualmente, se per qualche motivo sono fuori dalla gamma iMessage ma sono in grado di ricevere SMS, i messaggi non arrivano mai al mio telefono e amp; non vengono ritrasmessi dopo aver fallito dal mittente, perché il sistema ritiene che passandoli sul mio Mac sia sufficiente la prova che li ho visti.

Offerte di lavoro mi sono state offerte 6 ore fa, solo perché ero afk, non è uno spettacolo felice per tornare a casa.

Un'opzione: disconnetti Messaggi sul Mac ogni volta che esco di casa ...
... Non me lo ricorderò mai.
Modifica: La disconnessione da iMessage sul Mac è molto più difficile di quanto valga la pena. Genera una mezza dozzina di messaggi e amp; email a tutti i dispositivi & conto ...

    
posta Tetsujin 28.10.2014 - 21:17
fonte

3 risposte

6

Prima di tutto, hai bisogno di homebrew installato sul tuo sistema. Se non lo hai fatto, visita link per le istruzioni, o fammi sapere e cercherò di guidarti.

Quindi devi installare arp-scan . Per farlo, apri un Terminale e digita brew install arp-scan .

Il prossimo passo. Salva il seguente script, ho chiamato check-iphone-available.scpt , ma puoi rinominarlo se lo desideri.

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

Sostituisci your-username , your-password e your-iphone-mac .

  • your-username deve essere un utente amministratore che può sudo sul tuo computer.
  • your-password password per quell'utente.
  • your-iphone-mac può essere ottenuto sul tuo iphone, vai a Settings - > General - > About e copia Wi-Fi Address .

Assegna le autorizzazioni: chmod 775 check-iphone-available.scpt .

Lo script esegue come amministratore il comando arp-scan . Questo comando invia pacchetti ARP agli host sulla rete locale e visualizza tutte le risposte ricevute. Il comando grep cerca il tuo iphone nella risposta ricevuta da arp-scan . Se l'iphone viene trovato, restituisce 1, altrimenti restituisce 0. In 1, lo script fa clic sulla voce di menu Disponibile in Messaggi, su 0, lo stesso su Fuori (può essere modificato da Offline , On the phone , ecc. ).

Quindi, facciamolo automaticamente.

Vai alla cartella /Users/your-username/Library/LaunchAgents e salva lì il seguente file plist. L'ho chiamato com.username.checkiphone.plist , ma di nuovo, sentiti libero di cambiarlo.

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

Il file è piuttosto auto-esplicativo. Lanceremo il comando /usr/bin/osascript /Users/your-username/bin/check-iphone-available.scpt ogni 60 secondi, sarà lanciato al caricamento, salverà gli errori su /tmp/com.username.checkiphone-available.err e accederà a /tmp/com.username.checkiphone-available.out .

Ancora una volta, sostituisci your-username in modo appropriato.

Ultimo passo, dì al launchd delemon Mac di caricarlo.

launchctl load com.your-username.checkiphone.plist

Per interrompere lo script, basta sostituire la parola load con unload nella frase precedente. Al riavvio del computer, lo script verrà caricato nuovamente. Per impedirlo, spostalo in un'altra cartella.

    
risposta data 01.11.2014 - 12:45
fonte
3

Seconda soluzione. Questa volta in base al bluetooth.

Scarica Proximity Tasker Bluetooth . Scusa amico, ma è $ 2,99.

Run any AppleScript when a paired bluetooth device goes in and out of range. Adjust the range using signal strength.

Seleziona il tuo dispositivo BT e incolla questo script su 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

Sostituisci Available con Away nello script e incolla su Out Of Range Applescript .

    
risposta data 05.11.2014 - 20:42
fonte
2

Terza soluzione. Affinché ciò funzioni, è necessario disporre di un account in ifttt.com (e ifttt app per iPhone ) e anche un account Dropbox .

Creo un paio di ricette in ifttt, If I Sono a casa a creare un file su Dropbox e Se esco di casa, crea un file su Dropbox . Dovrai modificarlo con il tuo indirizzo.

  • Il primo crea un file chiamato AtHome nella directory IFTTT/iOS sulla tua cartella Dropbox.
  • Secondo, crea un file chiamato Out nella directory IFTTT/iOS sulla tua cartella Dropbox.

Su entrambe le ricette quando il tuo iPhone entra o esce e l'area che hai definito (la tua casa), crea uno o un altro file nel tuo Dropbox.

Quindi questo è più facile da virare per entrambi i file con questo applescritp. Lo script sta cercando i file creati e, se esiste, cambia iMessages di conseguenza e quindi elimina il file. Se nessuno di questi file esiste, non farà nulla, quindi iMessages manterrà lo stato fino alla creazione del prossimo file.

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

Devi cambiare /Users/username/Dropbox/IFTTT/iOS/ per puntare al tuo percorso reale.

Dopo questo, sostituisci lo script della mia prima risposta con questo, e dovresti lavorare!

    
risposta data 06.11.2014 - 17:00
fonte

Leggi altre domande sui tag