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

Flutter集成Firebase Messaging与本地通知的Release模式问题排查

Release模式下Firebase通知声音丢失、前台图标消失解决方案

一、自定义通知声音丢失修复

1. 确认音频资源配置

把自定义声音文件(比如cat.mp3或cat.ogg)放到android/app/src/main/res/raw目录下,文件名只能用小写字母、数字和下划线,不能带特殊字符。同时检查android/app/build.gradle的sourceSets配置,确保res/raw被正确包含:

android {
    sourceSets {
        main {
            res.srcDirs = ['src/main/res']
        }
    }
}

2. 阻止ProGuard/R8混淆音频资源

在android/app/proguard-rules.pro里加以下规则,防止音频资源被混淆移除:

-keep class android.media.RawResourceAudioTrack { *; }
-keepresourcenames res/raw/*

3. 提前创建通知通道

Android通知通道一旦创建,后续代码修改参数不会生效。建议在初始化本地通知时提前创建通道,避免每次收到消息重复创建:

void _initializeLocalNotifications() {
  const AndroidInitializationSettings initializationSettingsAndroid = AndroidInitializationSettings('launcher_icon');
  final InitializationSettings initializationSettings = InitializationSettings(android: initializationSettingsAndroid);
  _localNotifications.initialize(initializationSettings);

  // 提前创建通知通道
  final AndroidNotificationChannel channel = AndroidNotificationChannel(
    'high_importance_channel',
    'High Importance Notifications',
    description: 'This channel is used for important notifications.',
    importance: Importance.max,
    sound: RawResourceAndroidNotificationSound('cat'),
  );
  _localNotifications.resolvePlatformSpecificImplementation<AndroidFlutterLocalNotificationsPlugin>()?.createNotificationChannel(channel);
}

如果之前已经创建过通道,测试前先卸载应用,清除旧的通道配置。

二、前台通知图标丢失修复

1. 使用符合规范的通知图标

Android要求通知图标必须是透明背景的单色(白色)图标,把图标放到android/app/src/main/res/drawable-xxxhdpi等对应分辨率目录下,或者用mipmap目录的图标。修改初始化代码的图标路径:

const AndroidInitializationSettings initializationSettingsAndroid = AndroidInitializationSettings('@mipmap/launcher_icon');

2. 保留图标资源不被混淆

在proguard-rules.pro添加规则,防止图标资源被ProGuard处理:

-keepresourcenames drawable/*
-keepresourcenames mipmap/*

3. 检查Firebase消息的图标配置

如果是Firebase控制台发送的通知,要在控制台指定通知图标;如果是接口发送消息,payload里要带上android.icon字段:

{
  "notification": {
    "title": "测试通知",
    "body": "测试内容",
    "android": {
      "icon": "@mipmap/launcher_icon"
    }
  }
}

三、额外验证项

  • 确认google-services.json已正确放在android/app目录下,android/app/build.gradle末尾已添加apply plugin: 'com.google.gms.google-services';
  • 测试Release包前先卸载Debug版本,避免缓存干扰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 17:55:17