在后台模式下未调用ios 10 Firebase推送通知委托方法

时间:2016-10-27 23:56:26

标签: ios swift firebase push-notification firebase-cloud-messaging

我几天来一直在努力解决这个问题,我看过每一篇关于这个问题的帖子,没有任何作用。

我正在使用FCM(Firebase云消息传递)。 FCM在前台时直接与应用程序对话,但当应用程序处于后台时,它将使用APNS。

我试图通过调用推送通知的委托功能中的方法,每当应用程序收到通知时调用方法

我有这两个委托函数: func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) 根据苹果文档,它不会在后台调用。

我也有这个功能,我相信应该在后台调用,但事实并非如此。 func application(_ application: UIApplication,didReceiveRemoteNotification userInfo: [AnyHashable: Any],fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void)

我在ViewController

中拥有所有这些功能

在后台模式下,我收到横幅通知,但没有调用任何委托。有没有办法让它们中的任何一个在后台工作,如果不是我该怎么办? 此外,每当我在应用程序处于后台时发送有效负载时,我也会在日志中收到此错误:<FIRMessaging/WARNING> FIRMessaging receiving notification in invalid state 2

这是我使用postmate发送的有效负载:

{ "priority":"high", "notification":{ "sound": "default", "badge": "1", "title":"mytitle", "body":"mybody", "message":"Hello" }, "content_available":true, "to" : "/topics/myTopic" } 我已经在功能中启用了推送通知,并在功能下以后台模式检查了推送通知。

我使用Xcode 8并且已经在iphone 6 iOS 10.0.2上进行了测试

1 个答案:

答案 0 :(得分:0)

协议只能有1个代表。

在这种情况下,我使APPDelegate和ViewController符合UIApplicationDelegate。并且只调用APPDelegate中的委托函数。这就是为什么没有调用ViewController中的那个。

解决方案只是将didReceiveRemoteNotification放在AppDelegate中。