2017-08-11 67 views
2

我在寻找很久,没有答案解决了我的问题。
我正在关注推送通知的Firebase教程并实施了AppDelegate代码。使用未声明的类型“FIRMessagingDelegate”,“消息”和“FIRMessagingRemoteMessage”。

但Xcode没有识别'FIRMessagingDelegate','Messaging'和'FIRMessagingRemoteMessage'。

我曾试图更新回购,重建等。

下面的代码:

import UIKit 
import CoreData 
import Firebase 
import UserNotifications 
import FirebaseMessaging 

@UIApplicationMain 
class AppDelegate: UIResponder, UIApplicationDelegate { 

var window: UIWindow? 


func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
    // Override point for customization after application launch. 
    //FirebaseApp.configure() - Documentação 
    FIRApp.configure() 

    if #available(iOS 10.0, *) { 
     // For iOS 10 display notification (sent via APNS) 
     UNUserNotificationCenter.current().delegate = self 

     let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound] 
     UNUserNotificationCenter.current().requestAuthorization(
      options: authOptions, 
      completionHandler: {_, _ in }) 
    } else { 
     let settings: UIUserNotificationSettings = 
      UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil) 
     application.registerUserNotificationSettings(settings) 
    } 

    application.registerForRemoteNotifications() 

    return true 
} 

//More code.. 

} 

// [START ios_10_message_handling] 
@available(iOS 10, *) 
extension AppDelegate : UNUserNotificationCenterDelegate { 

    // Receive displayed notifications for iOS 10 devices. 
    func userNotificationCenter(_ center: UNUserNotificationCenter, 
          willPresent notification: UNNotification, 
          withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) { 
     let userInfo = notification.request.content.userInfo 


     // Print full message. 
     print(userInfo) 

     // Change this to your preferred presentation option 
     completionHandler([]) 
    } 

    func userNotificationCenter(_ center: UNUserNotificationCenter, 
          didReceive response: UNNotificationResponse, 
          withCompletionHandler completionHandler: @escaping() -> Void) { 
     let userInfo = response.notification.request.content.userInfo 


     // Print full message. 
     print(userInfo) 

     completionHandler() 
    } 
} 


extension AppDelegate : FIRMessagingDelegate { 
    // [START refresh_token] 
    func messaging(_ messaging: Messaging, didRefreshRegistrationToken fcmToken: String) { 
     print("Firebase registration token: \(fcmToken)") 
    } 
// [END refresh_token] 
// [START ios_10_data_message] 
// Receive data messages on iOS 10+ directly from FCM (bypassing APNs) when the app is in the foreground. 
// To enable direct data messages, you can set Messaging.messaging().shouldEstablishDirectChannel to true. 
    func messaging(_ messaging: Messaging, didReceive remoteMessage: FIRMessagingRemoteMessage) { 
     print("Received data message: \(remoteMessage.appData)") 
    } 
    // [END ios_10_data_message] 
} //*/ 

回答

3

您正在使用什么版本的火力地堡的?根据documentation,Swift中Firebase 4.0.0的类名更改。所以FIRMessagingDelegate,现在是MessagingDelegate,依此类推。请参阅迁移指南here

+0

谢谢Jen!它帮助.. –

相关问题