iOS remote notification not working react-native-firebase [v6]

I am using RNFirebase and when developed from scratch using [v6]

When in foreground I am receiving notification but when I kill the app or the application is in background nothing is received.

My Package.json include

"dependencies": {     "@react-native-firebase/analytics": "^6.7.1",     "@react-native-firebase/app": "^7.2.1",     "@react-native-firebase/crashlytics": "^6.7.1",     "@react-native-firebase/messaging": "^7.2.1",     "@react-native-firebase/remote-config": "^6.7.1",   }, 

In my podFile I am using FirebaseSDKVersion = 6.14.0 and others are mentioned below

platform :ios, '11.0' require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules' permissions_path = '../node_modules/react-native-permissions/ios'  $FirebaseSDKVersion = '6.14.0'  def add_flipper_pods!(versions = {})   versions['Flipper'] ||= '~> 0.33.1'   versions['DoubleConversion'] ||= '1.1.7'   versions['Flipper-Folly'] ||= '~> 2.1'   versions['Flipper-Glog'] ||= '0.3.6'   versions['Flipper-PeerTalk'] ||= '~> 0.0.4'   versions['Flipper-RSocket'] ||= '~> 1.0'    pod 'FlipperKit', versions['Flipper'], :configuration => 'Debug'   pod 'FlipperKit/FlipperKitLayoutPlugin', versions['Flipper'], :configuration => 'Debug'   pod 'FlipperKit/SKIOSNetworkPlugin', versions['Flipper'], :configuration => 'Debug'   pod 'FlipperKit/FlipperKitUserDefaultsPlugin', versions['Flipper'], :configuration => 'Debug'   pod 'FlipperKit/FlipperKitReactPlugin', versions['Flipper'], :configuration => 'Debug'    # List all transitive dependencies for FlipperKit pods   # to avoid them being linked in Release builds   pod 'Flipper', versions['Flipper'], :configuration => 'Debug'   pod 'Flipper-DoubleConversion', versions['DoubleConversion'], :configuration => 'Debug'   pod 'Flipper-Folly', versions['Flipper-Folly'], :configuration => 'Debug'   pod 'Flipper-Glog', versions['Flipper-Glog'], :configuration => 'Debug'   pod 'Flipper-PeerTalk', versions['Flipper-PeerTalk'], :configuration => 'Debug'   pod 'Flipper-RSocket', versions['Flipper-RSocket'], :configuration => 'Debug'   pod 'FlipperKit/Core', versions['Flipper'], :configuration => 'Debug'   pod 'FlipperKit/CppBridge', versions['Flipper'], :configuration => 'Debug'   pod 'FlipperKit/FBCxxFollyDynamicConvert', versions['Flipper'], :configuration => 'Debug'   pod 'FlipperKit/FBDefines', versions['Flipper'], :configuration => 'Debug'   pod 'FlipperKit/FKPortForwarding', versions['Flipper'], :configuration => 'Debug'   pod 'FlipperKit/FlipperKitHighlightOverlay', versions['Flipper'], :configuration => 'Debug'   pod 'FlipperKit/FlipperKitLayoutTextSearchable', versions['Flipper'], :configuration => 'Debug'   pod 'FlipperKit/FlipperKitNetworkPlugin', versions['Flipper'], :configuration => 'Debug' end  # Post Install processing for Flipper def flipper_post_install(installer)   installer.pods_project.targets.each do |target|     if target.name == 'YogaKit'       target.build_configurations.each do |config|         config.build_settings['SWIFT_VERSION'] = '4.1'       end     end     if target.name == "ReactNativeMoEngage"       puts "Updating #{target.name} HEADER_SEARCH_PATHS"       append_header_search_path(target, "${PODS_ROOT}/../FoxyCreatorApp")     end   end end  def append_header_search_path(target, path)   target.build_configurations.each do |config|       xcconfig_path = config.base_configuration_reference.real_path        # to keep the delimiter at the end of each string:       file_data = File.read(xcconfig_path).split(/(?<=[\S])\n/)        # Copy current headers       header_search_paths = ""       header_search_paths_index = nil       file_data.select.with_index do |val, index|         if /HEADER_SEARCH_PATHS/ =~ val           header_search_paths = val           header_search_paths_index = index         end       end        # Append the new header       new_header_search_paths = header_search_paths << " #{path}"       file_data[header_search_paths_index] = new_header_search_paths        # Write it back to the file       file_data = file_data.join("\n")       File.write(xcconfig_path, file_data)   end end  target 'FoxyCreatorApp' do   # Pods for FoxyCreatorApp   pod 'FBLazyVector', :path => "../node_modules/react-native/Libraries/FBLazyVector"   pod 'FBReactNativeSpec', :path => "../node_modules/react-native/Libraries/FBReactNativeSpec"   pod 'RCTRequired', :path => "../node_modules/react-native/Libraries/RCTRequired"   pod 'RCTTypeSafety', :path => "../node_modules/react-native/Libraries/TypeSafety"   pod 'React', :path => '../node_modules/react-native/'   pod 'React-Core', :path => '../node_modules/react-native/'   pod 'React-CoreModules', :path => '../node_modules/react-native/React/CoreModules'   pod 'React-Core/DevSupport', :path => '../node_modules/react-native/'   pod 'React-RCTActionSheet', :path => '../node_modules/react-native/Libraries/ActionSheetIOS'   pod 'React-RCTAnimation', :path => '../node_modules/react-native/Libraries/NativeAnimation'   pod 'React-RCTBlob', :path => '../node_modules/react-native/Libraries/Blob'   pod 'React-RCTImage', :path => '../node_modules/react-native/Libraries/Image'   pod 'React-RCTLinking', :path => '../node_modules/react-native/Libraries/LinkingIOS'   pod 'React-RCTNetwork', :path => '../node_modules/react-native/Libraries/Network'   pod 'React-RCTSettings', :path => '../node_modules/react-native/Libraries/Settings'   pod 'React-RCTText', :path => '../node_modules/react-native/Libraries/Text'   pod 'React-RCTVibration', :path => '../node_modules/react-native/Libraries/Vibration'   pod 'React-Core/RCTWebSocket', :path => '../node_modules/react-native/'    pod 'React-cxxreact', :path => '../node_modules/react-native/ReactCommon/cxxreact'   pod 'React-jsi', :path => '../node_modules/react-native/ReactCommon/jsi'   pod 'React-jsiexecutor', :path => '../node_modules/react-native/ReactCommon/jsiexecutor'   pod 'React-jsinspector', :path => '../node_modules/react-native/ReactCommon/jsinspector'   pod 'ReactCommon/callinvoker', :path => "../node_modules/react-native/ReactCommon"   pod 'ReactCommon/turbomodule/core', :path => "../node_modules/react-native/ReactCommon"   pod 'Yoga', :path => '../node_modules/react-native/ReactCommon/yoga', :modular_headers => true    pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'   pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'   pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'    pod 'rn-fetch-blob', :path => '../node_modules/rn-fetch-blob'   pod 'FBSDKLoginKit'      target 'FoxyCreatorAppTests' do     inherit! :complete     # Pods for testing   end    use_native_modules!    # Enables Flipper.   #   # Note that if you have use_frameworks! enabled, Flipper will not work and   # you should disable these next few lines.   add_flipper_pods!   post_install do |installer|     flipper_post_install(installer)   end end  target 'FoxyCreatorApp-tvOS' do   # Pods for FoxyCreatorApp-tvOS    target 'FoxyCreatorApp-tvOSTests' do     inherit! :search_paths     # Pods for testing   end end 

