Xamarin MAUI中Push Notification无法正常工作问题排查
问题描述
已成功配置Firebase并获取到设备令牌,使用Plugin.PushNotification库,Postman调用FCM API推送请求返回正常,但设备始终收不到通知。已确认:
- 设备令牌获取正常
- FCM API推送请求返回正常
- 通知设置已配置
排查方向
检查推送消息的Payload格式
FCM分notification和data两种消息类型,Plugin.PushNotification对二者的处理逻辑有差异:- 仅发
notification类型消息时,应用被后台杀死后部分平台可能无法触发回调,建议测试时同时包含两种字段 - Android平台需指定
priority为high,否则后台可能延迟或无法接收消息。示例合规Payload:{ "to": "你的设备令牌", "priority": "high", "notification": { "title": "测试标题", "body": "测试内容" }, "data": { "key1": "value1" } }
- 仅发
验证插件初始化与权限配置
- 确保在应用启动初期(如Android的
MainActivity#OnCreate、iOS的AppDelegate)完成插件初始化,并注册了通知接收回调 - Android 13+需显式请求
POST_NOTIFICATIONS权限;iOS需在Info.plist配置推送权限描述,并确保用户已授予推送权限
- 确保在应用启动初期(如Android的
核对Firebase配置文件
- Android端确认
google-services.json放置在app目录,文件内包名与Firebase控制台、应用包名完全一致 - iOS端确认
GoogleService-Info.plist已添加到项目,Bundle ID与控制台匹配,且已在开发者后台开启APNs推送功能
- Android端确认
多状态测试与日志排查
- 分别测试应用在前台、后台、完全杀死三种状态下的推送接收情况,不同状态的通知路由逻辑不同
- Android查看Logcat中
FirebaseMessaging相关日志,确认是否有消息接收记录;iOS查看Xcode控制台,排查是否存在推送被拦截的报错信息
检查设备系统级限制
- 确认设备系统通知权限未禁用,应用的通知开关处于开启状态
- Android端关闭省电模式、后台应用限制;iOS端关闭专注模式、应用通知静音设置,这类系统限制可能阻断FCM消息接收
内容的提问来源于stack exchange,提问作者Nguyễn Hữu Thuận
相关产品推荐
相关产品推荐

