Android에서 FCM 동작 상황 분석: 앱 종료 시와 Foreground, Background 상태
안드로이드에서 FCM 개발을 진행하다 보면 여러 까다로운 상황들을 만나게 됩니다.
Foreground와 Background에서의 알림 컨트롤
FCM 경험이 조금이라도 있다면, 앱의 foreground와 background 상태에 관계 없이 onMessageReceived
에서 수신 가능하게 하려면 메시지를 data message 형태로 만들어야 한다는 것을 알고 있을 것입니다. (참조 링크)
하지만 이 방법은 앱이 Terminated 상태(완전히 꺼진 상태, 앱 목록에서 지운상태)에서는 onMessageReceived
에서 수신되지 않습니다. 메시지를 notification message로 변경하면 background 상태에서 onMessageReceived
를 수신하지 못하는 딜레마에 빠집니다.
Data Message와 Notification Message 혼합 사용하기
Note: 클린한 해결책은 아니지만 방법은 존재합니다. 결론부터 말하자면 data message와 notification message를 혼합해서 사용하는 것입니다.
notification data message
이렇게 하면 여전히 background에서는 onMessageReceived
로 받아서 컨트롤 할 수 없기 때문에 상단에 알림을 구성하기 위해서 서버와의 긴밀한 협력이 필요합니다.
Data와 Notification의 혼합 사용의 이점
그렇다면 여전히 background에서 컨트롤이 어려운데 섞으면 무슨 소용인가 싶겠지만 백그라운드에서 해당 알림으로 앱이 launch되면 해당 intent 안에 data와 같은 key-value로 값이 설정됩니다.
예시:
background 상태의 앱이 notification과 data로 구성된 FCM을 받게 되면 notification에 정의된 대로 알림이 생성되고, 알림을 선택하면 앱이 실행됩니다. 실행된 해당 activity에서 getIntent().getExtras()
를 실행해보면 data에 정의된 값이 나옵니다.
Note: 앱이 foreground, background, Terminated 상태에 상관 없이 data 값을 가지고 앱을 컨트롤 할 수 있게 됩니다.
0 개의 댓글:
Post a Comment