[flutter] 플러터 RxDart로 푸시 알림 기능 구현 방법

소개

푸시 알림은 모바일 앱에서 중요한 정보를 사용자에게 전달하는 데 사용되는 기능입니다. 이번 포스트에서는 RxDart를 사용하여 Flutter 앱에서 푸시 알림 기능을 구현하는 방법에 대해 알아보겠습니다.

사전 준비

푸시 알림을 구현하기 위해서는 다음과 같은 것들이 필요합니다:

  1. Firebase 계정: Firebase를 사용하여 푸시 알림을 보내고 관리할 수 있습니다. Firebase 계정을 생성하고 Firebase 콘솔에 앱을 등록해야 합니다.
  2. Flutter 프로젝트: Flutter로 개발한 앱에서 푸시 알림을 구현하기 위해 Flutter 프로젝트가 필요합니다.

RxDart 설치

RxDart는 리액티브 프로그래밍을 위한 Dart 패키지입니다. 푸시 알림을 관리하기 위해 Observables와 Subjects를 사용할 것이므로, RxDart 패키지를 프로젝트에 추가해야 합니다. pubspec.yaml 파일에 다음 의존성을 추가합니다:

dependencies:
  rxdart: ^0.25.0

의존성을 추가한 후, 패키지를 다운로드하고 프로젝트를 업데이트합니다.

Firebase 설정

Firebase를 사용하여 푸시 알림을 보내기 위해서는 Firebase 프로젝트에서 클라이언트 키를 생성해야 합니다. Firebase 콘솔에 접속하여 프로젝트를 생성하고, 프로젝트 설정에서 클라우드 메시징 키를 생성합니다.

푸시 알림 관리 클래스 생성

Flutter 앱에서 푸시 알림을 관리하기 위해 별도의 클래스를 생성할 것입니다. 이 클래스에서는 FCM 토큰을 가져오고, 푸시 알림을 구독하고, 푸시 알림을 처리하는 메서드를 구현합니다.

import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:rxdart/rxdart.dart';

class PushNotificationManager {
  final FirebaseMessaging _firebaseMessaging = FirebaseMessaging();
  final BehaviorSubject<String> _messageStream = BehaviorSubject<String>();

  Observable<String> get messageStream => _messageStream.stream;

  void init() {
    _firebaseMessaging.configure(
      onMessage: (Map<String, dynamic> message) {
        String notificationMessage = message["notification"]["body"];
        _messageStream.add(notificationMessage);
      },
      onLaunch: (Map<String, dynamic> message) {},
      onResume: (Map<String, dynamic> message) {},
    );
  }

  void dispose() {
    _messageStream.close();
  }
}

위 코드에서 PushNotificationManager 클래스는 _firebaseMessaging 객체를 사용하여 FCM 토큰을 가져오고, 푸시 알림 메시지를 처리합니다. _messageStream은 푸시 알림 메시지를 관리하기 위해 사용되는 BehaviorSubject입니다.

푸시 알림 구독하기

Flutter 앱에서 푸시 알림을 받으려면 PushNotificationManager 클래스의 init() 메서드를 호출하여 푸시 알림 관리를 초기화해야 합니다. 이후에 messageStream을 구독하여 푸시 알림을 처리할 수 있습니다.

PushNotificationManager pushNotificationManager = PushNotificationManager();
pushNotificationManager.init();

pushNotificationManager.messageStream.listen((String message) {
  // 푸시 알림 메시지 처리
});

결론

이번 포스트에서는 RxDart와 Firebase를 사용하여 Flutter 앱에서 푸시 알림 기능을 구현하는 방법을 알아보았습니다. RxDart의 Observables와 Subjects를 사용하여 푸시 알림을 구독하고 처리하는 코드를 작성하였습니다. 이를 통해 푸시 알림 기능을 쉽고 효율적으로 구현할 수 있습니다.

더 많은 정보를 원하시면 RxDart 공식 문서Firebase 공식 문서를 참고하세요.