본문 바로가기

Android

FCM을 이용해 안드로이드 앱으로 메시지 전송 (1)

이번 글에서는 지난 글(http://zeany.net/26)에서 FCM 클라우드 메시지를 받을 수 있도록 설정한 안드로이드 앱에 FCM console을 이용하여 메시지를 보내보도록 하겠습니다.


이전 글이 아닌 FCM의 guide대로 FCM Firebase만 설정했다면 반드시 build.gradle(<project>/<app-module>/build.gradle) 에 com.google.firebase:firebase-messaging에 대해 추가해야 메시지를 받을 수 있습니다.




이전 글의 샘플앱을 실제 디바이스에 설치했다고 가정합니다.


Firebase의 콘솔창 https://console.firebase.google.com/?hl=ko 으로 이동 후 해당 프로젝트를 선택하면 다음과 같은 메뉴가 왼쪽에 보입니다. 이 때 Notifications 메뉴를 클릭합니다. 처음이라면 오른쪽에 보이는 화면이 보일테니 첫 번째 메시지 보내기 버튼을 눌러서 진행합니다.



이후 메시지 내용에 원하는 글을 적고, 사용자 타겟팅 조건...에 앱을 선택 후 이번 테스트용 앱을 선택한 후 메시지 보내기를 누르면 됩니다.

이때 반드시 단말에서 앱은 백그라운드 상태로 있어야 합니다. (ex, 앱 실행 후 홈버튼을 눌러서 배경화면이 보이는 상태)



정상적이라면 다음과 같이 Notification 영역에 메시지가 오는 것을 확인할 수 있습니다.

그리고, 앱을 포그라운드에서 실행한 후 다시 메시지를 보내보면 메시지가 오지 않는 것도 확인할 수 있습니다.



지금의 앱이 왜 백그라운드에서 실행될 때만 메시지를 받을 수 있는지에 대해서 알아보겠습니다.

좀 더 자세한 내용은 https://firebase.google.com/docs/cloud-messaging/android/receive?hl=ko 를 참조하세요.


포그라운드로 실행될 때는 클라우드 메시지는 앱에서 등록한 FirebaseMessagingService 서비스(의 상속 클래스)의 onMessageReceived()로 호출되게 됩니다. 반면에 앱이 백그라운드에 있을 때는 메시지의 종류에 따라 다르지만, 가장 단순한 알림의 경우 작업 표시줄에 표시되게 됩니다.


위에서 FCM console Notifications 메뉴의 메시지 내용에 입력한 문구는 '알림'으로 보내지게 되므로 앱이 백그라운드에 있을 때는 단말 상단의 notification 바에 전송한 메시지가 보여지는 것입니다.


이상으로 FCM console을 이용한 클라우드 메시지 전송을 해봤으며 다음 글에서는 앱이 포그라운드에서 실행 중일 때도 메시지를 받을 수 있도록 앱을 수정하도록 하겠습니다. 



※ 이 프로젝트는 https://github.com/zeany/webview 에 있으며 아래 명령으로 소스를 가져올 수 있습니다.

(이미 git clone 으로 프로젝트를 내려 받은 경우에는 프로젝트 홈 디렉토리에서 git checkout 만 하면 됩니다.)


git clone https://github.com/zeany/webview.git


cd webview

git checkout -f step-10   # 이 글에서는 소스의 수정이 없기 때문에 이전 소스와 동일합니다.