포그라운드 상태 vs 백그라운드 상태
Flutter에서 FCM(Firebase Cloud Messaging)과 같은 푸시 알림에서 "포그라운드(foreground) 상태"와 "백그라운드(background) 상태"는 앱의 실행 상태를 가리킵니다. 각각의 상태는 앱이 사용자와 얼마나 상호작용 가능한지, 그리고 푸시 알림을 처리하는 방식에 영향을 미칩니다.
의미
onResume 또는 onStart 상태에 해당합니다.특징
예시 (Flutter FCM 포그라운드 처리)
FirebaseMessaging.onMessage.listen((RemoteMessage message) {
print('포그라운드에서 메시지를 받았습니다: ${message.notification?.title}');
// 필요한 경우 로컬 알림 표시
});
의미
onPause 상태에 해당하며, 사용자는 앱과 직접 상호작용하지 않습니다.특징
예시 (Flutter FCM 백그라운드 처리)
백그라운드 상태에서는 알림을 자동으로 처리하고, 사용자가 알림을 탭할 때 앱이 실행됩니다. 개발자는 메시지를 처리하려면 onBackgroundMessage를 사용해야 합니다.
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
print('백그라운드에서 메시지를 받았습니다: ${message.notification?.title}');
// 백그라운드에서 데이터 처리
}
void main() {
FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
runApp(MyApp());
}
의미
특징
getInitialMessage로 초기 메시지를 처리할 수 있습니다.예시 (Flutter FCM 종료 상태 처리)
FirebaseMessaging.instance.getInitialMessage().then((RemoteMessage? message) {
if (message != null) {
print('앱 종료 상태에서 메시지를 받았습니다: ${message.notification?.title}');
}
});
| 상태 | 설명 | 처리 방식 |
|---|---|---|
| 포그라운드 | 앱이 열려 있고 사용자와 상호작용 중 | onMessage로 메시지 처리. 직접 UI 알림을 띄우는 추가 작업 필요. |
| 백그라운드 | 앱이 최소화되거나 다른 앱이 실행 중 | 알림은 시스템 트레이에 자동 표시. onBackgroundMessage로 데이터 처리 가능. |
| 종료 상태 | 앱이 메모리에서 완전히 종료된 상태 | 앱이 다시 시작되면 getInitialMessage로 초기 메시지를 처리. |
이렇게 각 상태를 이해하고 적절히 구현하면, 사용자 경험을 더 풍부하게 만들 수 있습니다. 😊