Firebase - 无法指定"AppDelegate"类型的值来键入"UNUserNotificationCenterDelegate?"

use*_*013 11 ios firebase swift firebase-cloud-messaging

我总是在使用本教程部署firebase时编译错误:https://firebase.google.com/docs/cloud-messaging/ios/client 我的部署SDK是9.0.

我得到的错误:

我怎样才能解决这个问题?

无法指定"AppDelegate"类型的值来键入"UNUserNotificationCenterDelegate?"

第一个场景 - 我一步一步地做了什么(按照教程):

  • pod init包含以下内容:pod'Firebase/Core'pod'Firebase/Messaging'
  • pod安装
  • 在AppDelegate类之上"导入Firebase"

第二种情况 - 通过github存储库下载谷歌演示iOS客户端应用程序(https://github.com/firebase/quickstart-ios下的"messaging"文件夹)

  • 编译他们的应用...工作正常.
  • 按照以下步骤将我们现有的XCode项目的逻辑编译为:
  • pod init包含以下内容:pod'Firebase/Messaging'
  • pod安装
  • 导入以下内容:UIKit,UserNotifications,Firebase,FirebaseInstanceID,FirebaseMessaging

AppDelegate中的代码:

func application(_ application: UIApplication,
                     didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // [START register_for_notifications]
        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
        } else {
            let settings: UIUserNotificationSettings =
                UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
            application.registerUserNotificationSettings(settings)
        }
        application.registerForRemoteNotifications()
        // [END register_for_notifications]
        FIRApp.configure()
        // Add observer for InstanceID token refresh callback.
        NotificationCenter.default.addObserver(self,
                                               selector: #selector(self.tokenRefreshNotification),
                                               name: .firInstanceIDTokenRefresh,
                                               object: nil)
        return true
    }
Run Code Online (Sandbox Code Playgroud)

use*_*013 21

在AppDelegate结束时,您需要添加2个扩展名(UNUserNotificationCenterDelegate,FIRMessagingDelegate)

请参阅此示例应用程序的源代码:https: //github.com/firebase/quickstart-ios/tree/master/messaging