跳至主要內容
project.case-study

NotifyTracker

Windows 通知轉發工具

Windows 背景服務,監聽來自「手機連結」與「LINE 電腦版」的系統通知,依五層條件(ExcludeApps / AllowedApps / AllowedTitles / Source / Keywords)過濾後轉發至 Telegram Bot 或 Discord。支援事件驅動與輪詢雙模式、MSIX 打包、開機自啟與系統匣控制。

.NET 8Worker ServiceWindows SDKTelegram Bot APIDiscord WebhookMSIX

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