구글에서 2014년에 Firebase라는 회사를 인수한 뒤로 GCM 대신 FCM (Firebase Cloud Messaging)이라는 것을 새로 만들었습니다. 이걸 통해 안드로이드 뿐만 아니라 아이폰, 웹앱 등에서도 메시지 전송을 할 수 있다고 합니다.
살펴보니 단순히 클라우드 메시지만 보낼 수 있는 것이 아니라, 인증, 스토리지, 데이터베이스, AdMob (광고) 등의 다양한 기능들을 손쉽게 할 수 있도록 도와주는 역할을 합니다. 사용자는 그런 것들을 도구 삼아 좀 더 하고자 하는 개발에만 전념할 수 있는 것이지요.
Firebase의 기능 중 FCM을 한 번 따라 해보니 예전 GCM 때 보다 쉬워진 것 같고, 단순한 메시지 전송은 FCM Console에서 지원해줘서 테스트나 간단한 앱이라면 그대로 사용할 수도 있을 것 같습니다.
FCM으로 메시지를 보내려면 크게 2가지 과정으로 나눌 수 있습니다.
1) 프로젝트에 Firebase를 추가하는 과정
FCM console에 새 프로젝트를 등록하고 그에 따른 설정 파일 및 값들을 안드로이드 프로젝트에 추가
2) 프로젝트에 클라우드 메시지를 받을 수 있는 코드를 추가하고 FCM console에서 메시지 전송 테스트
이 중 프로젝트에 Firebase를 추가하는 과정까지 이 글에서 살펴보도록 하겠습니다. Firebase의 모든 기능들을 사용하려면 무조건 이 과정은 한번은 진행을 해야 하고 이후 필요한 모듈만 추가하면 됩니다.
FCM 메시지 전송 예제는 특별한 연관성은 없지만 WebView 예제를 재활용합니다.
1. FCM console로 이동
FCM의 홈페이지로 이동하고 구글 계정으로 로그인을 합니다.
https://firebase.google.com/docs/cloud-messaging/?hl=ko
이 후 오른쪽 상단의 "콘솔로 이동" (https://console.firebase.google.com/?hl=ko&pli=1)을 클릭해서 FCM console로 이동을 합니다.
2. Firebase에 프로젝트 생성
console에서 바로 보이는 "새 프로젝트 만들기" 버튼을 누른 후
원하는 프로젝트 이름을 입력하고 국가를 선택합니다.
이제 Firebase에 프로젝트가 생성 되었습니다.
이렇게 생성한 프로젝트에 안드로이드나 아이폰 혹은 웹 앱을 추가한 후 Firebase에서 제공하는 다양한 기능들을 사용하도록 설정할 수 있습니다.
3. Android 앱에 Firebase 추가
아래 화면의 Android 앱에 Firebase 추가 버튼을 눌러서 진행합니다.
1) 앱 세부정보 입력
총 3단계로 구성되어 있는데 첫 번째 앱 세부정보 입력에는 패키지 이름이 필요합니다.
안드로이드 프로젝트의 AndroidManifest.xml 파일의 <manifest> 항목의 package 속성과 값이 동일해야 합니다.
(이제 알았는데 net.zeany.webview가 아닌 zeany.net.webview 로 만들었더군요 ;; 돌이키기에는 늦어서 이대로 갑니다..)
2) 구성 파일 복사
자동으로 다운로드 되는 google-services.json 을 app 디렉토리 아래에 복사합니다.
(혹시 어떤 이유로 못 받았더라도 과정이 끝나고 다시 FCM console에서 다운로드 받을 수 있으니 계속 진행하세요.)
3) build.gradle에 추가
안드로이드 프로젝트에 build.gradle이 2개가 있으니 주의하고 추가할 정확한 내용은 그 아래 스크린샷들을 참조하세요.
프로젝트 수준 build.gradle (<project>/build.gradle) 의 좀 더 자세한 스크린샷입니다.
여기에 추가하는 버전은 언제든지 업그레이드 될 수 있으니 FCM의 버전 정보를 확인하세요.
앱 수준 build.gradle(<project>/<app-module>/build.gradle)의 좀 더 자세한 스크린샷입니다.
클라우드 메시지를 받으려면 노란색 박스로 표시한 'com.google.firebase:firebase-messageing' 모듈도 추가해야 하니 지금 추가하도록 합시다. FCM의 Firebase 설치 가이드에는 말 그대로 Firebase를 앱에 추가하는 것이라 이 모듈의 추가를 여기서 하지 않습니다만, 추가를 하면 소스 추가 없이 앱이 백그라운드에서 실행될 때는 메시지를 전송 받을 수 있습니다. 'com.google.firebase:firebase-core'는 거의 기본으로 추가하게 되니 여기서 같이 추가하도록 합시다. (이건 클라우드 메시지만 해볼 것이라면 여기서 추가하지 않아도 다음 진행에 지장을 주지는 않습니다.)
이후 Android Studio에 보이는 Sync Now 버튼을 누른 후 Build가 에러 없이 끝나면 안드로이드 앱에 Firebase가 정상적으로 추가된 것입니다.
간혹 아래와 같은 에러가 발생하는데 이는 google-services.json 파일을 다시 받아서 덮어쓰면 해결됩니다.
Error:Execution failed for task ':app:processDebugGoogleServices'.
> Missing api_key/current_key object
위 과정에서 com.google.firebase:firebase-messageing 를 추가했다면 이제 앱이 백그라운드에서 실행되는 상태라고 가정했을 때 별도의 소스 수정없이 FCM의 클라우드 메시지를 받을 수 있습니다.
다음 글에서는 별도의 서버 없이 간단하게 FCM console에서 메시지를 전송해 보도록 하겠습니다.
※ 아래 프로젝트에는 google-services.json 파일도 포함되어 있지만, 만약 상용앱을 고려한다면 이 파일은 공유해서는 안됩니다.
※ 이 프로젝트는 https://github.com/zeany/webview 에 있으며 아래 명령으로 소스를 가져올 수 있습니다.
(이미 git clone 으로 프로젝트를 내려 받은 경우에는 프로젝트 홈 디렉토리에서 git checkout 만 하면 됩니다.)
git clone https://github.com/zeany/webview.git
cd webview
git checkout -f step-10
'Android' 카테고리의 다른 글
FCM을 이용해 안드로이드 앱으로 메시지 전송 (2) (3) | 2017.01.10 |
---|---|
FCM을 이용해 안드로이드 앱으로 메시지 전송 (1) (1) | 2017.01.10 |
안드로이드 Native에서 Angular JS로 구현된 웹페이지를 보여주는 WebView에 값을 전달하는 방법 (0) | 2017.01.09 |
안드로이드 SharedPreferences 사용법 (0) | 2017.01.09 |
안드로이드 Native와 WebView 연동 (3) (2) | 2017.01.05 |