2

我在我的應用程序中遇到了這個奇怪的問題。我正在嘗試使用Firebase將推送通知集成到我的應用程序中。我使用下載的SDK(不使用pod)將Firebase SDK包含在項目中。我已經包含在應用程序下載的zip文件如下框架:推送通知在iOS中檢索,但不在Firebase中

enter image description here

在AppDelegate中

@UIApplicationMain 
class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate, MessagingDelegate { 

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
    FirebaseApp.configure() 
    return true 
    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() 
} 

// This is called and the access token is received. 
func application(_ application: UIApplication, 
       didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { 
    var token = "" 
    for i in 0..<deviceToken.count { 
     token = token + String(format: "%02.2hhx", arguments: [deviceToken[i]]) 
    } 
    print(token) 
    Messaging.messaging().setAPNSToken(deviceToken, type: .sandbox) 
} 

// This is not getting called 
func messaging(_ messaging: Messaging, didRefreshRegistrationToken fcmToken: String) { 
    Messaging.messaging().subscribe(toTopic: "ios_topic") 
} 

訪問令牌我didRegisterForRemoteNotificationsWithDeviceToken得到的是有效的,我成功發送推送到設備使用它。但是FireBase的didRefreshRegistrationToken沒有被調用。我在鏈接標誌中添加了-ObjC,在info.plist中添加了FirebaseAppDelegateProxyEnabled作爲NO。我在項目根目錄中添加了文件,並且在FireBase控制檯中正確配置了項目。

這裏有什麼可能的問題,以及如何解決它?

回答

0

這是在遵循教程時最大的錯誤。只需要將Messaging.messaging()的代表設置爲AppDelegate即可。在FirebaseApp.configure()下正確添加以下代碼,問題就解決了。

FirebaseApp.configure() 
Messaging.messaging().delegate = self