Ios &引用;错误:使用未声明的类型MessagingDelegate“;在Firebase消息传递中
我最近更新了我的firebase消息播客,并按照firebase的快速入门指南进行必要的升级更改 我添加了新的Ios &引用;错误:使用未声明的类型MessagingDelegate“;在Firebase消息传递中,ios,swift3,appdelegate,firebase-notifications,Ios,Swift3,Appdelegate,Firebase Notifications,我最近更新了我的firebase消息播客,并按照firebase的快速入门指南进行必要的升级更改 我添加了新的扩展AppDelegate:MessagingDelegate扩展,但出现了某些错误 该错误表示,MessagingDelegate是未声明的类型。确保您正在导入Firebase框架,如下所示: pod 'Firebase/Auth' pod 'Firebase/Core' pod 'Firebase/Database' pod 'Firebase/Messaging' post_in
扩展AppDelegate:MessagingDelegate
扩展,但出现了某些错误
该错误表示,MessagingDelegate是未声明的类型。确保您正在导入Firebase框架,如下所示:
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
导入Firebase
如果导入Firbease框架时出现错误无此类模块Firebase
,则需要首先修复该错误,即无此类模块Firebase
错误。如何解决这个问题?您需要对照您的Swift语言版本检查Firebase吊舱的版本。也许您的Firebase版本使用Swift 4.0,而您的项目使用Swift 3.0
为了确保您正在安装Swift 3.0专用的pod,add可以在您的pod文件中添加每个pod构建设置的检查程序。还要确保您正在安装Firebase的消息传递框架,如下所示:
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
在页面顶部添加import firebase messaging
可以解决问题使用pod Update
更新pod文件,如果pod Update无法更新,则删除pod文件。锁定并运行pod install
这是关于firebase的版本,在这种情况下,将MessagingDelegate
更改为firmMessageDelegate
,并从
func messaging(_ messaging: Messaging, didReceiveRegistrationToken
fcmToken: String) {
print("Firebase registration token: \(fcmToken)")
}
到
最后
func messaging(_ messaging: Messaging, didReceive remoteMessage:
MessagingRemoteMessage) {
print("Received data message: \(remoteMessage.appData)")
}
到
完整的答案是
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)")
}}
对于Swift 4至以上版本:
您使用的Firebase版本是什么?根据文档,Swift中Firebase 4.0.0的类名发生了更改。所以firmMessageDelegate现在是MessagingDelegate,依此类推。请参阅迁移指南将FirebaseMessageing更新到7.0.0版本后,我收到了错误,因此我必须以以下方式更改didReceiveRegistrationToken
函数:
func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String?) {
guard let fcmToken = fcmToken else { return }
print("Firebase registration token: \(fcmToken)")
}
导入Firebase本身时出现错误“无此类模块Firebase”错误;这就是为什么我添加了import FirebaseCore和import FirebaseInstanceEdit不起作用;我将Firebase的版本降级为4.0.0,该版本支持Swift3,但不起作用。还是犯同样的错误你做过仪式了吗?Cmd+Shift+K和Cmd+Shift+AltOption+K?:)是的,我已经做过多次了。只是我在podfile中添加了pod'Firebase','~>4.0.0',但在安装过程中,终端显示为“Installing Firebase 4.0.4(was 4.3.0)”。你觉得这有什么影响吗?我想是的。你能看看我编辑的答案吗,我已经为你添加了一些检查程序。请为你的答案添加一些解释,因为现在,将来可能出现在这里的人可能不知道如何处理这些代码。我已经更新了我的答案,感谢你的建议,这更好:)如中所述,SwiftPM对消息传递的支持尚未发布。它已经在即将到来的Firebase 7里程碑中实现,并将在下一两个月发布。为什么会这样呢??奇怪的是,官方文件中没有提到这一点?
func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String?) {
guard let fcmToken = fcmToken else { return }
print("Firebase registration token: \(fcmToken)")
}