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

Flutter iOS集成Firebase推送报错:需实现指定FCM token方法

解决iOS端FCM推送的messaging:didReceiveRegistrationToken:未实现错误

错误提示明确指出你的AppDelegate对象没有响应-messaging:didReceiveRegistrationToken:方法,这是因为你仅声明了遵循MessagingDelegate协议,但没有实现该协议要求的核心方法——FCM需要通过这个方法向App传递设备的推送令牌,完成令牌的获取和更新逻辑。

只需在AppDelegate类中添加以下方法即可解决该问题:

// MARK: - MessagingDelegate
func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String?) {
    guard let token = fcmToken else { return }
    // 可在此将令牌发送到后端服务器,或做其他自定义处理
    print("FCM注册令牌: \(token)")
}

修改后的完整AppDelegate代码如下:

import UIKit
import Flutter
import UserNotifications
import Firebase

@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate, MessagingDelegate {
    
  override func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
  ) -> Bool {
    
        FirebaseApp.configure()
        Messaging.messaging().delegate = self

        GeneratedPluginRegistrant.register(with: self)

        if #available(iOS 10.0, *) {
            UNUserNotificationCenter.current().delegate = self
            let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
            UNUserNotificationCenter.current().requestAuthorization(
                    options: authOptions,
                    completionHandler: {_, _ in })
        } else {
            let settings: UIUserNotificationSettings =
            UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
            application.registerUserNotificationSettings(settings)
        }
        application.registerForRemoteNotifications()

        return super.application(application, didFinishLaunchingWithOptions: launchOptions)
  }
    
    // MARK: - MessagingDelegate
    func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String?) {
        guard let token = fcmToken else { return }
        print("FCM注册令牌: \(token)")
        // 可选:将令牌同步到你的后端服务
    }
}

添加该方法后,FCM就能正常传递推送令牌,错误会消失;同时你可以在方法内处理令牌的保存或更新逻辑,确保后端能获取到最新的设备令牌用于推送。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 17:05:23