Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios &引用;错误:使用未声明的类型MessagingDelegate“;在Firebase消息传递中_Ios_Swift3_Appdelegate_Firebase Notifications - Fatal编程技术网

Ios &引用;错误:使用未声明的类型MessagingDelegate“;在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

我最近更新了我的firebase消息播客,并按照firebase的快速入门指南进行必要的升级更改

我添加了新的
扩展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)")
}