IT

FirebaseApp.configure() 완료 시점 확인 방법 (iOS Firebase 초기화 완벽 정리)

초코모찌롤 2026. 3. 21. 11:30
반응형
FirebaseApp.configure() 완료 시점 확인 방법 (iOS Firebase 초기화 완벽 정리)

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는 비동기 특성 고려 필요

반응형