반응형
FirebaseApp.configure() 완료 시점 확인 방법 (iOS Firebase 초기화 완벽 정리)
Firebase를 iOS에서 사용할 때 가장 많이 헷갈리는 부분은 FirebaseApp.configure()가 언제 “완전히 끝난 상태인지”다.
결론부터 보면 👉 완료 콜백은 존재하지 않는다.
하지만 내부 구조를 이해하면 안전하게 사용할 수 있다.
FirebaseApp.configure()는 동기 실행이다
FirebaseApp.configure()
이 메서드는 다음 작업을 수행한다:
- GoogleService-Info.plist 로드
- FirebaseApp 인스턴스 생성
- 기본 SDK 초기화 시작
👉 메서드가 리턴되는 순간 FirebaseApp은 이미 생성된 상태
FirebaseApp.configure()
print(FirebaseApp.app() != nil) // true
---
왜 “완료 시점”이 헷갈릴까?
Firebase 초기화는 두 단계로 나뉜다.
1. 동기 초기화
- FirebaseApp 생성
- 설정 로딩
2. 비동기 초기화
- Analytics 연결
- Crashlytics 세팅
- RemoteConfig fetch
- Installations ID 생성
👉 이 비동기 작업 때문에 “완전히 끝났다”는 개념이 모호해진다.
---초기화 완료로 판단하는 3가지 방법
1. FirebaseApp 존재 여부 확인
FirebaseApp.configure()
guard FirebaseApp.app() != nil else {
fatalError("Firebase not initialized")
}
👉 대부분 상황에서 충분한 기준
---2. Crashlytics 기준
let didCrash = Crashlytics.crashlytics().didCrashDuringPreviousExecution()
👉 Crashlytics가 준비된 상태
---3. Installations 기준 (완전 준비)
Installations.installations().installationID { id, error in
print("Firebase fully ready")
}
👉 네트워크 포함 모든 초기화 완료
---실무에서 사용하는 패턴
패턴 1. 바로 사용
FirebaseApp.configure()
Analytics.logEvent("app_start", parameters: nil)
---
패턴 2. Crashlytics 사용자 설정
FirebaseApp.configure()
Crashlytics.crashlytics().setUserID(userId)
Crashlytics.crashlytics().setCustomValue(userName, forKey: "userName")
👉 가장 권장되는 방식
---주의해야 할 코드
FirebaseApp.configure()
RemoteConfig.remoteConfig().fetch()
👉 일부 SDK는 내부 초기화가 필요하기 때문에 delay 또는 completion 사용 권장
---핵심 요약
| 항목 | 설명 |
|---|---|
| configure() | 동기 실행 |
| FirebaseApp.app() | 즉시 사용 가능 |
| SDK 초기화 | 비동기 진행 |
| 완전 준비 | Installations 콜백 기준 |
정리
Firebase는 “완료 콜백” 대신
동기 + 비동기 혼합 구조로 동작한다.
👉 configure 이후 바로 사용 가능
👉 일부 SDK는 비동기 특성 고려 필요
반응형
'IT' 카테고리의 다른 글
| Claude Code 최신 업데이트 정리 (2026) – AI 코드 리뷰까지 진화했다 (0) | 2026.03.23 |
|---|---|
| Firebase iOS 크래시 대응 방법 (Crashlytics 완벽 가이드) (0) | 2026.03.22 |
| iOS 탈옥 감지 구현 방법 정리 (Swift / UIKit) (1) | 2026.03.18 |
| TCA Optional State Navigation 패턴 정리 (SwiftUI / Composable Architecture) (0) | 2026.03.15 |
| TCA NavigationStackStore 사용 방법 (SwiftUI / Composable Architecture) (0) | 2026.03.15 |