Flutter中Pusher Beams是否有后台消息接收回调及通知内容修改方法?
关于Flutter中Pusher Beams修改推送通知及后台监听的问题
一、能否在推送通知前修改标题和内容?
可以,但要分前台和后台/杀死状态两种场景处理:
应用前台运行时
直接用你提到的onMessageReceivedInTheForeground方法,拿到推送消息后可自由修改标题、内容,再调用Flutter本地通知插件(比如flutter_local_notifications)自定义显示通知,完全替代Pusher Beams默认的通知展示逻辑。应用后台/杀死状态时
此时推送由系统(Android的FCM、iOS的APNs)接管,Flutter层无法直接拦截,需针对不同平台做原生配置:
- Android端:
自定义FirebaseMessagingService(Pusher Beams基于FCM推送),重写onMessageReceived方法。当Pusher推送到达时,该方法会被触发,你可以在这里解析推送内容、修改标题和正文,再调用Android通知管理器手动发送自定义通知,覆盖默认推送展示。 - iOS端:
借助苹果的UNNotificationServiceExtension扩展:- 在Xcode中创建该扩展,在
didReceiveNotificationRequest:withContentHandler:方法里修改推送的标题、内容等字段; - 要求后端在推送Payload中添加
mutable-content: 1参数,系统才会触发这个扩展,允许你修改通知内容后再展示给用户。
注意:普通远程推送(不带静默配置)在后台时,只有这个扩展能修改通知内容,Flutter代码无法直接拦截。
- 在Xcode中创建该扩展,在
二、是否存在后台监听消息的方法?
有,但需分平台处理:
- Android端:
上述FirebaseMessagingService的onMessageReceived方法,无论应用在后台还是被杀死状态(只要设备联网且有推送权限),都会触发该方法,你可在此监听并处理消息,包括修改通知、执行后台逻辑等。 - iOS端:
- 若为静默推送(Payload包含
content-available: 1),应用在后台会被短暂唤醒,你可在Flutter的FirebaseMessaging的onBackgroundMessage回调中处理消息,但执行时间有限(一般不超过30秒); - 若为普通推送,后台状态下无法直接在Flutter层监听消息,只能通过
UNNotificationServiceExtension修改通知内容,或用户点击通知后,在UNUserNotificationCenterDelegate的回调中处理; - Pusher Beams本身没有提供跨平台的后台消息监听方法,需依赖原生系统的推送回调能力。
- 若为静默推送(Payload包含
内容的提问来源于stack exchange,提问作者aryankarim
相关产品推荐
相关产品推荐