I have taken these from RNFirebase APNS is already configured in Firebase Console

My AppDelegate.m include

 #import "AppDelegate.h" @import Firebase; #import <React/RCTBridge.h> #import <React/RCTBundleURLProvider.h> #import <React/RCTRootView.h> #import <FBSDKCoreKit/FBSDKCoreKit.h> #import <PushKit/PushKit.h> #import "RNVoipPushNotificationManager.h" #import "RNCallKeep.h" #import <React/RCTBridgeModule.h> #import <React/RCTEventEmitter.h> #import <FirebaseMessaging.h> #import <React/RCTLog.h>   - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {     [FIRApp configure]; #if DEBUG   InitializeFlipper(application); #endif    RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];   RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge                                                    moduleName:@"Dummy"                                             initialProperties:nil];    rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1];    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];   UIViewController *rootViewController = [UIViewController new];   rootViewController.view = rootView;   self.window.rootViewController = rootViewController;   [self.window makeKeyAndVisible];      [FIRMessaging messaging].delegate = self;   [application registerForRemoteNotifications];   [[UNUserNotificationCenter currentNotificationCenter] setDelegate:self];      return YES; }  - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {   [FIRMessaging messaging].APNSToken = deviceToken; }  - (void)messaging:(FIRMessaging *)messaging didReceiveRegistrationToken:(NSString *)fcmToken {     NSLog(@"FCM registration token: %@", fcmToken);     // Notify about received token.     NSDictionary *dataDict = [NSDictionary dictionaryWithObject:fcmToken forKey:@"token"];     [[NSNotificationCenter defaultCenter] postNotificationName:      @"FCMToken" object:nil userInfo:dataDict];     // TODO: If necessary send token to application server.     // Note: This callback is fired at each app startup and whenever a new token is generated. } - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge { #if DEBUG   return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil]; #else   return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; #endif }  @end 

In Info.plist I have set FirebaseAppDelegateProxyEnabled to NO

Index.js

if (Utility.isiOS()) {   messaging().registerDeviceForRemoteMessages(); }  firebase.messaging().setBackgroundMessageHandler(async (remoteMessage) => {   console.tron.log('Message handled in the background!', remoteMessage); });  firebase.messaging().onMessage((message) => {   const {data} = message; } 

Help would be appreciated 🙂 Thanks

Add Comment
1 Answer(s)

In version 5 we have the below. Are these not needed in V6?

  • (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification { [[RNFirebaseNotifications instance] didReceiveLocalNotification:notification]; }

  • (void)application:(UIApplication *)application didReceiveRemoteNotification:(nonnull NSDictionary *)userInfo fetchCompletionHandler:(nonnull void (^)(UIBackgroundFetchResult))completionHandler{ [[RNFirebaseNotifications instance] didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler]; }

  • (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings { [[RNFirebaseMessaging instance] didRegisterUserNotificationSettings:notificationSettings]; }

Add Comment

Your Answer

By posting your answer, you agree to the privacy policy and terms of service.