Firebase - 无法指定类型的值' AppDelegate'输入' UNUserNotificationCenterDelegate?'

时间:2016-11-22 15:51:53

标签: ios swift firebase 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 install
  • "导入Firebase"在AppDelegate类
  • 之上

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

  • 编译了他们的应用......工作正常。
  • 按照以下步骤将我们现有的XCode项目的逻辑编译为:
  • pod init包含以下内容:pod' Firebase / Messaging'
  • pod install
  • 导入以下内容: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
    }

1 个答案:

答案 0 :(得分:19)

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

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