[flutter] Firebase Database를 사용한 푸시 알림 기능 구현하기

푸시 알림은 모바일 앱에서 중요한 정보를 사용자에게 전달하는 강력한 도구입니다. Firebase는 푸시 알림을 손쉽게 구현할 수 있는 기능을 제공합니다. 이번 블로그 포스트에서는 Flutter 앱에서 Firebase Database를 사용하여 푸시 알림 기능을 구현하는 방법을 알아보겠습니다.

1. Firebase 프로젝트 설정하기

Firebase Console에서 새로운 프로젝트를 생성하고, 앱을 추가하여 Firebase SDK를 설정하세요. Firebase Console에서 푸시 알림을 활성화하기 위해 Firebase Cloud Messaging(FCM) 설정도 완료해야 합니다.

2. Flutter 프로젝트에 Firebase Flutter SDK 추가하기

Flutter 프로젝트의 pubspec.yaml 파일에 다음과 같이 firebase_messaging 패키지를 추가합니다:

dependencies:
  flutter:
    sdk: flutter
  firebase_messaging: ^8.0.0

그리고 패키지를 가져옵니다:

import 'package:firebase_messaging/firebase_messaging.dart';

3. 앱에서 FCM 토큰을 얻기

main.dart 파일의 main() 함수에서 다음과 같이 Firebase Messaging 인스턴스를 생성하고 FCM 토큰을 얻습니다:

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // Firebase Messaging 인스턴스 생성
  FirebaseMessaging firebaseMessaging = FirebaseMessaging.instance;

  // [YOUR_SERVER_KEY]를 Firebase Console에서 얻은 서버 키로 대체하세요
  await firebaseMessaging.requestPermission();
  String token = await firebaseMessaging.getToken(vapidKey: "[YOUR_SERVER_KEY]");
  
  runApp(MyApp(token: token));
}

4. Firebase Database에 알림 등록하기

Firebase Database는 사용자가 알림을 받아야 하는 경우에 필요한 데이터를 저장하는 데 사용됩니다. 아래 코드는 Firebase Database에 알림을 등록하는 함수입니다:

import 'package:firebase_database/firebase_database.dart';

void registerNotification(String token) {
  final DatabaseReference database = FirebaseDatabase.instance.reference();

  // 알림 데이터 저장
  database.child('notifications').push().set({
    'token': token,
    'message': '새로운 알림이 있습니다!'
  });
}

5. 푸시 알림 수신하기

FCM에서 푸시 알림을 수신하고 앱에 표시하는 코드는 Flutter 프로젝트의 main.dart 파일에 추가해야 합니다.

void main() async {
  // ...

  FirebaseMessaging.onMessage.listen((RemoteMessage message) {
    // 알림을 푸시하고 실행할 코드 작성
    print("Received notification: ${message.notification.body}");
  });

  runApp(MyApp(token: token));
}

마무리

위의 단계를 따라하면 Flutter 앱에서 Firebase Database를 사용하여 푸시 알림 기능을 구현할 수 있습니다. Firebase는 사용자에게 중요한 정보를 신속하고 효과적으로 전달하는 훌륭한 도구입니다. 언제 어디서나 사용자와 소통하기 위해 푸시 알림을 활용해 보세요.

더 자세한 내용은 Firebase Flutter SDK 문서를 참조하세요.