Según documentación de AppleScript , puedo crear una notificación con botones configurándolo para usar alertas en lugar de banners en las preferencias del Centro de notificaciones. Pero cuando guardo un AppleScript como una aplicación, luego lo ejecuto una vez (asumiendo que tiene que iniciarse para indicar a MacOS que existe), nunca aparece en el panel de preferencias.
Entonces, como el plan B, intenté hacer un script de la aplicación para que en lugar de un botón, haga las cosas después de la activación. Funciona bien. Según esta página , los Mavericks activarán una aplicación cuando hagas clic en su banner, pero eso no parece Trabajar más en High Sierra; cualquier mouseover o click solo hace que el banner sea persistente.
Plan C: barra de comandos de la aplicación para activarla y ejecutar la subrutina. Aquí está la subrutina para esperar eso:
on waitForActivate()
set notFrontmost to true
repeat while notFrontmost
tell application "System Events"
set frontApp to name of item 1 of (get processes whose frontmost is true)
if frontApp is "test notifications 2" then set notFrontmost to false
end tell
delay 1
end repeat
end waitForActivate
... que funciona, pero ¿hay una mejor manera de activarlo que sondeando Eventos del sistema una vez por segundo? Parece descuidado. Pensé en guardarlo como permanecer abierto y utilizar un manejador inactivo, pero no tengo claro cómo hacerlo mejor para detectar su estado frontal rápidamente.