简体   繁体   English

iOS 远程通知不起作用 react-native-firebase [v6]

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

I am using RNFirebase and when developed from scratch using [v6]我正在使用RNFirebase ,并且在使用 [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我的 Package.json 包括

"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在我的 podFile 中,我使用FirebaseSDKVersion = 6.14.0 ,下面提到了其他的

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我从 RNFirebase 获取这些 APNS 已经在 Firebase 控制台中配置

My AppDelegate.m include我的AppDelegate.m包括


#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 NOInfo.plist我已将FirebaseAppDelegateProxyEnabled设置为NO

Index.js索引.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帮助将不胜感激:) 谢谢

In version 5 we have the below.在第 5 版中,我们有以下内容。 Are these not needed in V6? V6不需要这些吗?

  • (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification { [[RNFirebaseNotifications instance] didReceiveLocalNotification:notification]; (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 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]; (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings { [[RNFirebaseMessaging instance] didRegisterUserNotificationSettings:notificationSettings]; } }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 React-Native-Firebase V6中文件“ firebase.json”的位置 - Where the file “firebase.json” goes in React-Native-Firebase V6 在前台显示通知反应原生 firebase v6 - Show notification on foreground react native firebase v6 无法从 React-Native-Firebase(v6) Firestore 获取数据:undefined 不是函数(靠近“...this._firestore.native.collectionGet...”) - Can't get data from React-Native-Firebase(v6) Firestore: undefined is not a function (near '...this._firestore.native.collectionGet...') iOS 无法在 react-native-firebase 中接收通知 - iOS can't receive notifications in react-native-firebase @react-native-firebase 与 react-redux-firebase V3 集成 - @react-native-firebase integration with react-redux-firebase V3 react-native-firebase重新发送消息代码 - react-native-firebase resend message code 使用@react-native-firebase/messaging 收到通知后应用程序崩溃 - App crashes after receiving notification using @react-native-firebase/messaging react-native-firebase getInitialNotification循环 - react-native-firebase getInitialNotification loop React-Native-Firebase:RTDB 模拟器 - React-Native-Firebase : RTDB Emulator 云消息传递如何在 react-native-firebase v6.xx 中工作? - How Cloud Messaging Works in react-native-firebase v6.x.x?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM