guricode

Flutter Firebase 시작 정리 - 설치부터 초기화까지 본문

앱/Flutter&Dart

Flutter Firebase 시작 정리 - 설치부터 초기화까지

agentrakugaki 2025. 8. 14. 20:36

 Firebase란?

Firebase는 구글이 제공하는 BaaS (Backend as a Service) 플랫폼으로, 별도의 서버 구축 없이 인증, 데이터베이스, 스토리지, 메시징 등 다양한 기능을 제공한다.
Flutter에서는 다양한 Firebase 서비스를 패키지를 통해 사용할 수 있다.


 Firebase를 Flutter에서 사용하기 위한 설정

1. Firebase 프로젝트 생성

  • Firebase 콘솔에 접속하여 새 프로젝트를 만든다.
  • Android/iOS 앱을 추가하고 패키지명을 지정한다.
  • google-services.json (Android) / GoogleService-Info.plist (iOS) 파일을 프로젝트에 추가한다.

2. 필수 패키지 설치

flutter pub add firebase_core

※ 사용하려는 기능에 따라 다음 중 추가 설치:

flutter pub add firebase_auth         # 인증
flutter pub add cloud_firestore       # Firestore
flutter pub add firebase_storage      # 스토리지
flutter pub add firebase_crashlytics  # 크래시 리포팅
flutter pub add firebase_messaging    # 푸시 알림
flutter pub add firebase_analytics    # 사용자 분석

 main.dart에 Firebase 초기화

import 'package:flutter/material.dart';
import 'package:firebase_core/firebase_core.dart';

void main() async {
  // 플랫폼 채널 설정 이전에 위젯 바인딩 보장
  WidgetsFlutterBinding.ensureInitialized();

  // Firebase 초기화
  await Firebase.initializeApp();

  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Firebase 초기화 예제',
      home: Scaffold(
        appBar: AppBar(title: Text('Firebase App')),
        body: Center(child: Text('Firebase 연결 완료')),
      ),
    );
  }
}

 WidgetsFlutterBinding.ensureInitialized() 왜 필요할까?

  • Firebase.initializeApp()은 플랫폼 채널(Android, iOS의 native 코드와 통신)을 사용하는 비동기 작업이다.
  • 따라서 main() 함수가 비동기로 실행될 수 있도록 보장해줘야 한다.
  • 이를 위해 Flutter에서 바인딩을 먼저 초기화하는 것이 WidgetsFlutterBinding.ensureInitialized()이다.

Firebase에서 사용할 수 있는 주요 서비스

서비스 이름 설명

Authentication 이메일, 구글, 애플 등으로 로그인 기능
Cloud Firestore 실시간 문서 기반 데이터베이스 (NoSQL)
Realtime Database 키-값 기반 실시간 데이터베이스 (Legacy)
Cloud Storage 이미지, 동영상 등 대용량 파일 저장
Cloud Functions 서버리스 백엔드 함수 실행
Remote Config 앱의 설정 값을 원격에서 실시간으로 조정
Firebase Messaging FCM을 통한 푸시 알림 전송
Analytics 사용자의 행동 분석 (화면 전환, 클릭 수 등)
Crashlytics 앱에서 발생한 오류를 실시간으로 추적, 보고

 보너스: Remote Config란?

  • 예시: 앱에 다크모드 기능을 추가했지만 서버에서 그 기능을 비활성화할 수도 있음
  • A/B 테스트, 기능 공개 일정 등을 앱 업데이트 없이 서버에서 조정 가능
flutter pub add firebase_remote_config

 

  • Firebase는 다양한 백엔드 기능을 간단한 패키지 설치와 설정으로 사용할 수 있게 도와주는 도구이다.
  • 앱 개발에서 "기능 개발 + 오류 추적"은 필수인데, Firebase는 이 둘을 모두 충족해준다.
  • 특히 Crashlytics와 Analytics는 운영 단계에서 반드시 필요한 도구다.