카테고리 없음

Flutter 앱에 Firebase Cloud Messaging(FCM) 푸시 알림 설정하기

idea9329 2024. 12. 8. 19:11
반응형

 

1. Firebase 프로젝트 생성

  1. Firebase 콘솔 접속: https://console.firebase.google.com/
  2. 새 프로젝트 생성: "프로젝트 추가" 클릭 후 프로젝트 이름 입력.
  3. Firebase 구성:
    • Google Analytics를 사용할지 선택.
    • 필요한 경우 Analytics 계정 설정.
  4. 앱 등록:
    • iOS 또는 Android 앱으로 앱 등록.
    • Android: 패키지 이름 입력 (com.example.myapp 형식).
    • iOS: iOS Bundle ID 입력.

2. 앱 설정

Android

  1. google-services.json 다운로드:
    • Firebase 콘솔에서 Android 앱 추가 완료 후 google-services.json 파일 다운로드.
    • android/app 디렉토리에 배치.
  2. android/build.gradle 업데이트:
  3. dependencies { classpath 'com.google.gms:google-services:4.3.15' }
  4. android/app/build.gradle 업데이트:
  5. apply plugin: 'com.google.gms.google-services' dependencies { implementation platform('com.google.firebase:firebase-bom:32.0.0') implementation 'com.google.firebase:firebase-messaging' }
  6. FCM 설정: FirebaseMessagingService를 구성하거나 필요한 경우 디폴트 Firebase 설정 사용.

iOS

  1. GoogleService-Info.plist 다운로드:
    • Firebase 콘솔에서 iOS 앱 추가 후 GoogleService-Info.plist 다운로드.
    • Xcode 프로젝트에서 Runner 폴더에 추가.
  2. 푸시 알림 설정:
    • Xcode에서 Signing & Capabilities > Push Notifications 활성화.
    • Background Modes > Remote Notifications 활성화.
  3. APNs 인증 키 업로드:
    • Firebase 콘솔 > 프로젝트 설정 > 클라우드 메시징 > iOS 앱 설정.
    • APNs 인증 키 업로드.

3. Flutter 프로젝트 설정

  1. firebase_core  firebase_messaging 패키지 추가:그런 다음:
  2. flutter pub get
  3. dependencies: firebase_core: ^latest_version firebase_messaging: ^latest_version
  4. Firebase 초기화:
    main.dart 파일에 초기화 코드 추가:
  5. import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); runApp(MyApp()); }
  6. 푸시 알림 토큰 가져오기:
  7. FirebaseMessaging messaging = FirebaseMessaging.instance; void requestPermission() async { NotificationSettings settings = await messaging.requestPermission(); if (settings.authorizationStatus == AuthorizationStatus.authorized) { print('푸시 알림 권한 허가됨.'); } } void getToken() async { String? token = await messaging.getToken(); print('FCM Token: $token'); } @override void initState() { super.initState(); requestPermission(); getToken(); }
  8. 푸시 알림 핸들링:
  9. FirebaseMessaging.onMessage.listen((RemoteMessage message) { print('푸시 알림 수신: ${message.notification?.title}'); }); FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) { print('알림으로 앱 열림: ${message.data}'); });

4. 푸시 알림 테스트

  1. Firebase 콘솔에서 메시지 전송:
    • Firebase 콘솔 > 클라우드 메시징 > 새 메시지 작성.
    • 특정 앱 대상 선택 및 메시지 내용 입력.
  2. 기기에서 앱 실행 및 테스트.

5. 디버깅 및 추가 기능

  1. 에러 로그 확인:
    • Android: adb logcat 사용.
    • iOS: Xcode 디버그 콘솔 사용.
  2. 토큰 갱신 이벤트 처리:
    FirebaseMessaging.instance.onTokenRefresh.listen((newToken) {
      print('새 FCM Token: $newToken');
    });
  3. 백그라운드 및 종료 상태 푸시 처리: Firebase Messaging 문서 참조.

참고 자료

반응형