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

Oppo正式构建版设备中FCM通知在应用终止状态下失效

Oppo设备终止状态下Flutter FCM推送无法接收的解决方案

问题:Flutter应用集成FCM后,Oppo设备前台、后台状态可正常接收通知,但正式构建版中应用终止(完全关闭)时无法收到通知。已排查Firebase初始化、通知权限、通知渠道配置、电池优化设置。

1. 开启Oppo设备的自启动权限

Oppo ColorOS默认限制非白名单应用的后台自启动,FCM需要应用具备后台唤醒权限才能接收终止状态的推送。引导用户操作:

  • 路径1:「设置」→「电池」→「应用耗电管理」→ 找到目标应用 → 开启「允许自启动」和「允许后台活动」
  • 路径2:「设置」→「应用管理」→ 目标应用 →「权限管理」→「自启动」→ 允许

2. 配置FCM后台消息处理回调

应用终止状态下,FCM推送会触发FirebaseMessaging.onBackgroundMessage回调,必须实现该回调才能让系统展示通知。你当前代码缺少这部分配置,按以下步骤补充:

步骤1:添加顶层后台消息处理函数

注意:必须是顶层函数(不能放在类内部):

Future<void> firebaseMessagingBackgroundHandler(RemoteMessage message) async {
  await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
  await initializeLocalNotifications();
  // 展示本地通知
  showLocalNotification(
    message.notification?.title ?? 'Notification',
    message.notification?.body ?? '',
  );
  print("处理后台消息: ${message.messageId}");
}

步骤2:在main函数中注册回调

在FirebaseMessaging.instance初始化后添加:

// 注册后台消息处理回调
FirebaseMessaging.onBackgroundMessage(firebaseMessagingBackgroundHandler);

3. 检查AndroidManifest.xml配置

确保android/app/src/main/AndroidManifest.xml包含FCM服务声明:

<service
    android:name="com.google.firebase.messaging.FirebaseMessagingService"
    android:exported="false">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT" />
    </intent-filter>
</service>

4. 添加正式版混淆规则

如果正式构建开启了代码混淆,在android/app/proguard-rules.pro中添加FCM混淆规则,避免核心代码被混淆:

# Firebase Messaging 混淆规则
-keep class com.google.firebase.messaging.** { *; }
-keep class com.google.firebase.iid.** { *; }
-dontwarn com.google.firebase.messaging.**

5. 优化推送消息类型

FCM推送分为通知消息和数据消息,终止状态下建议使用混合类型消息,提升送达稳定性:

{
  "to": "你的FCM_TOKEN",
  "notification": {
    "title": "测试通知",
    "body": "终止状态测试内容"
  },
  "data": {
    "title": "测试通知",
    "body": "终止状态测试内容",
    "click_action": "FLUTTER_NOTIFICATION_CLICK"
  },
  "priority": "high"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 11:17:07