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

Flutter中基于Firebase FCM实现离线推送的可行性及实现方法问询

Firebase FCM离线推送通知实现指南

功能可行性

完全可以实现,FCM本身内置离线消息暂存与自动投递能力,无需依赖定时通知方案。当用户设备离线时,FCM服务器会临时存储消息,一旦设备恢复网络连接,就会自动将暂存的推送给用户。

原生平台支持情况

Android和iOS均原生支持该功能:

  • Android:FCM后台服务与Google推送服务器维持长连接,设备离线时消息由Google服务器暂存,上线后自动投递。需注意部分国产ROM存在后台限制,需引导用户开启应用的自启动/后台运行权限,避免服务被强制终止。
  • iOS:依赖APNs(Apple推送服务)实现离线推送,FCM会将消息转发至APNs,由APNs负责暂存离线消息,设备上线后完成投递。需确保应用已开启推送权限,并在Xcode的后台模式中勾选"Remote notifications"。

Flutter端实现步骤

通过官方firebase_messaging包即可实现,核心配置如下:

  1. 添加依赖:在pubspec.yaml中引入firebase_messaging依赖,完成Firebase项目初始化(配置Android的google-services.json和iOS的GoogleService-Info.plist)。
  2. 权限配置:
    • Android 13及以上:需申请POST_NOTIFICATIONS权限,可直接在代码中请求:
      await FirebaseMessaging.instance.requestPermission();
      
    • iOS:在Info.plist中添加推送权限描述(NSNotificationSettingsUsageDescription等),并在代码中请求用户授权。
  3. 消息处理配置:
    • 对于通知消息:FCM/APNs会自动处理离线暂存与上线投递,无需额外代码。
    • 对于数据消息:需在后台消息回调中处理,确保应用启动时接收并解析暂存的消息:
      FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
      
      Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
        // 处理离线数据消息
        print("处理后台消息: ${message.data}");
      }
      
  4. 测试验证:通过Firebase控制台或FCM发送API推送消息,关闭设备网络后再恢复,即可验证消息自动投递效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 08:29:59