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

升级Gradle、targetSdk至35后Firebase Messaging的onMessage失效求助

解决targetSdk升级到35后Firebase Messaging onMessage不触发的问题

针对你升级后遇到的onMessage函数无响应、仅显示broadcast received for message日志的问题,可按以下步骤排查:

  • 检查FirebaseMessagingService的Manifest注册
    确保自定义FirebaseMessagingService在AndroidManifest.xml中正确配置,且添加android:exported="true"(targetSdk35对组件导出规则更严格):

    <service
        android:name=".your.package.MyFirebaseMessagingService"
        android:exported="true">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
    </service>
    

    同时确认package或namespace配置正确,避免组件路径错误。

  • 验证Desugar配置完整性
    升级desugar_jdk_libs到2.1.4后,需确保在模块的build.gradle中启用core desugaring:

    android {
        compileOptions {
            coreLibraryDesugaringEnabled true
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
        }
    }
    
    dependencies {
        coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.1.4'
    }
    

    缺失coreLibraryDesugaringEnabled true会导致FCM依赖的Java 8+特性无法正常工作。

  • 确认权限配置
    升级到targetSdk35后,需确保已主动申请POST_NOTIFICATIONS权限(针对通知消息场景):

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
        if (ContextCompat.checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS) != PackageManager.PERMISSION_GRANTED) {
            registerForActivityResult(new ActivityResultContracts.RequestPermission(), isGranted -> {
                // 处理权限结果
            }).launch(Manifest.permission.POST_NOTIFICATIONS);
        }
    }
    

    注意:纯数据消息无需此权限,但通知消息在后台展示依赖该权限,且前台时onMessage触发也受权限状态影响。

  • 排查Gradle插件升级后的配置变化
    从com.android.application 7.3.1升级到8.1.4后,需确保模块build.gradle中设置了namespace,避免清单合并时组件路径异常:

    android {
        namespace "your.app.package.name"
        // 其他配置
    }
    
  • 检查Firebase初始化状态
    确认在Application类中正确初始化FirebaseApp(若未自动初始化):

    public class MyApplication extends Application {
        @Override
        public void onCreate() {
            super.onCreate();
            FirebaseApp.initializeApp(this);
        }
    }
    

    同时验证google-services.json文件未过期或配置错误。

  • 区分消息类型测试
    分别测试两种消息类型定位问题:

    • 数据消息(仅含data字段):无论App前后台都应触发onMessage
    • 通知消息(含notification字段):仅App前台时触发onMessage,后台由系统展示通知
      若数据消息也无法触发,重点排查服务注册和desugar配置;若仅通知消息有问题,检查权限申请情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 11:53:13