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

Flutter FCM通知问题:未及时查看后打开APP无法看到通知

FCM通知延迟打开应用后不显示的解决排查方案

应用整体运行正常,但FCM通知送达后,用户间隔一段时间再打开应用就无法看到通知,以下是常见的排查和解决方向:

1. 检查通知渠道优先级设置

低优先级的通知容易被系统自动清理,确保你的FCM通知渠道设置了足够高的优先级:

NotificationChannel channel = new NotificationChannel("fcm_channel_id", "FCM通知", NotificationManager.IMPORTANCE_HIGH);
NotificationManager notificationManager = getSystemService(NotificationManager.class);
notificationManager.createNotificationChannel(channel);

发送通知时指定该渠道ID,避免使用默认的低优先级渠道。

2. 确认系统通知清理规则

部分安卓设备会在内存不足或后台应用被回收时清理旧通知:

  • 发送通知时设置setAutoCancel(false),避免通知被自动取消;
  • 检查应用的「通知历史」权限是否开启(部分国产ROM需要手动开启),确保系统保留通知记录;
  • 避免设置过短的setTimeoutAfter(),如果需要通知长期保留,不要设置自动超时。

3. 区分FCM消息类型并处理

  • 通知消息:FCM会直接展示,但如果应用被完全杀死,系统可能不会保留通知。此时在应用启动时调用FirebaseMessaging.getInstance().getInitialMessage(),获取启动时触发的FCM消息,重新构建并展示通知;
  • 数据消息:FCM不会自动展示,需要你自己将通知内容存储到本地数据库(如Room),应用启动时从数据库读取未展示的通知并重新推送。

4. 适配安卓12+的通知权限

安卓12及以上版本需要明确申请通知权限:

  1. 在AndroidManifest.xml中添加权限声明:
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
  1. 在应用启动时请求权限:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
    if (ContextCompat.checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS) != PackageManager.PERMISSION_GRANTED) {
        ActivityResultContracts.RequestPermission requestPermission = new ActivityResultContracts.RequestPermission();
        registerForActivityResult(requestPermission, isGranted -> {
            // 处理权限申请结果
        }).launch(Manifest.permission.POST_NOTIFICATIONS);
    }
}

示例截图

通知送达时的状态
延迟打开应用后无通知的状态

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 21:05:06