Почему мне нужно установить 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
}
}
}
Как я вижу, есть два возможных решения:
- Использовать
FIRAnalytics
(для цели-C) илиAnalytics
(для Swift) из вашего основного двоичного файла, чтобы заставить компоновщика связать его. - Используйте флаг компоновщика, чтобы принудительно связать
FirebaseAnalytics
библиотека Это может быть -ObjC, -force_load или даже -all_load.
Лично я бы выбрал первый вариант, потому что через некоторое время вы все равно будете использовать этот класс для регистрации своих пользовательских событий.
Возможно, вы отключили коллекцию в своем файле plist? Для этого вам потребуется переопределить настройку во время выполнения, чтобы включить сбор аналитики. https://firebase.google.com/docs/analytics/configure-data-collection#objective-c