AirAccept 是一個輕量 macOS 選單列 app,會監看 AirPlay 接收器的連線提示,並且只在提示明確符合 AirPlay 請求時,自動按下 Accept。
這個工具適合已經在「系統設定」中啟用內建 AirPlay Receiver 的 Mac。
macOS 可以把 Mac 當成 AirPlay Receiver 使用,而且系統設定中可以選擇允許誰 AirPlay 到這台 Mac:
但實際使用時,即使 AirPlay Receiver 已經開啟,且 Allow AirPlay for 設為 Anyone on the Same Network 或 Everyone,macOS 仍然可能跳出 AirPlay 連線提示,要求你手動按下 Accept 之後才會開始播放。
AirAccept 就是為了解決這個情境:如果你把 Mac 當成常駐 AirPlay 接收器、媒體播放機,或是沒有固定螢幕/鍵盤滑鼠的遠端主機,每次都要手動按 Accept 會很不方便。
AirAccept 不需要 Screen Recording 權限,也不使用 AppleScript/System Events 自動化。
已測試版本:
AirAccept 使用 macOS Accessibility API 來檢查 Notification Center。只要 Apple 保持 AirPlay 提示的 Accessibility 結構大致相同,應該可以繼續運作;但這不代表保證支援所有 macOS 版本。
make test
make app
app bundle 會產生在:
build/AirAccept.app
如果要建置後直接啟動:
make run
如果 open 看起來沒有反應,可以用 foreground 模式執行,方便看啟動錯誤:
make debug-run
正常執行時,debug-run 會保持執行狀態,直到你退出 AirAccept 或按下 Ctrl-C。
建置完成後可以把 app bundle 移到 /Applications。建議放在固定路徑,因為 macOS 的 Accessibility 權限會和 app identity/path 有關。
build/AirAccept.app。AirAccept -> Request Accessibility Permission。AirAccept -> Launch at Login。確認 app 是否有啟動,可以查看 log:
tail -n 20 "$HOME/Library/Logs/AirAccept/airaccept.log"
你應該會看到類似這樣的內容:
[info] ... AirAccept launched pid=12345
AirAccept 第一次執行時會建立這個設定檔:
~/Library/Application Support/AirAccept/config.json
預設設定:
{
"poll_interval_ms": 2500
}
poll_interval_ms 控制 AirAccept 檢查 Notification Center 中 AirPlay 請求的頻率。
你也可以直接從選單列設定:
AirAccept -> Poll Interval -> 2/3/4/5 seconds
AirAccept 會把 newline-delimited JSON event 寫到:
~/Library/Logs/AirAccept/airaccept.log
每個 event 會包含 timestamp、host process、prompt summary、解析出的 device name、action 和 reason。它也會使用 subsystem com.airaccept.AirAccept 寫入 Apple unified logging。
log 檔約 1 MB 時會輪替,並保留前一份檔案在 airaccept.log.1。
使用選單列項目:
AirAccept -> Launch at Login
這個功能使用 macOS 13+ 的 SMAppService.mainApp login item API。
AirAccept 不會點擊任意系統對話框。提示內容必須包含 AirPlay-specific request text,例如某個裝置想要 AirPlay 到這台 Mac,並且存在 accept-like Accessibility action,AirAccept 才會透過 Accessibility 路徑按下接受。