Я ранее перенес свой проект из Fabri c в Firebase, а теперь пытаюсь перейти с Crashlytics на FirebaseCrashlytics, но у меня возникают проблемы. Я следил за руководством по обновлению , но безрезультатно.
В моем проекте несколько схем, 4, если быть точным, и каждая из них имеет свой идентификатор пакета и, следовательно, также свой GoogleService-Info.plist
. Я решил эту проблему на этапе выполнения сценария Crashlytics, и он выглядит следующим образом:
GOOGLESERVICE_INFO_PLIST=GoogleService-Info.plist
GOOGLESERVICE_INFO_APP_STORE=${PROJECT_DIR}/${TARGET_NAME}/Application/Firebase/AppStore/${GOOGLESERVICE_INFO_PLIST}
GOOGLESERVICE_INFO_PRODUCTION=${PROJECT_DIR}/${TARGET_NAME}/Application/Firebase/Production/${GOOGLESERVICE_INFO_PLIST}
GOOGLESERVICE_INFO_BETA=${PROJECT_DIR}/${TARGET_NAME}/Application/Firebase/Beta/${GOOGLESERVICE_INFO_PLIST}
GOOGLESERVICE_INFO_STAGING=${PROJECT_DIR}/${TARGET_NAME}/Application/Firebase/Staging/${GOOGLESERVICE_INFO_PLIST}
${PODS_ROOT}/FirebaseCrashlytics/run
if [ "${CONFIGURATION}" == "AppStore" ]
then
echo "Setting up Crashlytics for App Store..."
"${PODS_ROOT}/FirebaseCrashlytics/upload-symbols" -gsp "${GOOGLESERVICE_INFO_APP_STORE}" -p ios "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}"
elif [ "$CONFIGURATION" == "Production" ]
then
echo "Setting up Crashlytics for production..."
"${PODS_ROOT}/FirebaseCrashlytics/upload-symbols" -gsp "${GOOGLESERVICE_INFO_PRODUCTION}" -p ios "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}"
elif [ "$CONFIGURATION" == "Beta" ]
then
echo "Setting up Crashlytics for beta..."
"${PODS_ROOT}/FirebaseCrashlytics/upload-symbols" -gsp "${GOOGLESERVICE_INFO_BETA}" -p ios "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}"
elif [ "$CONFIGURATION" == "Staging" ]
then
echo "Setting up Crashlytics for staging..."
"${PODS_ROOT}/FirebaseCrashlytics/upload-symbols" -gsp "${GOOGLESERVICE_INFO_STAGING}" -p ios "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}"
else
echo "Can't find matching GoogleService-Info.plist for Crashlytics configuration..."
fi
Тогда мой делегат приложения выглядит так:
@import Firebase;
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[FIRApp configure];
// Just put these in for testing
[[FIRCrashlytics crashlytics] setCrashlyticsCollectionEnabled:NO];
[[FIRCrashlytics crashlytics] checkForUnsentReportsWithCompletion:^(BOOL hasUnsentReports) {
if (hasUnsentReports) {
NSLog(@"-=-=-=-=- HAS UNSENT REPORTS -=-=-=-=-");
} else {
NSLog(@"-=-=-=-=- NO UNSENT REPORTS -=-=-=-=-");
}
}];
if ([[FIRCrashlytics crashlytics] didCrashDuringPreviousExecution]) {
NSLog(@"-=-=-=-=- APP CRASHED DURING LAST RUN -=-=-=-=-");
}
return YES;
}
Чтобы проверить это. Я запускаю его из Xcode, затем останавливаю, чтобы он отключил отладчик. Затем я запускаю его из симулятора и нажимаю кнопку, которая вызывает assert(NO);
, и он вылетает, как и ожидалось. Затем я снова запускаю его из Xcode и всегда просто вижу строку в отладчике:
-=-=-=-=- NO UNSENT REPORTS -=-=-=-=-
Я не могу понять, что не так. Сначала я подумал, что он не отправляет сбои в Firebase, но теперь я не думаю, что он даже регистрирует, что есть сбои, - я все время вижу, что нет неотправленных отчетов.
Любая помощь приветствуется.