반응형
Flutter 앱에서 백엔드 서버의 알림을 받는 일반적인 방법은 다음과 같습니다:
1. Firebase Cloud Messaging (FCM) 사용 (추천)
Firebase Cloud Messaging(FCM)을 사용하면 iOS 및 Android에서 푸시 알림을 쉽게 받을 수 있습니다.
설치 및 설정
- Firebase 프로젝트 생성 및 앱 추가
- firebase_core 및 firebase_messaging 패키지 추가
dependencies: firebase_core: latest_version firebase_messaging: latest_version
- Firebase 초기화
await Firebase.initializeApp();
- 알림 권한 요청 (iOS)
FirebaseMessaging messaging = FirebaseMessaging.instance; await messaging.requestPermission();
- 백그라운드 및 포그라운드 메시지 리스너 설정
FirebaseMessaging.onMessage.listen((RemoteMessage message) { print("Foreground 메시지: ${message.notification?.title}"); }); FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler); Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async { await Firebase.initializeApp(); print("Background 메시지: ${message.notification?.title}"); }
- 토큰 받아서 서버에 저장
String? token = await FirebaseMessaging.instance.getToken(); print("FCM Token: $token");
2. WebSocket 사용 (실시간 데이터)
백엔드에서 WebSocket 서버를 운영하는 경우, web_socket_channel 패키지를 사용하여 Flutter에서 실시간 알림을 받을 수 있습니다.
설치
dependencies:
web_socket_channel: latest_version
사용법
import 'package:web_socket_channel/io.dart';
final channel = IOWebSocketChannel.connect('ws://yourserver.com/socket');
channel.stream.listen((message) {
print("서버에서 받은 메시지: $message");
});
3. SSE (Server-Sent Events)
SSE는 단방향 푸시 방식으로, 서버에서 클라이언트로 이벤트를 보낼 수 있습니다.
설치
dependencies:
http: latest_version
사용법
import 'package:http/http.dart' as http;
void listenToSSE() async {
var response = await http.get(Uri.parse('http://yourserver.com/events'),
headers: {'Accept': 'text/event-stream'});
response.stream.listen((event) {
print("서버에서 받은 이벤트: $event");
});
}
4. 백그라운드 알림을 위한 flutter_local_notifications
푸시 알림이 올 때 flutter_local_notifications를 사용하여 로컬 알림을 표시할 수도 있습니다.
설치
dependencies:
flutter_local_notifications: latest_version
사용법
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
FlutterLocalNotificationsPlugin();
void showNotification(String title, String body) async {
var android = AndroidNotificationDetails('channelId', 'channelName',
importance: Importance.max, priority: Priority.high);
var platform = NotificationDetails(android: android);
await flutterLocalNotificationsPlugin.show(0, title, body, platform);
}
어떤 방법을 선택해야 할까?
방법 장점 단점
FCM | 무료, 글로벌 스케일, 손쉬운 설정 | Firebase 의존성 |
WebSocket | 실시간 양방향 통신 가능 | 백엔드에서 WebSocket 서버 필요 |
SSE | 간단한 실시간 푸시 | 단방향, 브라우저 친화적 |
Local Notifications | 푸시 알림이 없을 때도 사용 가능 | 백엔드 푸시는 지원하지 않음 |
가장 많이 사용되는 방법은 FCM이며, WebSocket은 채팅 등 실시간 기능이 필요한 경우 적합합니다.
어떤 방식이 가장 적합한지 백엔드 환경과 앱의 목적에 따라 결정하면 됩니다! 😊
반응형
'[====== Development ======] > Flutter' 카테고리의 다른 글
Flutter - 위젯간에 데이터를 전달하는 방법 (0) | 2025.02.08 |
---|---|
Flutter - Extension Method (0) | 2025.02.06 |
Flutter - 모델 클래스 생성 및 직력화/역직렬화 간편하게 하는 방법 (0) | 2024.11.20 |
Flutter - Singleton 패턴 (1) | 2024.11.14 |
Flutter - 여러 버전의 Dark SDK 사용하는 방법 (2) | 2024.11.07 |