iOS10, Swift 3, and FCM delegate error

2019-04-08 11:14发布

问题:

I'm getting error:

"Value of type FIRMessaging has no member 'remoteMessageDelegate'" on FIRMessaging.messaging().remoteMessageDelegate = self

I get this snippet code from FCM setup guide:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.

    if #available(iOS 10.0, *) {
        let authOptions : UNAuthorizationOptions = [.alert, .badge, .sound]
        UNUserNotificationCenter.current().requestAuthorization(
            options: authOptions,
            completionHandler: {_,_ in })

        // For iOS 10 display notification (sent via APNS)
        UNUserNotificationCenter.current().delegate = self
        // For iOS 10 data message (sent via FCM)
        FIRMessaging.messaging().remoteMessageDelegate = self //Get error on this line

    } else {
        let settings: UIUserNotificationSettings =
            UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
        application.registerUserNotificationSettings(settings)
        application.registerForRemoteNotifications()
    }

回答1:

I had the same problem. It seems that Google documentation is out to date, I took a look Cocoapods Firebase Messaging page and I solved updating the cocoapods repo doing inside the Terminal:

pod repo update

And then replacing the following lines in my Podfile:

pod 'Firebase/Core'
pod 'Firebase/Messaging'

With:

 pod 'Firebase', '~> 3.7'
 pod 'FirebaseMessaging', '~> 1.2'
 pod 'FirebaseAnalytics', '~> 3.3'

This will download FirebaseMessaging 1.2 instead of 1.1



回答2:

Run in the console:

pod update


回答3:

You need to update your cocoapod version

try updating version of cocoapod to latest from terminal app

sudo gem update

After updating to latest cocoapod update your pods

pod update


回答4:

If you dont want to update all pods you can just update those Firebase pods

As of CocoaPods 1.0, 'pod repo udpate' does not happen on 'pod install' by default

pod update 'Firebase/Core'
pod update 'Firebase/Database'
pod update 'Firebase/Auth'
pod update 'Firebase/Messaging'


回答5:

So you need to remove lines from podfile:

pod 'Firebase/Core'
pod 'Firebase/Messaging'

Then install pod, add these lines again and install again. This solved it for me.