hsunny study blog

[Firebase] FCM (Firebase Clouding Messaging) [1] 본문

programming

[Firebase] FCM (Firebase Clouding Messaging) [1]

헤써니 2018. 4. 28. 11:58

 

 

많은 앱들은 앱을 이용하는 사용자들에게 알림을 보내는 보편적인 방법으로 Push 메시지를 사용한다.

Push메시지를 발송하기 위해서는 메시지를 발송할 수 있는 서버가 필요하다.

자체 Push 서버를 구축할 수도 있고, google에서 제공하는 FCM을 이용할 수도 있다.

 

 

장점

단점

 자체 Push서버

 * 보안성이 우수하다.

 * 요구사항에 맞춰 서버를 구축할 수 있다.

 

 * 구축에 시간과 비용이 소모된다.

 FCM

 * 무료로 쉽고 빠르게 구현이 가능하다.

 * Firebase에서 제공하는 여러 기능들도 함께 사용 가능하다.

 * 자체 서버 구축보다 보안성이 떨어진다.

 

 

FCM을 이용해 Push 메시지 서비스를 제공할 예정으로, FCM이 뭔지 공부했던 내용에 대해 공유해보려고 한다.

 

 

 

Overview

FCM을 이용한 메시지 전송 큰 그림은 아래와 같다.

 

 

 

애플리케이션 서버는 FCM을 이용해서 단일 장치, 장치 그룹 또는 한 주제로 묶인 기기(topic이용)들에 메시지를 전송할 수 있다.

 

Downstream 메시지가 애플리케이션 서버에서 클라이언트 앱으로 전송되면 앱 서버는 Google에서 제공하는 FCM연결 서버로 메시지를 전송한다. 차례로, FCM 연결 서버는 실행중인 클라이언트에 메시지를 전달한다.

 

 

 

 

Registration with FCM

메시지를 보내기 전에 클라이언트 앱이 FCM 서버에 먼저 등록이 되어있어야 한다.

 

1. 클라이언트 앱에 FCM에 연결하여 등록토큰을 받고, 발신자 ID, API 키, 그리고 앱 ID를 FCM으로 전달한다.

2. FCM이 클라이언트 앱으로 등록 토큰을 반환한다.

3. 클라이언트 앱 (선택적으로) 등록 토큰을 앱 서버에 전달한다.

 

앱 서버는 클라이언트 앱과의 이후 통신을 위해 등록 토큰을 캐시한다. 앱 서버는 클라이언트 앱에 등록 토큰이 수신되었음을 다시 알릴 수 있다. 이 handshake가 발생한 다음에는 클라이언트 앱은 앱 서버로부터 메시지를 받거나 애플리케이션 서버에 메시지를 보낼 수 있다.

이전 토큰이 손상된 경우 클라이언트 앱은 새 등록 토큰을 받을 수 있다.

 

토큰이 변경되는 경우

* 앱에서 인스턴스 ID 삭제

* 새 기기에서 앱 복원

* 사용자가 앱 삭제/재설치

* 사용자가 앱 데이터 소거

 

 

 

 

DownStream Messageing

FCM 서버에서 Downstream 메시지를 저장하고 전달하는 방법은 아래와 같다.

 

1. 앱 서버가 FCM 서버로 메시지를 전송한다.

2. 클라이언트 디바이스를 사용할 수 없는 경우, FCM 서버는 이후 전송을 위해 메시지를 큐에 저장한다.

   메시지는 최대 4주간 FCM 스토리지에 보관되며 기간은 설정 가능하다.

3. 클라이언트 디바이스를 사용할 수 있는 경우, FCM 서버는 해당 디바이스의 클라이언트 앱에 메시지를 보낸다.

4. 클라이언트 앱이 FCM 서버로부터 메시지를 받아 처리하고 사용자에게 표시한다. 

 

 

 

 

Topin Messaging

topic을 이용해서 메시지를 보내는 방법은 아래와 같다.

1.The client app subscribes to a topic by sending a subscribe message to FCM. (해석 잘 안되네)

2. 앱 서버는 메시지 전송을 위해 FCM으로 topic 메시지를 보낸다.

3. FCM은 해당 topic에 등록된 클라이언트에 topic 메시지를 전달한다.

 

 

 

 

FCM을 사용하기 위한 환경설정

[IOS]

* iOS 8.0 이상

* iOS 8이상을 타켓팅하는 Xcode 프로젝트

* Swift 프로젝트의 경우 Swift 3.0 이상 사용

* 앱의 번들 식별자

* CocoaPods 1.2.0 이상

* 클라우드 메시징:

* 실제 iOS 기기

* Apple 개발자 계정의 Apple 푸시 알림 인증키

* Xcode의 App > Capabilities에서 푸시 알림 사용 설정

 

[Android]

* FirebaseMessaging API

* Android Studio 1.4 이상

* Gradle

* Android 4.0 이상 (+ 기기: Google Play 스토어 앱, 애뮬레이터: Google API로 Android 4.0 이상을 실행해야 함)

 

 

 

 

 

 

참고

https://docs.microsoft.com/en-us/xamarin/android/data-cloud/google-messaging/firebase-cloud-messaging (多)

https://firebase.google.com/docs/cloud-messaging/concept-options

http://blog.naver.com/PostView.nhn?blogId=skawo32167&logNo=221029012943&beginTime=0&jumpingVid=&from=search&redirect=Log&widgetTypeCall=true

https://www.youtube.com/watch?v=SOOjamH1bAA

'programming' 카테고리의 다른 글

[프로그래밍]좋은 블로그들  (0) 2016.05.20
JAVA 안드로이드 프로그래밍  (0) 2016.05.10
JAVA 네트워크 프로그래밍  (0) 2016.05.10
예외처리, 입출력 스트림  (0) 2016.05.06
애플릿 구조 및 프로그래밍  (0) 2016.05.06