Windows在不同的 SDK 代系中提供多个通知 API。 如果要在线搜索如何发送通知和查找冲突示例,此页面将帮助你为应用选择正确的 API。
应使用哪个 API?
答案取决于应用面向的 SDK:
| 应用类型 | 推荐的 API | 命名空间 |
|---|---|---|
| WinUI 3 / Windows 应用 SDK (新应用) | AppNotificationManager |
Microsoft.Windows.AppNotifications |
| 未打包的 Win32、WPF 或 WinForms |
AppNotificationManager 通过 NuGet |
Microsoft.Windows.AppNotifications |
| UWP (现有应用,未计划迁移) | ToastNotificationManager |
Windows.UI.Notifications |
重要
大多数 Stack Overflow 答案和较旧的教程使用 Windows.UI.Notifications 命名空间中的 ToastNotificationManager。 这是 UWP WinRT API。 它适用于 UWP 应用,并可能在某些桌面场景中有效,但不推荐将其用作新 Windows 应用 SDK 应用的实现方式。 请使用 AppNotificationManager 进行新开发。
通知 API 比较
| 功能 |
AppNotificationManager (Windows 应用 SDK) |
ToastNotificationManager (WinRT) |
|---|---|---|
| 推荐用于 | WinUI 3、WPF、WinForms、非打包的 Win32 | UWP |
| NuGet 包 | Microsoft.WindowsAppSDK |
无(收件箱) |
| 需要包标识 | 否(打包或未打包的作品) | 某些功能需要这个条件 |
| 推送集成 |
PushNotificationManager (Windows 应用 SDK) |
WNS 通道 API (Windows.Networking.PushNotifications) |
| 主动开发 | 是的 | 仅限维护 |
通知类型
选择正确的 API 后,确定通知的传递方式:
| 类型 | 说明 | 何时使用 |
|---|---|---|
| 本地应用通知 | 在运行时由应用代码直接触发 | 你想要向应用内事件的用户发出警报 |
| 已安排 | 设置通知显示的未来时间 | 日历提醒、警报 |
| 推送 (WNS) | 通过Windows推送通知服务从云服务发送 | 聊天消息,突发新闻,实时更新 |
| 徽章 | 应用任务栏图标上的小覆盖层 | 未读计数、状态指示器 |
有关传递方法的完整细分,请参阅 “选择通知传递方法”。
后续步骤
生成 WinUI 3 或 Windows 应用 SDK 应用?
生成 WPF 或 WinForms 应用?
重要
Windows 应用 SDK推送通知需要 Azure 帐户和 Azure AD 应用注册。 如果您的应用已打包,还需要通过电子邮件提交程序包系列名称(PFN)映射请求——请预留最长一周的处理时间以便在启动前完成。 有关所有先决条件,请参阅 推送通知快速入门。
生成或维护 UWP 应用?
将 UWP 应用迁移到 Windows 应用 SDK?