FCM通知前后台表现异常:图标重置与Activity跳转问题
FCM通知前后台表现差异的原因分析
核心原因:FCM消息类型的后台处理逻辑差异
FCM消息分为通知消息和数据消息两种,系统对它们的处理逻辑在前后台完全不同:
- 前台状态:无论哪种消息,都会触发
FirebaseMessagingService的onMessageReceived方法,此时你通过自定义的sendNotification方法控制了通知图标和启动的ManagementActivity,所以表现正常。 - 后台状态:如果发送的是通知消息,系统会直接接管通知的展示流程,不会调用你的
onMessageReceived。这时系统会使用AndroidManifest中配置的默认应用图标作为通知图标,并且默认打开Manifest中标记为启动页的MainActivity,完全忽略你在sendNotification里的自定义配置。
次要原因:通知渠道与配置缺失
- 通知渠道创建时机问题:你只在
MainActivity的onCreate中创建通知渠道,如果App从未启动过(或后台时渠道还未初始化),系统展示通知时会使用默认渠道配置,导致图标异常。 - 通知消息payload未指定自定义参数:如果后台接收的是通知消息,你没有在payload中指定
icon(自定义通知图标)和click_action(点击后启动的Activity),系统就会用默认值填充。
解决方向参考
- 统一使用数据消息:让后端只发送数据消息,这样无论前后台都会进入
onMessageReceived,由你自己的sendNotification方法处理通知,确保图标和启动Activity一致。 - 通知消息补充配置:如果必须用通知消息,在payload中添加以下参数:
"icon": "@drawable/your_custom_notification_icon":指定自定义通知图标"click_action": "com.your_package_name.NOTIFICATION_CLICK":指定点击动作
同时在AndroidManifest中给ManagementActivity添加对应的intent-filter:
<activity android:name=".ManagementActivity"> <intent-filter> <action android:name="com.your_package_name.NOTIFICATION_CLICK" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> - 提前初始化通知渠道:在
FirebaseMessagingService中也添加通知渠道创建逻辑,避免后台时渠道未初始化的问题。
内容的提问来源于stack exchange,提问作者appym243
相关产品推荐
相关产品推荐

