Firebase消息传递中的"错误:使用未声明的类型MessagingDelegate"

Hec*_*ies 12 ios appdelegate swift3 firebase-notifications

我最近更新了我的firebase消息传递盒,并按照Firebase的快速入门指南执行必要的升级更改.

我添加了新的extension AppDelegate : MessagingDelegate扩展程序,但遇到了一些错误.

在此输入图像描述

Dan*_*ouf 29

import FirebaseMessaging在页面顶部添加将解决问题


tah*_*aha 7

它是关于 firebase 的版本,在这种情况下更改MessagingDelegateFIRMessagingDelegate功能 [START refresh_token] 来自

func messaging(_ messaging: Messaging, didReceiveRegistrationToken 
  fcmToken: String) {
     print("Firebase registration token: \(fcmToken)")

} 
Run Code Online (Sandbox Code Playgroud)

func messaging(_ messaging: FIRMessaging, didReceiveRegistrationToken 
 fcmToken: String) {
    print("Firebase registration token: \(fcmToken)")
}
Run Code Online (Sandbox Code Playgroud)

最后

func messaging(_ messaging: Messaging, didReceive remoteMessage: 
  MessagingRemoteMessage) {
    print("Received data message: \(remoteMessage.appData)")
 }
Run Code Online (Sandbox Code Playgroud)

func applicationReceivedRemoteMessage(_ remoteMessage: 
     FIRMessagingRemoteMessage) {
    print("Received data message: \(remoteMessage.appData)")
}
Run Code Online (Sandbox Code Playgroud)

完整的答案是

extension AppDelegate : FIRMessagingDelegate {
    func applicationReceivedRemoteMessage(_ remoteMessage: FIRMessagingRemoteMessage) {
    print("Received data message: \(remoteMessage.appData)")
}

// [START refresh_token]

func messaging(_ messaging: FIRMessaging, didReceiveRegistrationToken fcmToken: String) {
    print("Firebase registration token: \(fcmToken)")
}}
Run Code Online (Sandbox Code Playgroud)


Gle*_*enn 2

MessagingDelegate错误提示是未声明的类型。确保您正在导入 Firebase 框架,如下所示:

import Firebase

如果导入 Firbease 框架出现错误no such module Firebase,那么您需要首先修复该no such module Firebase错误。如何解决这个问题?您需要根据 Swift 语言的版本检查 Firebase pod 的版本。也许您的 Firebase 版本使用 Swift 4.0,而您的项目使用 Swift 3.0。

为了确保您安装的是专用于 Swift 3.0 的 pod,可以将每个 pod 的构建设置检查器添加到您的 Podfile 中。还要确保您正在安装MessagingFirebase 框架,如下所示:

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

post_install do |installer|
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['SWIFT_VERSION'] = '3.0'
        end
    end
end
Run Code Online (Sandbox Code Playgroud)