找不到协议声明“FIRMessagingDelegate”

问题描述 投票:0回答:4

我正在尝试将 Firebase Messaging 添加到我的 iOS 应用程序中。我已按照 Firebase 文档 中的步骤操作,即:

  • 已上传 APNs 证书
  • 导入了 Firebase 并添加了
    [FIRApp configure]
  • 使用
    @import FirebaseMessaging
    导入 Firebase Messaging 并添加
    FIRMessagingDelegate

但是此时我收到错误:

@interface AppDelegate () <UNUserNotificationCenterDelegate, FIRMessagingDelegate>      
// Cannot find protocol declaration for FIRMessagingDelegate

我已经更新了我的 Pod(根据 Stack Overflow 上发现的类似问题建议),但仍然遇到相同的错误。为了确认,运行

pod update
会给出以下输出:

 Using FirebaseMessaging (1.2.2)

有什么建议吗?

ios firebase firebase-cloud-messaging firebase-notifications
4个回答
11
投票

问题似乎是在新的

FIRMessagingDelegate
框架中声明了
FirebaseMessaging
协议。

只需添加:

@import FirebaseMessaging;

查看更多信息: https://firebase.google.com/docs/reference/ios/firebasemessaging/api/reference/Protocols/FIRMessagingDelegate

以及示例应用程序

AppDelegate.m
https://github.com/firebase/quickstart-ios/blob/master/messaging/MessagingExample/AppDelegate.m#L62-L85


2
投票

我发现这在 pod 文件中很有用:

pod 'Firebase/Messaging'
to
pod 'Firebase/Messaging', '~> 4.0.0'

现在已找到所有依赖项。


0
投票

因为我的搜索把我带到了这里,所以要在这里分享:

如果您使用 Swift 并收到此错误,则所有名称中都删除了“FIR”前缀,因此您只需使用“MessagingDelegate”而不是“FIRMessagingDelegate”

来源:https://firebase.google.com/docs/reference/swift/naming-migration-guide


0
投票

我的应用程序最初是用 Objective-C 编写的,后来转换为 Swift;我认为原始海报就是这种情况,因为和我的一样,错误似乎发生在 Swift Bridging Header(Xcode 生成的)中。

我通过将此行添加到我的 Objective-C 桥接头 (AppName-Bridging-Header.h) 中解决了这个问题:

#import <FirebaseMessaging/FirebaseMessaging.h>

© www.soinside.com 2019 - 2024. All rights reserved.