Мы интегрировали Firebase Analytics с помощью заданных здесь инструкций по установке (с использованием cocoapods): https://firebase.google.com/docs/ios/setup#add_firebase_to_your_app
Все работает так, как требуется при запуске / сборке приложения из xcode (как отладка).Каждое событие регистрируется.
Источник для init:
DDLogDebug(@"FB: Init");
FIRApp *defaultApp = [FIRApp defaultApp];
if (!defaultApp) {
DDLogDebug(@"FB: No default app");
NSString *configPath = [[NSBundle mainBundle] pathForResource:@"GoogleService-Info" ofType:@"plist"];
if (configPath) {
DDLogDebug(@"FB: Hurraaaa, The firebase GoogleService-Info.plist file is in bundle, configPath: %@", configPath);
NSString *file = [NSString stringWithContentsOfFile:configPath encoding:NSUTF8StringEncoding error:nil];
DDLogDebug(@"FB: File is: %@", file);
FIROptions *options = [FIROptions defaultOptions];
DDLogDebug(@"APIKey = %@", options.APIKey);
DDLogDebug(@"trackingID = %@", options.trackingID);
DDLogDebug(@"googleAppID = %@", options.googleAppID);
DDLogDebug(@"clientID = %@", options.clientID);
DDLogDebug(@"GCMSenderID = %@", options.GCMSenderID);
DDLogDebug(@"androidClientID = %@", options.androidClientID);
DDLogDebug(@"databaseURL = %@", options.databaseURL);
DDLogDebug(@"storageBucket = %@", options.storageBucket);
DDLogDebug(@"bundleID = %@", options.bundleID);
DDLogDebug(@"projectID = %@", options.projectID);
[FIRApp configureWithOptions:options];
DDLogDebug(@"FB: DID CONFIGURE");
} else {
DDLogDebug(@"FB: Warning: The firebase config file is missing.");
DDLogWarn(@"Warning: The firebase config file is missing.");
}
} else {
DDLogDebug(@"FB: Have a default app");
}
Источник для журнала:
NSDictionary *params = [self paramsForTrackingEvent:trackingEvent
usingTrackingEventConfig:trackingEventConfig];
__weak typeof(self) weakSelf = self;
dispatch_async(dispatch_get_main_queue(), ^{
[FIRAnalytics logEventWithName:[[weakSelf conformsString:compiledActionTemplate] pk_truncateByIndex:kFirebaseAnalyticsKeyMaxCount]
parameters:params.allKeys.count > 0 ? params : nil];
});
DDLogDebug(@"*** TRACK [FIREBASE_ANALYTICS,ACTION]: %@", compiledActionTemplate);
Теперь у нас есть следующая проблема:
Мы автоматически создаем наши приложенияс jenkins и некоторыми дополнительными bash-скриптами , который сам выполняет результирующие команды сборки xcode для создания одного результирующего ipa. Но созданный ipa не регистрирует никаких событий. Даже если ipa использует тот же GoogleService-Info.plist из рабочей отладочной версии в xcode.
Итак, мыдобавили некоторые журналы отладки в наше приложение, а также наблюдаем за журналом из firebase:
Инициализация выглядит нормально:
standard 10:32:39.941315 +0200 hellfire 5.0.0 - [Firebase/Analytics][I-ACS023007] Firebase Analytics v.50000000 started
standard 10:32:39.941402 +0200 hellfire 5.0.0 - [Firebase/Analytics][I-ACS023008] To enable debug logging set the following application argument: -FIRAnalyticsDebugEnabled (see http://xxxxxxxx)
Хотя firebase правильно инициализирует способ, он выдает некоторые сообщения об ошибках после регистрациисобытие:
standard 10:32:41.008690 +0200 hellfire 5.0.0 - [Firebase/Analytics][I-ACS012011] Received empty measurement bundle metadata for getting dictionary representation
standard 10:32:41.010648 +0200 hellfire 5.0.0 - [Firebase/Analytics][I-ACS023068] Data loss. Cannot record event metadata. Error: Error Domain=com.google.gmp.measurement.ErrorDomain Code=2 "Failed to insert/update unknown data type" UserInfo={NSLocalizedDescription=Failed to insert/update unknown data type}
standard 10:32:41.011612 +0200 hellfire 5.0.0 - [Firebase/Analytics][I-ACS034010] Transaction failed
=> Эта ошибка та же с этими версиями Firebase:
4.11.0, 4.13.0, 5.0.1
Мы потратили сейчаснесколько дней, чтобы проверить все настройки сборки, инициализацию Firebase (сравнить документы), и мы понятия не имеем, что происходит не так.Предполагая, что все проекты Firebase настроены правильно, что еще мы можем упустить?
Build-System в настоящее время использует это:
High Sierra 10.13.4 (17E199), Xcode 9.3 Build 9E145, Cocoapods 1.5.0, Firebase Core 5.0.1