문서 검색

Firebase 프로젝트와 앱 초기화

Flutter 앱에 Firebase 프로젝트를 연결하고 전화번호 인증, 결제, 원격 설정과 알림을 준비하는 순서를 설명합니다.

마지막 확인:
목차

Firebase 프로젝트 생성 → 플랫폼 앱 등록 → Flutter 초기화 → 인증·결제 → 원격 설정·알림 순서로 진행합니다. 이 글은 Bottari FX 설정 경험을 일반화한 절차입니다. 실제 작업의 완료 범위는 작업 기록에서 확인하세요.

준비물

Firebase와 연결할 Flutter 프로젝트, 플랫폼별 식별자, Firebase·Google Cloud 프로젝트를 관리할 권한이 필요합니다. 실제 SMS를 시험하려면 결제 연결과 수신 가능한 기기를 준비합니다.

단계

  1. 프로젝트와 플랫폼 앱을 등록합니다.
  2. Flutter 초기화와 Phone OTP·결제를 설정합니다.
  3. Remote Config·FCM을 각각 구현하고 기기에서 검증합니다.

프로젝트와 앱 만들기

  1. Firebase Console에서 프로젝트를 만듭니다. 기존 Google Cloud 프로젝트를 사용할 경우 같은 프로젝트를 선택해 중복 생성을 피합니다.
  2. 프로젝트 표시 이름과 고유 프로젝트 ID를 구분해 기록합니다. 개발용·운영용 환경을 나눌 때는 각 앱이 어떤 프로젝트를 사용하는지 명시합니다.
  3. 프로젝트 설정 → 일반에서 Android 앱을 추가합니다. 패키지 이름은 앱의 applicationId와 같아야 합니다. Bottari FX는 im.cocode.bottarifx를 사용합니다.
  4. 사용할 iOS·macOS·웹 앱도 등록합니다. Apple 앱은 Bundle ID를 대조하고, 웹 구성과 네이티브 구성을 섞지 않습니다.
  5. Android 업로드 키와 Play 앱 서명 키의 SHA-1·SHA-256을 등록합니다. Play 설치본은 업로드 키가 아닌 Play 앱 서명 키로 서명됩니다.

완료 확인: Firebase 앱 목록, 프로젝트 ID, 플랫폼 식별자와 인증서 지문이 실제 빌드 설정과 일치해야 합니다. 앱 등록만으로 로그인·알림이 작동하는 것은 아닙니다.

Flutter 초기화

기존 프로젝트 초기화 도구가 있다면 먼저 그 도구의 Firebase 설정을 확인합니다. 별도 도구가 없다면 공식 FlutterFire CLI를 사용합니다. firebase init만으로 Flutter 플랫폼 앱 등록과 SDK 초기화가 모두 끝났다고 판단하지 않습니다.

bash
firebase login
dart pub global activate flutterfire_cli
flutter pub add firebase_core
flutterfire configure

앱 디렉터리에서 실행하고 대상 프로젝트·플랫폼을 선택합니다. 생성된 firebase_options.dart와 플랫폼 구성 파일을 확인한 뒤 앱 시작 시 Firebase.initializeApp에 해당 환경의 옵션을 전달합니다. Firebase 기능이나 지원 플랫폼을 추가하면 구성을 다시 확인합니다.

구성 파일의 프로젝트 식별자와 서버 비밀 키는 다릅니다. OAuth 클라이언트 비밀·서비스 계정 개인 키·서명 키는 앱 번들에 넣지 않습니다.

Phone OTP와 Cloud Billing

  1. Authentication → 로그인 방법에서 Phone 제공자를 켭니다.
  2. 실제 SMS를 사용할 프로젝트의 Cloud Billing 연결과 Firebase 요금제를 확인합니다. Play Console의 결제 프로필 등록과 GCP 프로젝트의 결제 계정 연결은 별도입니다.
  3. Authentication → 설정 → SMS 리전 정책에서 서비스 대상 국가를 정합니다.
  4. 테스트 번호로 오류·재전송·만료 흐름을 확인하고, 실제 기기에서 SMS 수신과 서버 검증을 별도로 확인합니다.

Bottari FX는 전체 국가 허용을 선택했습니다. 당시 콘솔에서는 거부 선택 + 빈 리전 목록이었으며, 이는 차단할 국가를 지정하지 않은 상태였습니다. 이 설정이 모든 국가·통신사에서 실제 전송 성공을 보장하지는 않습니다. 사용량과 비용을 함께 관찰하세요.

전체 국가 허용 설정의 재확인 화면

전화번호 인증은 번호 소유 확인입니다. 법적 본인 확인을 대신하지 않습니다. Google·Apple 로그인은 서버 인증 설정처럼 별도로 구성할 수 있습니다.

Remote Config

Remote Config는 앱 동작에 사용하는 원격 설정입니다. 콘솔에서 매개변수와 기본값을 정의하고 게시한 뒤, 앱에서 기본값 설정 → 가져오기 → 활성화를 구현합니다. 네트워크 실패 시 기본값이나 마지막 활성값으로 동작하도록 합니다.

Bottari FX에서는 phone_auth_enabled, push_enabled를 후보로 구현 중입니다. 이는 기능 노출을 조절하는 값이며 서버 권한 검사를 대신하지 않습니다. 콘솔 템플릿 게시와 실제 앱 반영을 확인하기 전에는 완료로 기록하지 않습니다.

FCM 알림

FCM은 Firebase Cloud Messaging입니다. 앱 권한 요청, 기기 등록 정보의 서버 연결, 서버 발송 권한, 로그아웃 시 연결 해제, 알림을 눌렀을 때의 이동까지 확인합니다. 사용 중인 SDK 버전의 공식 등록 API를 따르고 등록 정보를 로그에 남기지 않습니다.

Android는 알림 권한과 전경·백그라운드·종료 상태를 각각 시험합니다. Apple 플랫폼은 Apple Developer의 APNs 키와 앱 기능 설정이 추가로 필요합니다. Firebase 프로젝트 생성이나 FCM API 활성화만으로 알림 연동 완료라고 판단하지 않습니다.

Android PNV 검토

Phone Number Verification(PNV)은 기존 Firebase Phone SMS OTP와 별도 제품입니다. 지원 기기·통신사 여부, 사용자 동의, 서버 토큰 검증, 기존 번호 계정과의 연결 정책을 확인해야 합니다. 지원하지 않으면 SMS OTP를 제공하고, 사용자가 동의를 취소하면 SMS를 자동 발송하지 않습니다.

Bottari FX는 공식 문서와 온보딩 화면을 확인한 단계입니다. API 활성화·앱 및 서버 연동·운영 전환은 완료되지 않았습니다. 현재 지원 통신사와 운영 요건은 공식 문서를 다시 확인하세요.

확인

프로젝트 앱 목록과 실제 앱의 식별자를 대조합니다. 구성 파일 생성, 콘솔 게시, 서버 배포, 실제 기기 성공을 각각 기록합니다. 아래 사례 기록에서 완료와 진행 상태를 확인할 수 있습니다.

자주 겪는 문제

Play 결제 프로필만 있으면 SMS 결제도 끝났나요?

아닙니다. GCP 프로젝트에 Cloud Billing 계정이 연결되어 있는지 별도로 확인해야 합니다.

다음 단계

GCP 인증과 Play API 설정으로 이어서 진행하세요.

출처