错误:ios 上没有这样的模块“FirebaseInstanceID”

Gbe*_*uga 5 dart firebase swift firebase-authentication flutter

我正在尝试运行我的代码并不断告诉我

error: no such module 'FirebaseInstanceID'
    import FirebaseInstanceID
Run Code Online (Sandbox Code Playgroud)

我在 AppDelegate.swift 中的代码

import UIKit
import Flutter

import Firebase
import FirebaseAuth
import UserNotifications
import FirebaseInstanceID

@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
  override func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
  ) -> Bool {
    GeneratedPluginRegistrant.register(with: self)
    return super.application(application, didFinishLaunchingWithOptions: launchOptions)
  }
  
   override func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
        let firebaseAuth = Auth.auth()
        firebaseAuth.setAPNSToken(deviceToken, type: AuthAPNSTokenType.unknown)

    }
    override func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
        let firebaseAuth = Auth.auth()
        if (firebaseAuth.canHandleNotification(userInfo)){
            print(userInfo)
            return
        }
    
    }
}
Run Code Online (Sandbox Code Playgroud)

我认为我的 pod 中缺少它,我不知道如何将它安装到我的 pod 文件中。

Vin*_*Joy 11

FirebaseInstanceID 现已弃用,这就是出现此错误的原因。import FirebaseInstanceID从您的中删除AppDelegate.swift并添加,import FirebaseMessaging因为 FCM 令牌现在直接在 Messaging 实例上提供。现在用这个替换InstanceIDin的代码didRegisterForRemoteNotificationsWithDeviceToken

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
    Messaging.messaging().apnsToken = deviceToken
    Messaging.messaging().token { (token, error) in
        if let error = error {
            print("Error fetching remote instance ID: \(error.localizedDescription)")
        } else if let token = token {
            print("Token is \(token)")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


Gbe*_*uga 3

更新于 19/07/2021

删除 FirebaseInstanceID 并安装 Firebase Messaging 最新版本。

我后来通过安装Firebase Messaging Plugin解决了这个问题

Firebase 消息传递插件