Check this video, youtube.com/watch?v=VpbNFIY1qJ0 time 13:45. They said that if you set Info.plist FirebaseAppDelegateProxyEnabled to NO you should call “setAPNSToken” and “appDidReceiveMessage
(http://stackoverflow.com/questions/37458530/firebase-when-receive-push-notification-did-not-receive-the-popup/37690101)
The only way I can receive messages in foreground, is by disabling method swizzling, setting FirebaseAppDelegateProxyEnabled to NO in my info.plist.
In this case, FCM documentation says that I have to implement in my appdelegate.swift two methods:
- FIRMessaging.messaging().appDidReceiveMessage(userInfo) in didReceiveRemoteNotification callback
- FIRInstanceID.instanceID().setAPNSToken(deviceToken, type: FIRInstanceIDAPNSTokenType.Sandbox) in didRegisterForRemoteNotificationsWithDeviceToken callback
(http://stackoverflow.com/questions/37899712/fcm-background-notifications-not-working-in-ios)
(void)application:(UIApplication )application didRegisterForRemoteNotificationsWithDeviceToken:(NSData )deviceToken {
// for development
[[FIRInstanceID instanceID] setAPNSToken:deviceToken type:FIRInstanceIDAPNSTokenTypeSandbox];// for production
// [[FIRInstanceID instanceID] setAPNSToken:deviceToken type:FIRInstanceIDAPNSTokenTypeProd];