Firebase로 푸시 알림 추가 — 속보 알림으로 더 빠른 뉴스 경험

2025. 5. 27. 17:29·Flutter/Flutter 뉴스 앱 만들기
728x90
반응형

속보는 뉴스 앱의 존재 이유 중 하나다.
중요한 뉴스가 떴을 때, 사용자가 앱을 켜지 않아도 알려주는 기능 — 푸시 알림은 뉴스 앱에 있어 핵심 기능이다.

이번 글에서는 Firebase Cloud Messaging (FCM)을 활용해 Flutter 앱에 푸시 알림을 추가하고,
뉴스 속보 알림을 수신하는 구조를 정리해본다.


📦 필요한 패키지 설치

// pubspec.yaml
dependencies:
  firebase_core: ^2.24.2
  firebase_messaging: ^14.7.4

iOS의 경우 GoogleService-Info.plist 추가,
Android는 google-services.json 추가가 필요하다.


🚀 FCM 초기화 및 권한 요청

void setupFirebaseMessaging() async {
  await FirebaseMessaging.instance.requestPermission();
  
  FirebaseMessaging.onMessage.listen((RemoteMessage message) {
    print('📩 포그라운드 알림 수신: ${message.notification?.title}');
    // TODO: 로컬 알림 또는 Snackbar로 표시 가능
  });

  FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) {
    print('🔗 알림 클릭 → 앱 열기');
    // TODO: 특정 뉴스 상세 화면으로 이동
  });
}

앱 시작 시 setupFirebaseMessaging() 호출이 필요하다.


🔑 토큰 발급 및 백엔드 연동

String? token = await FirebaseMessaging.instance.getToken();
print('📲 내 기기 FCM 토큰: $token');

이 토큰을 서버로 보내면, 특정 사용자에게 푸시 메시지를 보낼 수 있다.
서버에서는 Firebase Admin SDK 또는 푸시 서비스 플랫폼(FCM REST API)을 통해 발송한다.


📥 수신된 알림 UX 개선

  • 포그라운드 수신 시 → Snackbar로 보여주기
  • 백그라운드 수신 후 앱 열기 → 뉴스 상세로 이동
  • 알림 클릭 시 payload 파싱 → 뉴스 ID 전달
// 알림 클릭 시 이동 예시
FirebaseMessaging.onMessageOpenedApp.listen((message) {
  final newsId = message.data['news_id'];
  Navigator.push(
    context,
    MaterialPageRoute(builder: (_) => NewsDetailScreen(newsId: newsId)),
  );
});

🔔 로컬 알림 연동 (옵션)

포그라운드에서 알림을 사용자에게 직접 보여주고 싶다면, flutter_local_notifications 패키지를 함께 사용한다.

// pubspec.yaml
flutter_local_notifications: ^16.2.0
// 알림 수신 시 로컬 알림 표시
void showLocalNotification(RemoteMessage message) {
  flutterLocalNotificationsPlugin.show(
    0,
    message.notification?.title,
    message.notification?.body,
    NotificationDetails(...),
  );
}

📌 실전 활용 팁

  • 주요 카테고리(정치/경제 등)만 구독 설정 → subscribeToTopic()
  • 야간 알림 비활성화 기능도 고려
  • 클릭 → 해당 뉴스 상세 페이지로 이동 로직 연동
// 주제 구독 예시
FirebaseMessaging.instance.subscribeToTopic('politics');

🧘 마무리하며

Flutter 뉴스 앱의 마지막 퍼즐은 바로 속보 알림이다.
사용자는 직접 앱을 열지 않아도, 중요한 뉴스는 놓치지 않는다.

앱은 꺼져 있어도, 뉴스는 계속 움직인다. 그 흐름을 이어주는 다리가 바로 푸시 알림이다.

✍️ 이 글은 터미널 밖으로 나온 개발자의 Flutter 뉴스 앱 만들기 여정입니다.

728x90
반응형

'Flutter > Flutter 뉴스 앱 만들기' 카테고리의 다른 글

오프라인 모드 구현 — 캐시 저장을 활용한 네트워크 없는 상황 대응  (4) 2025.05.27
다크 모드 대응하기 — 눈에 편안한 뉴스 보기  (0) 2025.05.27
좋아요 및 북마크 기능 추가 — 내가 좋아한 뉴스 저장하기  (0) 2025.05.27
카테고리 탭 만들기 — 정치, 경제, 스포츠를 손쉽게 구분하기  (0) 2025.05.27
뉴스 상세 페이지 — 이미지, 본문, 공유 버튼까지 세련되게  (0) 2025.05.27
'Flutter/Flutter 뉴스 앱 만들기' 카테고리의 다른 글
  • 오프라인 모드 구현 — 캐시 저장을 활용한 네트워크 없는 상황 대응
  • 다크 모드 대응하기 — 눈에 편안한 뉴스 보기
  • 좋아요 및 북마크 기능 추가 — 내가 좋아한 뉴스 저장하기
  • 카테고리 탭 만들기 — 정치, 경제, 스포츠를 손쉽게 구분하기
코드를 걷는 사람
코드를 걷는 사람
devwanderer 님의 블로그 입니다.
  • 코드를 걷는 사람
    터미널 밖으로 나온 개발자
    코드를 걷는 사람
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Flutter
        • Flutter 게시판 앱 만들기
        • Flutter 뉴스 앱 만들기
        • Flutter 메모 앱 만들기
        • Flutter 캘린더 앱 만들기
        • Flutter 날씨 앱 만들기
      • Next.js
      • Ruby On Rails
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    openweather
    날씨앱
    모바일앱개발
    백엔드개발
    flutterui
    메모앱
    table_calendar
    다크모드
    캘린더앱
    코드를걷는사람
    fluttertips
    Firebase
    북마크기능
    flutter상태관리
    flutter디자인
    정적사이트
    UI디자인
    RubyOnRails
    ActiveRecord
    flutter기초
    Flutter
    flutter앱개발
    감성앱
    Nextjs
    개발블로그
    UIUX
    rails보안
    flutter게시판
    flutter개발
    뉴스앱
  • 최근 댓글

  • 최근 글

  • 반응형
    250x250
  • hELLO· Designed By정상우.v4.10.3
코드를 걷는 사람
Firebase로 푸시 알림 추가 — 속보 알림으로 더 빠른 뉴스 경험
상단으로

티스토리툴바