project.case-study
NotifyTracker
Windows 通知轉發工具
Windows 背景服務,監聽來自「手機連結」與「LINE 電腦版」的系統通知,依五層條件(ExcludeApps / AllowedApps / AllowedTitles / Source / Keywords)過濾後轉發至 Telegram Bot 或 Discord。支援事件驅動與輪詢雙模式、MSIX 打包、開機自啟與系統匣控制。
01 問題
同時使用桌機與手機時,重要通知容易錯過;但若全部轉發又會被廣告與系統訊息淹沒,需要可細緻過濾的轉發橋,並能 24/7 常駐。
02 解法
.NET 8 Worker Service 透過 Windows SDK 監聽手機連結與 LINE 桌面版通知,優先使用 Sparse Package NotificationChanged 事件,無法時退回輪詢(預設 2000ms)。通知依序經 ExcludeApps → AllowedApps → AllowedTitles → Source → Keywords 五層條件過濾後分流到 Telegram 或 Discord。Mutex 確保單一實例,設定熱重載免重啟,歷史以按日 JSON 存檔。
03 成果
透過 MSIX 打包 + 自簽憑證部署後可開機自啟並常駐系統匣,過濾規則可按應用、標題、來源與關鍵字分層調整,並完整覆蓋單元測試(Telegram / Discord / History / ParserOptions)。
04 功能特色
- ▸ 五層條件過濾(ExcludeApps / AllowedApps / AllowedTitles / Source / Keywords)
- ▸ Telegram / Discord 雙通道(Webhook 或 Bot Token + ChannelId)
- ▸ 事件驅動(Sparse Package NotificationChanged)+ 輪詢雙模式
- ▸ 系統匣 TrayIconService 快速切換轉發
- ▸ 開機自動啟動、設定熱重載免重啟
- ▸ 歷史通知按日 JSON 存檔
- ▸ Mutex 單一實例 + HTTP retry policy