¿Cómo decir los mensajes "No estoy en casa"?

4

Dejo mi Mac en funcionamiento 24/7, pero no siempre estoy sentado.

Hay alguna forma de decirle a la Mac, o a los Mensajes específicamente, si mi teléfono no está en la subred wifi local, no tome mensajes, déjelos para que los recoja mi iPhone.

Actualmente, si por alguna razón estoy fuera del rango de iMessage pero puedo recibir SMS, los mensajes nunca llegan a mi teléfono & no son retransmitidos después de fallar por el remitente, porque el sistema considera que entregarlos a mi Mac es una prueba suficiente de que los vi.

Faltan trabajos que me ofrecieron hace 6 horas, solo porque estaba afk, no es un placer volver a casa.

Una opción: cerrar sesión en Messages en la Mac cada vez que salgo de casa ...
... Nunca lo recordaré.
Editar: Salir de iMessage en la Mac es mucho más problemático de lo que vale. Genera media docena de mensajes & correos electrónicos a cada dispositivo y amp; cuenta ...

    
pregunta Tetsujin 28.10.2014 - 21:17

3 respuestas

6

Primero que todo, necesitas un homebrew instalado en tu sistema. Si no lo has hecho, visita enlace para obtener instrucciones, o avísame e intentaré guiarte.

Entonces necesitas instalar arp-scan . Para hacerlo, abre una Terminal y escribe brew install arp-scan .

Siguiente paso. Guarde el siguiente script, llamé a check-iphone-available.scpt , pero puede cambiar el nombre si lo desea.

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

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

  • your-username debe ser un usuario administrador que pueda usar sudo en su computadora.
  • your-password contraseña para ese usuario.
  • your-iphone-mac se puede obtener en su iPhone, vaya a Settings - > General - > About y copia Wi-Fi Address .

Dar permisos: chmod 775 check-iphone-available.scpt .

El script ejecuta como administrador el comando arp-scan . Este comando envía paquetes ARP a los hosts en la red local y muestra las respuestas recibidas. El comando grep busca su iphone en la respuesta recibida por arp-scan . Si se encuentra el iPhone, devuelva 1; de lo contrario, devuelva 0. En 1, el script hace clic en el elemento del menú Disponible en Mensajes, en 0, lo mismo en Ausente (se puede cambiar por Offline , On the phone , etc.) ).

Entonces, hagámoslo automáticamente.

Vaya a la carpeta /Users/your-username/Library/LaunchAgents y guarde allí el siguiente archivo plist. Lo nombré com.username.checkiphone.plist , pero nuevamente, siéntase libre de 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>

El archivo es bastante autoexplicativo. Lanzaremos el comando /usr/bin/osascript /Users/your-username/bin/check-iphone-available.scpt cada 60 segundos, se iniciará en la carga, guardará los errores en /tmp/com.username.checkiphone-available.err y los registros en /tmp/com.username.checkiphone-available.out .

De nuevo, reemplaza your-username de manera apropiada.

Último paso, dile al demonio de launchd de Mac que lo cargue.

launchctl load com.your-username.checkiphone.plist

Para detener la secuencia de comandos, simplemente reemplace la palabra load con unload en la oración anterior. Cuando reinicies tu computadora, el script se cargará nuevamente. Para evitarlo, muévelo a otra carpeta.

    
respondido por el jherran 01.11.2014 - 12:45
3

Segunda solución. Esta vez basado en bluetooth.

Descargue Tasker de proximidad de Bluetooth . Lo siento amigo, pero es $ 2.99.

  

Ejecute cualquier AppleScript cuando un dispositivo Bluetooth emparejado entra y sale de su alcance. Ajuste el rango usando la intensidad de la señal.

Seleccione su dispositivo BT y pegue este script en 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

Reemplaza Available con Away en la secuencia de comandos y pega en Out Of Range Applescript .

    
respondido por el jherran 05.11.2014 - 20:42
2

Tercera solución. Para que esto funcione, debe tener una cuenta en ifttt.com (y ifttt app para iPhone ) y también una cuenta de Dropbox .

Creo un par de recetas en ifttt, Si Estoy en casa, cree un archivo en Dropbox y Si salgo de casa, cree un archivo en Dropbox . Tendrás que modificarlo con tu dirección.

  • El primero crea un archivo llamado AtHome en el directorio IFTTT/iOS en tu carpeta de Dropbox.
  • El segundo crea un archivo llamado Out en el directorio IFTTT/iOS en tu carpeta de Dropbox.

En ambas recetas cuando su iPhone ingrese o salga y el área que definió (su casa), cree uno u otro archivo en su Dropbox.

Entonces esto es más fácil de eliminar para ambos archivos con este applecritp. La secuencia de comandos busca archivos creados y, si existe, modifique iMessages en consecuencia y luego elimine el archivo. Si ninguno de esos archivos existe, no hará nada, por lo tanto, iMessages mantendrá el estado hasta que se cree el siguiente archivo.

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

Debes cambiar /Users/username/Dropbox/IFTTT/iOS/ para que apunte a tu ruta real.

Después de esto, reemplaza el guión de mi primera respuesta con esto, ¡y debería funcionar!

    
respondido por el jherran 06.11.2014 - 17:00

Lea otras preguntas en las etiquetas