Почему мне нужно установить Analytics.setAnalyticsCollectionEnabled(true), если по умолчанию это true? Firebase + iOS

С момента моего последнего обновления панель управления firebase почти пуста. Сначала я подумал, что это новая проблема политики iOS 14.5, но сослался на:

https://firebase.google.com/docs/ios/supporting-ios-14

Я пробуюсь с настройками и заметил, что когда я использую

Firebase начинает предоставлять данные в реальном времени, так как у меня есть -FIRDebugEnabled. Но без его вызова я не получаю журналы firebase даже в консоли, похоже, они вообще не отправляются. Зачем мне нужно Analytics.setAnalyticsCollectionEnabled(true)если есть информация. Этот параметр сохраняется во всех сеансах приложения. По умолчанию он включен? Или я просто что-то упускаю?

За это время я обновил модули до последней версии для:

      pod 'Firebase/Crashlytics'
pod 'Firebase/AnalyticsWithoutAdIdSupport'
pod 'Firebase/Messaging'

2 ответа

Похоже, это может быть вызвано компоновщиком. Тем более что нигде в вашем проекте не используется и просто не залинкован в основной бинарник. Затем платформа Firebase обнаруживает, что класса нет и не инициирует аналитику:(FIRApp.m)

      - (BOOL)configureCore {
  [self checkExpectedBundleID];
  if (![self isAppIDValid]) {
    return NO;
  }

  // Initialize the Analytics once there is a valid options under default app. Analytics should
  // always initialize first by itself before the other SDKs.
  if ([self.name isEqualToString:kFIRDefaultAppName]) {
    Class firAnalyticsClass = NSClassFromString(@"FIRAnalytics");
    if (firAnalyticsClass) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wundeclared-selector"
      SEL startWithConfigurationSelector = @selector(startWithConfiguration:options:);
#pragma clang diagnostic pop
      if ([firAnalyticsClass respondsToSelector:startWithConfigurationSelector]) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
        [firAnalyticsClass performSelector:startWithConfigurationSelector
                                withObject:[FIRConfiguration sharedInstance].analyticsConfiguration
                                withObject:_options];
#pragma clang diagnostic pop
      }
    }
  }

Как я вижу, есть два возможных решения:

  1. ИспользоватьFIRAnalytics(для цели-C) илиAnalytics(для Swift) из вашего основного двоичного файла, чтобы заставить компоновщика связать его.
  2. Используйте флаг компоновщика, чтобы принудительно связатьFirebaseAnalyticsбиблиотека Это может быть -ObjC, -force_load или даже -all_load.

Лично я бы выбрал первый вариант, потому что через некоторое время вы все равно будете использовать этот класс для регистрации своих пользовательских событий.

Возможно, вы отключили коллекцию в своем файле plist? Для этого вам потребуется переопределить настройку во время выполнения, чтобы включить сбор аналитики. https://firebase.google.com/docs/analytics/configure-data-collection#objective-c

Другие вопросы по тегам