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

Flutter应用Android可正常接收Firebase推送 iOS设备无法接收求解

修复步骤

  1. 补全iOS通知权限申请逻辑
    iOS 10及以上版本必须主动向用户申请通知权限才能接收推送,你现有代码中未包含权限申请逻辑,在main.dart中Firebase.initializeApp()之后添加如下代码:
NotificationSettings settings = await FirebaseMessaging.instance.requestPermission(
  alert: true,
  badge: true,
  sound: true,
  provisional: false,
);
// 可选:打印权限状态确认授权结果
debugPrint('通知授权状态: ${settings.authorizationStatus}');

// 可选:获取FCM Token确认和Firebase连接正常
String? fcmToken = await FirebaseMessaging.instance.getToken();
debugPrint('当前设备FCM Token: $fcmToken');

拿到FCM Token后可以先去Firebase控制台的「Cloud Messaging」测试推送功能直接发测试通知,优先排除服务端发送逻辑的问题。

  1. 修改AppDelegate.swift配置
    你现有AppDelegate缺少APNs注册、Token同步逻辑,替换为如下代码:
import UIKit
import Flutter
import Firebase
@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
  override func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
  ) -> Bool {
    FirebaseApp.configure()
    // 新增:注册APNs远程通知、设置通知代理
    application.registerForRemoteNotifications()
    UNUserNotificationCenter.current().delegate = self as? UNUserNotificationCenterDelegate
    GeneratedPluginRegistrant.register(with: self)
    return super.application(application, didFinishLaunchingWithOptions: launchOptions)
  }

  // 新增:同步APNs Token到Firebase
  override func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
    Messaging.messaging().apnsToken = deviceToken
    super.application(application, didRegisterForRemoteNotificationsWithDeviceToken: deviceToken)
  }
}
  1. 核对配置一致性
  • 确认你的APNs证书绑定的Bundle ID和当前Flutter iOS项目的Bundle ID完全一致,无拼写、大小写、前后缀差异
  • 确认当前打包的环境和APNs证书环境对应:真机测试用开发环境证书,App Store/TestFlight打包用生产环境证书,不要混用
  • 确认Firebase控制台Cloud Messaging设置页上传的APNs证书就是当前项目对应的证书,不要错传其他应用的证书
  1. 核对推送Payload格式
    iOS系统下如果推送Payload仅包含data字段,后台状态不会主动弹出通知栏提醒,需要同时携带notification字段才能触发系统展示:
{
  "notification": {
    "title": "通知标题",
    "body": "通知内容"
  },
  "data": {
    "自定义key": "自定义值"
  },
  "token": "目标设备FCM Token"
}
  1. 检查系统版本兼容
    你使用的firebase_messaging: 9.1.2版本要求iOS最低部署版本为10.0,确认Xcode中项目的iOS Deployment Target设置不低于10.0。

内容的提问来源于stack exchange,提问作者Emir Kutlugün

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:09:04