You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FCM通知前后台表现异常:图标重置与Activity跳转问题

FCM通知前后台表现差异的原因分析

核心原因:FCM消息类型的后台处理逻辑差异

FCM消息分为通知消息和数据消息两种,系统对它们的处理逻辑在前后台完全不同:

  • 前台状态:无论哪种消息,都会触发FirebaseMessagingService的onMessageReceived方法,此时你通过自定义的sendNotification方法控制了通知图标和启动的ManagementActivity,所以表现正常。
  • 后台状态:如果发送的是通知消息,系统会直接接管通知的展示流程,不会调用你的onMessageReceived。这时系统会使用AndroidManifest中配置的默认应用图标作为通知图标,并且默认打开Manifest中标记为启动页的MainActivity,完全忽略你在sendNotification里的自定义配置。

次要原因:通知渠道与配置缺失

  1. 通知渠道创建时机问题:你只在MainActivity的onCreate中创建通知渠道,如果App从未启动过(或后台时渠道还未初始化),系统展示通知时会使用默认渠道配置,导致图标异常。
  2. 通知消息payload未指定自定义参数:如果后台接收的是通知消息,你没有在payload中指定icon(自定义通知图标)和click_action(点击后启动的Activity),系统就会用默认值填充。

解决方向参考

  1. 统一使用数据消息:让后端只发送数据消息,这样无论前后台都会进入onMessageReceived,由你自己的sendNotification方法处理通知,确保图标和启动Activity一致。
  2. 通知消息补充配置:如果必须用通知消息,在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>
    
  3. 提前初始化通知渠道:在FirebaseMessagingService中也添加通知渠道创建逻辑,避免后台时渠道未初始化的问题。

内容的提问来源于stack exchange,提问作者appym243

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 19:52:21