목차
server key
Firebase Cloud Message(FCM) 에 project 를 등록하고 나서, 설정으로 가면 server key 를 확인할 수 있다.- https://console.firebase.google.com > project 선택 > 설정 > 클라우드 메시징
App server 의 역할
Role of the App Server 에서 app server 가 아래 조건을 만족해야 한다고 한다.- client 와 통신할 수 있어야 한다.
- 알맞은 형식으로 된 request 들을 FCM connection server 로 보낼 수 있어야 한다.
- request 를 처리하고 재전송할 때 exponential back-off 를 사용해야 한다.(한번 실패 하면 제곱씩 latency 를 주는 것으로 이해하면 됨.)
- Server key 와 client registration token 들을 안전하게 저장해야 할 수 있어야 한다. 주의 : 절대 client code 에 server key 를 넣지 마라
- XMPP에선, 서버는 서버가 보내는 message 를 구별하기 위해서, 고유한 message ID 들을 만들 수 있어야 한다.(FCM HTTP 연결 서버는 message ID 들을 생성하고 response 에 그것들을 return 한다.)XMPP message ID들은 sender ID 내에서 유일하면 된다.
FCM connection server protocol
FCM connection server protocol(FCM 과 연결할 때 사용하는 protocol) 에는 아래 2가지가 있다.- XMPP:
- upstream/downstream 이 된다.(최대 4kb data)
- Asynchronouse : 비동기다. App server 가 메시지를 모든 기기에서 보내고, 받을 때 지속적인 XMPP connection들 (persistent XMPP connections)을 이용한다. 이 XMPP connection server 는 비동기적으로 ACK 를 보내거나 failure noti 를 보낸다.(json 이 XMPP message 형태로 encoded 된 형태)
- 여러 registration token 에게 Multicast downstream send : 지원안함
- HTTP:
- downstream 만 된다.(최대 4kb data)
- Synchronous : App server 는 client 에서 HTTP Post request 를 보내고 response 를 기다릴 때 message 를 보낸다. 이 과정이 synchronous 하게 이뤄진다. 그래서 한쪽에 보내는 작업이 끝나야 다른 곳에 보낼 수 있다.
- 여러 registration token 에게 Multicast downstream send : JSON format 으로 지원함
구현
connection server
아래 그림에서 빨간색 박스 안에 있는 부분이 connection server 이다. 이 녀석을 google 에서 제공하는 것이고, 우리는 app server 를 만들어서 이 connection server 에 message 를 보내면, 이 connection server 가 client 에 push 를 날려주는 것이다.구현은, 자신의 app server 에서 FCM connection server 와 protocol 만 잘 맞춰 주면 된다.
여러기 기기로 message 보내기
FCM 은 다음 2가지 방법을 제공한다.- Topic messaging
- Device group messaging
device group 에 메시지 보내기[ref. 3]
이것은 한 user 가 여러개의 기기를 사용하는 경우 사용될 수 있다. 그러니까, 예를 들면, 구글 뮤직 같은 것을 보면 같은 계정으로 여러기기에 설치가 된다. 이 경우에 구글 뮤직에서 어떤 noti 를 줄 때 여러기기에 전부 같은 noti 를 줘야 할 것이다. 이런 경우에 이 device group messaging 이 사용될 수 있겠다.제한은 iOS 는 2KB 이고, 안드로이드는 4KB 이다.
그룹은 notification_key 라는 것을 공유하게 되고, 이것을 이용해서 FCM 이 message 를 group 내에 있는 모든 device 에 보내게 된다.
이녀석을 만드려면, FCM 에 아래 처럼 보내면 RCM 이 notification key 를 return 해준다.
https://android.googleapis.com/gcm/notification Content-Type:application/json Authorization:key=API_KEY project_id:SENDER_ID { "operation": "create", "notification_key_name": "appUser-Chris", "registration_ids": ["4", "8", "15", "16", "23", "42"] }
{ "notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ" }
자세한 사항은 ref. 3 를 참고하자.
Reference
- About Firebase Cloud Messaging Server | Firebase
- Send Messages to Multiple Devices | Firebase
- Device Group Messaging on Android | Firebase
댓글 없음:
댓글 쓰기