플랫폼 개발팀 기술 블로그

[FCM] #2. Firebase 프로젝트 생성 및 Android 앱 FCM 설정 본문

Article

[FCM] #2. Firebase 프로젝트 생성 및 Android 앱 FCM 설정

피랑이 2019. 1. 31. 11:39

[FCM] #1. 소개 및 메시지

[FCM] #2. Firebase 프로젝트 생성 및 Android 앱 FCM 설정

[FCM] #3. Firebase 메시지 전송

[FCM] #4. Android 메시지 처리


FCM(Firebase Cloud Message) 메시지가 기기로 전달이 되려면 발신자인 Firebase 그리고 수신자인 기기 설정이 필요하다. 

기기 설정은 전문 앱개발자가 아니기 때문에 간단하게 Android 환경에서 샘플 앱을 만들고 FCM 관련 부분을 설정한다.

Firebase

Firebase는 클라우드 환경에서 웹이나 앱을 쉽게 만들 수 있도록 도와주는 서비스 프로바이더라고 보면 될거 같다.
호스팅, 인증, 데이터베이스, 분석, 클라우드 메시지 등등 다양한 기능들을 벡엔드 형태로 제공하고 있고, 쉽게 사용할 수 있다.
당연히 서비스를 이용한 만큼 비용을 지불하지만, FCM은 무료다. 그래서 많이 이용한다. 
이해를 위해 소개 영상을 한번 보길 바란다.

Firebase 가입 

구글 계정으로 하면 된다. 

Firebase 콘솔로 이동

가입이 완료되고 https://firebase.google.com/ 에서 콘솔로 이동 메뉴을 클릭한다.

프로젝트 생성

1. 콘솔로 이동 클릭


2. 프로젝트 추가 클릭


3. 프로젝트 이름 추가 / 약관 동의 체크 / 프로젝트 만들기 클릭


4. 프로젝트 생성 완료 / 계속 클릭


5. 프로젝트 메인 화면


Firebase 프로젝트에 안드로이드 앱 등록

FcmMsg라는 프로젝트가 생성되었다. 이제 앞으로 만들 안드로이드 앱을 미리 등록해보자.
안드로이드 앱은 패키지명이나 앱닉네임,SHA1 서명으로 등록 가능하다.
Android Studio로 만들 패키지 명을 미리 등록해 보자.

1. 프로젝트 설정 클릭  

Firebase 설정 일반 정보를 볼수 있다. 간단히 보자

프로젝트ID를 유니크하게 만들면 ID만 나오는데 fcmmsg로 만든 프로젝트들이 많이 있어서 숫자까지 나온다. 

아마도 동일한 프로젝트 이름의 넘버링 같다.

외부에 공개되는 이름도 나와있다. 

해당 프로젝트에 앱을 등록하지 않아서 그림과 같이 프로젝트 앱이 없다고 나온다.

안드로이드 아이콘 을 클릭하여 앱을 등록하자.


2. 앞으로 만들 안드로이드 앱의 패키지 이름 등록 후 앱 등록 클릭 


3. 다음 클릭

프로젝트의 설정 정보를 json파일로 다운로드 화면을 볼 수 있다. 

친절하게 경로까지 나와있다. 굳이 이 화면서 다운로드 받지 않아도 나중에 다운로드 가능하다. 미리 받아도 상관없다.


4. 다음 클릭

gradle 기준으로 종속 설정도 친절하게 나와있다. 나중에 설정하면 된다.


5. 이 단계 건너뛰기 클릭

미리 작업된 앱이 있으면 설치가 되었는지 확인하는 과정인데 아직 앱을 만들지 않았으므로 건너뛴다.


6. 해당 프로젝트에 안드로이드 앱이 하나 추가되었다. 


7. 상황에 따라 앱 추가를 클릭하고 IOS 앱을 등록해도 된다. 
여기선 안드로이드만 세팅할 예정이므로 등록하지 않는다. 

google-services.json

해당 파일은 Firebase 설정 파일 정보를 가지고 있다. 
외부에 노출이 되지 않게 관리가 잘 되어야한다.

Android 앱 제작

간단하게 FCM 받을 수 있게끔 앱을 생성하고 세팅하자.

Android Stuido 설치

https://developer.android.com/studio/?hl=ko 링크를 클릭하여 Android Studio를 각 사용하는 OS별로 설치하자.
본인 OS는 Windows 64라서 그 환경에 맞는 설치를 진행하였다. 

Android 프로젝트 생성

1. 메뉴에서 File / New / New Project 클릭

Applcation name을 입력한다. 본인은 fcmmsg를 등록하였다.

Pakage name은 위에서 등록한 안드로이드 앱의 패키지명과 동일하게 해준다. 

2. Phone and Tablet 설정하고 Next 클릭

테스트할 Android 환경을 설정한다. 본인은 Oreo를 선택하였다.


3. Empty Activity 선택 Next 클릭 / finish

앱에 대한 액티비티 선택이다. FCM 메시지 테스트만 하기 때문에 빈 액티비티를 선택하였다. 


4. Tools / Firebase 클릭 

Android Studio에서는 Firebase 관련 툴을 제공한다. 

Firebase를 클릭하면 오른쪽 관련 메뉴가 보인다. 

해당 메뉴들은 Firebase 설정을 최대한 자동화 해주는 기능들이다. 

수동으로 설정해도 상관없다. 



5. Set up Firebase Clound Messaging 클릭

본인은 FCM만 사용할 예정이라 해당 메뉴를 클릭한다. 

  

6. Connect to Firebase 클릭

