공부방/Android

Android FCM 관련 제약 사항 정리.

soycrab 2019. 9. 3. 12:57

 

 

 

Android FCM 을 사용하면서 발견한 몇가지 

 

제약 사항을 정리 하려 합니다. 

 

 

 

1. Payload(메시지 데이터)에 Notification 필드가 포함되어 있으면 

 

백그라운드 상태에서 onMessageReceived를 호출하지 않습니다. 

 

그림 1 을 참고 하시면  Notification만 있을때, Data 만 있을때 , 둘다 사용할때,

 

onMessageReceived의 호출 여부및 노출 여부를 알수 있습니다. 

 

참고 : https://firebase.google.com/docs/cloud-messaging/android/receive 

그림 1

 

2. Android Oreo 버전 이상은 Notification Channel Id 와 Payload 의

"android_channel_id" 가 같아야  heads-up 알림이 노출 됩니다.

 

그 이하 버전은 백그라운드에서 Notification 으로 메시지를 작성하여 보낼 경우 

 

heads-up 알림을 노출할수 없습니다. 

 

 

3. 결론 적으로 Android  와 iOS 의

Notification Payload를 한번에 같이 사용하기는 힘듭니다. 

 

iOS는 Data로만 메시지를 구성할 경우  

 

사용자가 Background 에서 App을  kill 하거나 

 

OS단에서 메모리 부족으로 App 을 메모리에서 해제 시킬수도

 

있기 때문에 제대로 Notification을 받을수 없습니다. 

 

따라서 Notification 을 보내는 Server 측에서

 

사용자의 Device OS 를 구분해서 데이터를 보내 줘야만,

 

두 OS에서 원하는 동작을 구현 할수 있습니다. 

 

 

 

 

 

 

 

 

 

반응형