본문 바로가기
Mobile

iOS, Android 별 Foreground, Background 푸시 알림 알아보기

by devlect 2024. 2. 7.

모바일 푸시를 보낼 때 Notification에 값을 넣는 방식(OS기본 푸시 알림)과 Data필드를 이용하는 방식(앱에서 푸시 처리)이 있다. 아래는 이 값에 따라 앱이 Foreground와 Background 일 때 어떻게 처리하는지 ChatGPT의 답변이다.


안드로이드에서 data와 notification 사용에 관한 동작

안드로이드 앱이 백그라운드 상태일 때
FCM이 보내는 푸시 알림은 기본적으로 notification 부분이 시스템에 의해 처리되어 사용자에게 알림으로 표시됩니다. 이 경우, 앱이 백그라운드에 있을 때 notification의 title과 body가 사용자에게 표준 알림으로 보여집니다. 반면, data 부분은 앱이 클릭되어 활성화될 때까지 앱에서 직접 접근하거나 사용할 수 없습니다.

안드로이드 앱이 포그라운드 상태일 때
앱이 활성 상태(포그라운드)에서는 notification 부분이 시스템에 의해 자동으로 처리되지 않습니다. 대신, data 메시지가 전송되고, 이를 앱이 직접 받아 처리할 수 있습니다. 이 경우, 앱은 data를 사용하여 커스텀 UI나 팝업을 표시할 수 있으며, notification 부분은 무시됩니다.

대상 기기별 푸시 알림 설정
대상 기기 구분 필요성: 예, FCM을 사용할 때는 대상 기기가 Android인지 iOS인지를 구분하여 적절한 메시지 형식을 설정해야 할 수 있습니다. Android와 iOS는 각기 다른 메시지 구조와 옵션을 가질 수 있으며, 특히 iOS는 APNs를 통한 알림 전송에 특정한 규칙과 옵션이 적용됩니다. 따라서, 푸시 알림을 보낼 때는 대상 기기의 운영 체제에 맞는 적절한 설정을 적용해야 합니다.

 

iOS에서 notification의 동작

iOS 앱이 백그라운드 상태일 때
notification 부분이 APNs에 의해 사용자에게 표준 알림으로 보여집니다. 이때, title과 body는 알림 센터에 표시되는 내용을 결정합니다.

iOS 앱이 포그라운드 상태일 때
iOS 앱이 포그라운드에 있을 때는 FCM 푸시 알림이 직접적으로 알림 UI를 표시하지 않습니다. 대신, messaging delegate 메소드를 통해 알림 데이터를 받게 되고, 이를 앱이 처리하여 사용자 정의 방식으로 표시할 수 있습니다. 즉, 앱이 포그라운드에 있을 때 notification의 title과 body를 앱이 직접 처리하여 사용자에게 커스텀 UI를 통해 보여줄 수 있습니다.

iOS, Android 별 Foreground, Background 동작 

Notification, Data가 둘 다 있거나 없을 때, 둘 중 하나만 있을 때 

 

Android에서의 동작

notification만 값을 설정했을 때
백그라운드: 시스템이 notification을 처리하여 사용자에게 알림으로 표시합니다.포그라운드: 앱이 실행 중일 때는 FCM 라이브러리가 알림을 수신하고, 개발자는 onMessageReceived 콜백을 통해 이를 처리할 수 있습니다. 그러나 표준 알림이 자동으로 생성되지는 않습니다.

data만 값을 설정했을 때
백그라운드 및 포그라운드: data 메시지는 앱이 백그라운드나 포그라운드 상태에 관계없이 onMessageReceived에서 처리됩니다. 시스템 알림은 생성되지 않으며, 앱에서 수동으로 알림을 생성해야 합니다.

notification과 data 둘 다 값을 설정했을 때
백그라운드 시스템이 notification을 처리하여 알림을 표시하고, 사용자가 알림을 탭할 때 data가 앱에 전달됩니다.포그라운드: onMessageReceived에서 두 메시지 유형 모두 처리할 수 있으며, 시스템 알림은 자동으로 생성되지 않습니다.

notification과 data 둘 다 값을 설정하지 않았을 때
아무런 동작도 일어나지 않습니다. 메시지가 발송되더라도 알림이나 데이터 처리는 이루어지지 않습니다.

 

iOS에서의 동작

notification만 값을 설정했을 때
백그라운드 및 포그라운드: 앱이 백그라운드에 있을 때 APNs가 notification 부분을 처리하여 사용자에게 알림으로 표시합니다. 앱이 포그라운드에 있을 때는 앱이 알림 데이터를 수신하고, 이를 커스텀 UI로 처리할 수 있습니다.

data만 값을 설정했을 때
백그라운드: data 메시지는 백그라운드 상태에서는 직접적으로 알림을 생성하지 않습니다. 앱이 다음에 실행될 때까지 데이터가 전달됩니다.포그라운드: 앱이 실행 중일 때 data 메시지를 수신하고, 이를 앱에서 처리할 수 있습니다.

notification과 data 둘 다 값을 설정했을 때
백그라운드: APNs가 notification 부분을 처리하여 사용자에게 알림으로 표시하고, 사용자가 알림을 탭할 때 data가 앱에 전달됩니다.포그라운드: 앱이 알림 데이터를 수신하고, 이를 앱에서 처리할 수 있습니다.

notification과 data 둘 다 값을 설정하지 않았을 때
아무런 동작도 일어나지 않습니다. 메시지가 발송되더라도 알림이나 데이터 처리는 이루어지지 않습니다.

 

댓글