Sunjae Lee
Sunjae Lee

Reputation: 63

react-native-firebase notifications().onNotification() is never called in ios

I sent test messages from firebase console but firebase.notifications().onNitification((notification :Notification)=>{ console.log(notification); }) was never called.

The versions

- "react-native": "^0.61.2",
 - "react-native-firebase": "^5.5.6", 

podfile

 1. pod 'RNFirebase', :path => '../node_modules/react-native-firebase/ios'
 2. pod 'Firebase/Core', '~> 6.3.0'
 3. pod 'Firebase/Messaging', '~> 6.3.0'

What I did are...

  1. I uploaded an APN key to the firebase project.

  2. I put GoogleService-info.plist in my project.

  3. Here is my AppDelegate.m

#import "AppDelegate.h"

#import <React/RCTBridge.h>
#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h>

#import <GoogleMaps/GoogleMaps.h>
#import <Firebase.h>
#import <FirebaseMessaging.h>
#import "RNFirebaseMessaging.h"
#import "RNFirebaseNotifications.h"
#import "RNSplashScreen.h"

@import Firebase;
@import UserNotifications;

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  [FIRApp configure];
  [RNFirebaseNotifications configure];
  [GMSServices provideAPIKey:@""];
  RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
  RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
                                                   moduleName:@""
                                            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]; 
  [RNSplashScreen show]; 
  return YES;
}

- (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];
}

- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
{
#if DEBUG
  return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
#else
  return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
#endif
}

@end
  1. Here's my code
this.notificationListener = firebase.notifications().onNotification((notification: Notification) => {
    alert('in method')
    console.log("onNotification");
    console.log(notification);
    notification.setSound("default");
    notification.ios.setBadge(notification.ios.badge ? notification.ios.badge + 1 : 0);
    firebase.notifications().displayNotification(notification);
});

Upvotes: 1

Views: 1133

Answers (1)

user1872384
user1872384

Reputation: 7147

Just a few wild guesses base on the information you've provided:

1) In the capabilities tab in Xcode, turn on:

a) Push Notifications

b) Background Modes - Check only Remote Notifications

2) Check build phases:

a) In Project Navigator, right click Libraries > Add Files To . Navigate to /node_modules/react-native-firebase/ios/. Select RNFirebase.xcodeproj and click Add button.

b) Again click “+”, select libRNFirebase.a and add it. If you are unable to find it, clean and build project.

c) Go to Build Settings, find Header Search Path, double click its value and press “+” button. Add following line there: $(SRCROOT)/../node_modules/react-native-firebase/ios/RNFirebase

d) Use “Cmd +Shift + Enter + K” keys to clear cache and then build project. Now firebase dependencies should be recognized by xcode.

e) Use “Cmd +Shift + Enter + K” keys to clear cache and then build project. Now firebase dependencies should be recognized by xcode.

Upvotes: 3

Related Questions