iOS - 应用仅在安装后配置 Firebase 时崩溃

iOS - App crashes only after installation while configuring Firebase

我正在开发一个使用 Firebase 的应用程序。该应用程序是用 React-Native JS 编写的。

问题是:首次启动应用程序时,它会在尝试配置 Firebase 时崩溃。 当我在崩溃后关闭应用程序并再次启动它时(没有卸载,只是重新启动它)它工作得很好。

有人可以帮忙吗?这是错误日志:

2018-08-02 16:40:29.345 CVJM[6670] <Warning> [Firebase/Analytics][I-ACS005000] The AdSupport Framework is not currently linked. Some features will not function properly. Learn more at ...
2018-08-02 16:40:29.348 CVJM[6670] <Notice> [Firebase/Analytics][I-ACS023007] Firebase Analytics v.4000000 started
2018-08-02 16:40:29.348 CVJM[6670] <Notice> [Firebase/Analytics][I-ACS023008] To enable debug logging set the following application argument: -FIRAnalyticsDebugEnabled (see ...)
=================================================================
Main Thread Checker: UI API called on a background thread: -[UIApplication delegate]
PID: 6670, TID: 499999, Thread name: (none), Queue name: FIRAnalyticsQueue, QoS: 9
Backtrace:
4   CVJM                                0x0000000102d8feb7 __38+[FIRAnalytics createAppDelegateProxy]_block_invoke + 55
5   libdispatch.dylib                   0x000000010a3777ec _dispatch_client_callout + 8
6   libdispatch.dylib                   0x000000010a378d64 dispatch_once_f + 285
7   CVJM                                0x0000000102d8e366 __47+[FIRAnalytics startWithConfiguration:options:]_block_invoke_2 + 101
8   libdispatch.dylib                   0x000000010a3767ab _dispatch_call_block_and_release + 12
9   libdispatch.dylib                   0x000000010a3777ec _dispatch_client_callout + 8
10  libdispatch.dylib                   0x000000010a37fbe5 _dispatch_queue_serial_drain + 1305
11  libdispatch.dylib                   0x000000010a3804fa _dispatch_queue_invoke + 328
12  libdispatch.dylib                   0x000000010a38336c _dispatch_root_queue_drain + 664
13  libdispatch.dylib                   0x000000010a383076 _dispatch_worker_thread3 + 132
14  libsystem_pthread.dylib             0x000000010a8a2169 _pthread_wqthread + 1387
15  libsystem_pthread.dylib             0x000000010a8a1be9 start_wqthread + 13
2018-08-02 16:40:29.797 CVJM[6670] <Notice> [Firebase/Messaging][I-FCM001000] FIRMessaging Remote Notifications proxy enabled, will swizzle remote notification receiver handlers. Add "FirebaseAppDelegateProxyEnabled" to your Info.plist and set it to NO
2018-08-02 16:40:29.870 CVJM[6670] <Notice> [Firebase/Analytics][I-ACS003007] Successfully created Firebase Analytics App Delegate Proxy automatically. To disable the proxy, set the flag FirebaseAppDelegateProxyEnabled to NO in the Info.plist
=================================================================
Main Thread Checker: UI API called on a background thread: -[UIApplication applicationState]
PID: 6670, TID: 499990, Thread name: (none), Queue name: com.google.fira.worker, QoS: 9
Backtrace:
4   CVJM                                0x0000000102d8dd76 FIRAIsAppActive + 55
5   CVJM                                0x0000000102d8d274 -[FIRASessionReporter shouldStartNewSession] + 19
6   CVJM                                0x0000000102d8ce4e -[FIRASessionReporter initWithPersistedConfig:] + 282
7   CVJM                                0x0000000102d77691 __48-[FIRAMeasurement startMeasurementOnWorkerQueue]_block_invoke + 1934
8   libdispatch.dylib                   0x000000010a3777ec _dispatch_client_callout + 8
9   libdispatch.dylib                   0x000000010a378d64 dispatch_once_f + 285
10  CVJM                                0x0000000102d76f01 -[FIRAMeasurement startMeasurementOnWorkerQueue] + 286
11  CVJM                                0x0000000102d76cc9 -[FIRAMeasurement setEnabledOnWorkerQueue:] + 117
12  CVJM                                0x0000000102d8caea __52-[FIRAScheduler scheduleOnWorkerQueueBlockID:block:]_block_invoke + 32
13  libdispatch.dylib                   0x000000010a3767ab _dispatch_call_block_and_release + 12
14  libdispatch.dylib                   0x000000010a3777ec _dispatch_client_callout + 8
15  libdispatch.dylib                   0x000000010a37fbe5 _dispatch_queue_serial_drain + 1305
16  libdispatch.dylib                   0x000000010a3804fa _dispatch_queue_invoke + 328
17  libdispatch.dylib                   0x000000010a38336c _dispatch_root_queue_drain + 664
18  libdispatch.dylib                   0x000000010a383076 _dispatch_worker_thread3 + 132
19  libsystem_pthread.dylib             0x000000010a8a2169 _pthread_wqthread + 1387
20  libsystem_pthread.dylib             0x000000010a8a1be9 start_wqthread + 13
2018-08-02 16:40:30.802 CVJM[6670] <Warning> [Firebase/Analytics][I-ACS032003] iAd framework is not linked. Search Ad Attribution Reporter is disabled.
2018-08-02 16:40:30.805 CVJM[6670] <Notice> [Firebase/Analytics][I-ACS023012] Firebase Analytics enabled
libc++abi.dylib: terminating with uncaught exception of type NSException

这是我在AppDelegate.m

里面的代码
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  NSURL *jsCodeLocation;

  // Debug
  //jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
  // Release
  jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];

  RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
                                                      moduleName:@"MODULE"
                                               initialProperties:nil
                                                   launchOptions:launchOptions];
  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];

  // Firebase
  [FIRApp configure];
  [[UNUserNotificationCenter currentNotificationCenter] setDelegate:self];

  [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];

  return YES;
}

我找到了解决方案。

这是我之前的播客文件:

# Pods for MyApp
  pod 'Firebase/Core', '4.0.0'
  pod 'Firebase/Messaging'

删除 '4.0.0' 和 运行 pod update 后,它已将 Firebase 更新为 5.x.x。 不是,它工作得很好。

打开Xcode并打开 AppDelagate.m 导入这个 #导入 在 didFinishLaunchingWithOptions 的开头添加 [FIRApp 配置];

例如

#import <Firebase.h>

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  [FIRApp configure];
//rest codes
}