첫번째로 Firebase에 접속 인증정보를 입력하여 생성한 fcmmsg를 선택한다. 



7. Add FCM to app 클릭 / Accept Chages 클릭

Connect your app to Firebase가 정상적으로 연결되면 Connected라고 나온다. 

이번엔 접속된 Firebase 프로젝트의 설정 정보를 자동으로 추가 설정해준다. 


Accept Changes 클릭하면 

프로젝트단 gradle 및 앱단 gradle 설정, app폴더의 google-servervice.json 까지 정보를 자동으로 추가해준다. 


8. ③, ④설정

③Access the device registration token은 Firebase에서 사용하는 기기 토큰을 접속하는 방법이 설명되어 있고, 

④Handle messages는 FCM 메시지를 받았을 때 처리하는 방법이 설명되어 있다. 


9. MsgFireBaseIdService 클래스 생성

③Access the device registration token을 적용하기 위해 클래스를 생성한다. 



10. MsgFirebaseMessagingService 클래스 생성

④ Handle messages을 적용하기 위해 클래스를 생성한다. 


11. MsgFireBaseIdService 클래스 코드 적용

좌측에 두개의 클래스가 추가 되었다. 

MsgFireBaseIdService에 코드를 추가한다.  8. ③, ④설정 코드임 

sendRegirationToServer(refreshToken) 내용은 주석으로 처리한다. 

해당 메소드는 서버쪽에서 토큰을 저장해야하므로 관련된 부분의 샘플 메소드다. 


12. MsgFirebaseMassagingServcie 클래스 코드 적용

8. ③, ④설정 코드를 보고 추가한다.  

ScheduleJob() 및 HandleNow()는 주석으로 처리한다. 

메시지가 도달하였을 때에 대한 샘플 메소드이므로 우선 주석처리한다. 


13. AndroidManifest.xml 설정

기기토큰 및 메시징 처리를 위하여 메니페스트를 적용한다.  

com.google.firebase.INSTANCE_ID_EVENT 는 토큰 처리이므로 토큰 처리 클래스 MsgFireBaseIdServece를 추가한다. 

com.google.firebase.INSTANCE_MESSAGING_EVENT 는 메시지 처리이므로 메세지 처리 클래서 MsgFirebaseMessagingService를 추가한다. 


14. Firebse 콘솔에서 메시지를 보내본다.  

프로젝트 생성 및 FCM 설정이 거의 다 끝났다. 


15. 에뮬레이터 선정 

우선 앱이 잘 뜨는지 확인해 보기 애뮬레이터 설정을 해야 한다. 

처음 Run app 할 때 새로 에뮬레이터를 추가해 줘야 한다. 

Create New Virtual Device를 클릭하여 추가한다. 

보인은 Nexus 5X를 추가했다. 


16. 에뮬레이터에서 앱 확인

Run app을 하면 에뮬레이터에서 앱을 확인 할 수 있다. 

밑에 로그중 Refresh token은 기기의 앱 토큰이다.  

Firebase 콘솔에서 토큰을 넣어서 테스트 해야 하기 때문에 우선 복사해 놓자. 

보통 아래와 같은 형태다 


e2mbtHS8PfE:APA91bHeC0r91I-OBD9qyGHNZ9Qb18AFHsPX7WhuTfBjWAbpK7RX0s8AQeBBV1uZYhO-sNdCZnKdk41GlI0WG6h0FTuDVp1Huueb_G78a4a8d-DxaS-g0sJcAGdjz9cNsq 


기기 토큰이 변경될 때는 여러 경우가 있는데 보통 새로 앱이 설치되었을 때나, OS 자체 복원인 경우, 그리고 앱 데이터 삭제를 했을 경우에 일어난다. 

앱을 종료했을 경우에는 기기 토큰 변경이 일어나지 않는다. 

Firebase 콘솔에서 메시지 테스트

지금까지 Firebase 설정 및 Android Studio를 이용하여 앱을 생성하였다. 
이제 Firebase 콘솔에서 메시를 보내보자. 

에뮬레이터 앱 실행 화면

Nexus X5 에뮬레이터를 이용하여 fcmmsg 앱을 실행한 화면이다. 


앱을 종료하거나 백그라운드 상태로 변경한다. 



Firebase 콘솔 메시지 보내기

Firebase 콘솔에서 메시지를 보내보자. 
본인은 기기 단일 토큰으로만 메시지를 보낸다. 
기기그룹이나. 주제를 이용한 메시지 전송은 나중에 상황이 될 때 진행한다. 

1. Cloud Messaging 클릭 / Send your first message 클릭

이제 처음으로 메시지를 보내본다. 

Send your first mesasge를 클릭하면 알림 작성 화면이 나온다. 

알림 제목과 내용을 입력한다. 


2. 기기에서 테스트 클릭 / 테스트 클릭
아까 복사해 뒀던 토큰을 입력하고 + 눌러 추가한다. 
이제 테스트 클릭을 하면 메시지가 에뮬레이터로 전송된다. 

에뮬레이터 앱 메시지 도달 화면

메시지가 기기에 도달이 되면 알림이 온다. 
마우스를 이용하여 아래로 드래그 하면 메시지 제목과 내용이 나온다. 

제목은 잘살아보세
내용은 우리 모두 잘살아보세


마치며...

지금까지 Firebase 설정 및 안드로이드 앱을 제작하였다. 
그리고 에뮬레이터를 실행하여 실제 메시지가 오는지 확인까지 하였다. 

이것으로 기본적으로 푸시 메시지를 받을 수 있는 수신 환경이 마련되었다.

다음에는 푸시 메시지 발송에 대해서 알아보자. 


Comments