Firebase 클라우드 메시징이란?
서버에서 클라이언트 애플리케이션으로 메시지(알림)를 안정적으로 보낼 수 있는 교차 플랫폼 메시징 솔루션이다.
모든 사용자에게 알림을 전송할수도있고, 그룹을 지어 알림을 전송할 수 있다.
Firebase 클라우드 메시징 HTTP 프로토콜
Firebase 클라우드 메시징을 통해 앱 서버에서 클라이언트 앱으로 메시지를 전달한다.
서비스 워커(service-worker)란? 자바스크립트로 실행되는 백그라운드 스크립트이다.
1)GCM(google cloud messaging) 과 FCM(firebase cloud messaging)
GCM (google cloud messaging)
- 구글에서 제공하는 서버에서 애플리케이션으로 푸시 메시지를 보낼 수 있는 서비스이다.
- Android, IOS를 지원한다.
- 전송 주소 : https://android.googleapis.com/gcm/send
FCM (firebase cloud messaging)
- GCM의 새버전이다.
- Android & IOS & Mobild Web을 지원한다.
- 전송 주소 : https://fcm.googleapis.com/fcm/send
2) GCM 개요
FCM은 새버전의 GCM이다.
▶ GCM 구현 방법
- GCM 서버와의 통신에 필요한 추가 패키지 설치
- GCM 서버에 대한 액세스 권한 구성
- Google Play 서비스의 존재 여부를 확인하는 코드 구현
- GCM 등록 토큰에 대한 협상하는 등록의도 서비스 구현
- GCM 등록 토큰 업데이트를 수신하는 인스턴스 ID 수신기 서비스 구현
- GCM 통해 앱 서버에서 원격 메시지 수신하는 GCM 수신기 서비스 구현
3) FCM 개요
전송, 라우팅 및 서버 응용 프로그램 및 모바일 클라이언트 앱 사이 메시지 큐를 처리하는 플랫폼이다.
▶ FCM 등록
- 사용자는 FCM을 사용하기 전에 등록해야한다.
- 클라이언트 앱 FCM에 보낸사람 ID, API키, 앱 ID 전달하는 등록 토큰을 가져오기 위해 FCM고 ㅏ연결
- FCM등록 토큰을 리턴 (클라이언트 앱에)
- 클라이언트 앱은 서버에 등록 토큰을 전달
4) 다운 스트림 HTTP 메시지 구문 (JSON)
▶ 앱 서버 보내기 요청 작성
FCM 앱 서버 프로토콜을 사용하여 다음과 같은 타겟 유형으로 전송 가능
- 주제이름
- 조건
- 기기등록 토큰
- 기기그룹 이름
HTTP를 통해 메시지를 보내려면 FCM v1 엔드포인트로 HTTP POST요청을 보낸 후 send 메소드를 지정한다.
▶ 특정 기기에 메시지 전송
전송은 다음과 같이 한다.
POST https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send HTTP/1.1
요청 헤더에는 다음이 포함되어 있어야한다.
Content-type: application/json
Authorization: Bearer <valid Oauth 2.0 token for the service account of the Firebase project>
본문은 다음과 같다.
https://fcm.googleapis.com/fcm/send Content-Type:application/json Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA { "data": { "score": "5x1", "time": "15:10" }, "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..." }
요청 본문에서 message객체의 token 키를 타겟팅할 특정 앱 인스턴스의 등록 토큰으로 설정한다.
5) FCM 다운 스트림 메시징 과정
1) 앱 서버는 FCM에 메시지 전달
2) 클라이언트 장치에서 FCM 사용이 불가한 경우, 큐에 메시지 저장
3) 클라이언트 장치 사용가능한 경우, FCM이 클라이언트 앱에 메시지 전달
4) 클라이언트 앱은 FCM 메시지를 받고, 처리한 후 사용자에게 보여줌
6) 안드로이드에 PHP통해 메시지 전달하는 구문
$this->fcm_send(json_encode(array("registration_ids" => $device_identifiers, "notification" => $data, "data" => $data, "priority" => "high")));
참조 : https://firebase.google.com/docs/cloud-messaging/send-message?hl=ko
여기까지 읽어주셔서 감사합니다.
오늘도 좋은하루 되세요 :)
'BE > Web' 카테고리의 다른 글
[웹][javascript] 사업자 등록번호 확인함수 (0) | 2019.01.14 |
---|---|
[웹][php] 로컬에서 라라벨 프레임워크에 MongoDB, Elasticsearch 얹기 (0) | 2019.01.10 |
[웹][FCM,GCM] Firebase 클라우드 메시징 데이터 수신 (0) | 2018.11.27 |
[안드로이드] 안드로이드에서 페이스북(Facebook) 페이지 연동 (0) | 2017.11.30 |
[안드로이드] Firebase 데이터베이스 이용하기 (1) | 2017.11.29 |