.NET 8 MAUI Windows应用如何配置后台接收Azure推送通知?
.NET 8 MAUI Windows端配置后台/关闭状态接收推送通知
1. 配置Package.appxmanifest
直接编辑项目Windows平台下的Package.appxmanifest文件(右键选择「查看代码」,比可视化编辑器更直观),添加以下关键配置:
1.1 添加必要功能声明
在<Capabilities>节点下补充:
<Capability Name="internetClient" /> <Capability Name="internetClientServer" /> <uap:Capability Name="pushNotification" />
1.2 注册推送后台任务
在<Applications> -> <Application>节点下新增<Extensions>节点,声明推送通知的后台处理权限:
<Extensions> <uap:Extension Category="windows.backgroundTasks" EntryPoint="Windows.Foundation.Background.TaskEntryPoint"> <uap:BackgroundTasks> <uap:Task Type="pushNotification" /> </uap:BackgroundTasks> </uap:Extension> </Extensions>
注:
EntryPoint无需指定自定义类,Windows系统会自动托管推送通知的后台处理逻辑。
1.3 启用通知显示支持
确保<uap:VisualElements>节点包含以下配置,保证通知能在磁贴、锁屏显示:
<uap:VisualElements ...> <uap:DefaultTile ShowName="allLogos" /> <uap:LockScreen Notification="badgeAndTileText" /> </uap:VisualElements>
2. MAUI代码完善推送逻辑
在Windows平台专属代码中,确保推送通道注册时启用后台接收能力:
2.1 注册推送通道并绑定事件
在Platforms/Windows/App.xaml.cs或专门的推送服务类中,添加通道注册逻辑:
using Windows.Networking.PushNotifications; public async Task RegisterPushChannelAsync() { var channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync(); // 将channel.UploadUri发送到Azure Notification Hub完成设备注册(你已完成此步骤) // 绑定推送接收事件,后台状态下也会触发 channel.PushNotificationReceived += OnPushNotificationReceived; } private void OnPushNotificationReceived(PushNotificationChannel sender, PushNotificationReceivedEventArgs args) { if (args.NotificationType == PushNotificationType.Toast) { args.Cancel = false; // 允许系统默认显示Toast通知 // 可在此处理自定义业务逻辑,如保存通知数据 } }
2.2 启动时重新注册通道
推送通道可能过期,需在应用启动(包括后台唤醒)时重新执行通道注册,保证Azure Notification Hub中的通道地址最新。
3. Azure推送格式要求
向Windows设备推送时,必须使用Toast格式的Payload(不能用Raw格式),系统才会在应用后台/关闭状态下显示通知并触发后台处理。示例Payload:
{ "to": "<Windows设备通道ID>", "notification": { "title": "新通知", "body": "这是一条后台推送消息", "sound": "default" }, "data": { "customKey": "自定义业务数据" } }
关键注意事项
- 无需编写自定义后台任务类,Windows系统会自动处理推送的接收与Toast显示。
- 应用需在Microsoft Store或侧载(开启开发模式)环境下运行,后台推送才能正常工作,调试环境可能需额外配置。
- 若用户手动在任务管理器终止应用,部分场景下无法接收推送,这是Windows系统限制,无法通过配置绕过。
内容的提问来源于stack exchange,提问作者Enrico
相关产品推荐
相关产品推荐

