FCM으로 업데이트되었다고함..FCM은 추후에 다시 정리하도록 하겠습니다~
Google Cloud Messaging
개발자에게 서버에서 안드로이드 디바스의 어플리케이션으로 데이터를 전송하는 것을 도와주는 무료 서비스.
3rd-party에서 새로운 데이터가 있을 경우 gcm 서비스를 통하여 message를 특정 device의 특정application으로 전송 해준다. message는 최대 4kb
GCM 서비스는 message를 큐잉하며 이를 단말에 전달해주는 처리를 담당함.
GCM Conntection Server는 http / xmpp 지원함
Flow
GCM Server는 3rd-party server로부터 message를 받고 이것을 gcm을 사용하는 app 단으로 전송한다.
현재 GCM connection server는 HTTP와 xmpp를 지원한다.
XMPP 프로토콜은 단말과 서버간의 tcp 연결을 계속 유지시켜준다.
3rd-party server는 GCM connection server에 message를 보내고, connection server는 queue에 message를 저장하고, device가 online 일 때 device에 message를 보낸다.
app은 GCM message를 받기 위해 GCM에 등록해야하며 , REGISTRATION id를 얻어야 한다.
만약 xmpp conntection server를 사용한다면, client app은 upstream message를 connection server에 보낼 수 있다.
GCM 특징
안드로이드 어플리케이션으로 message를 보낼 수 있는 3rd party server를 허용.
GCM은 MESSAGE 전달과 순서를 보장하지 않음.
Android Application은 message를 받기 위해 실행되고 있을 필요 없음.
GCM은 단순히 원시 DATA를 ANDROID 단말로 보내며, 이 DATA를 통해 application에서 제어함.
android 2.2 이상 지원 , Google Play Stote App이 설치되어있어야함.
구글계정 필요, android 4.0.4이상에서는 필요없음.
|
GCM |
서버인증 |
Google Api Console을 통해 발급받은 simple api key를 사용 |
Sender Id |
Google Api Console을 통해 발급받은 sender ID 사용. |
Json Format |
지원 |
Multicast message |
동일한 MESSAGE를 여러 단말에 전송할 수 있음.(JSON형태로) |
Multiple Senders |
다양한 3rd party server로부터 같은 app에 message전송.(하나의 통일 restration id사용) |
Time to Live |
0~4주 사이를 expire로 지정가능. 만료일이 지나면 message저장 |
battery |
배터리에 좀 더 효율적 |
quotas |
제한 없음. |
GCM 아키텍처
app은 message를 받기위해 GCM으로부터 device를 register함. 이 register를 3rd-party에 등록.
3rd party server는 app에 message를 보내기 위해 등록된 register와 함께 GCM으로 message전송.
GCM Connection Server는 register로 확인된 단말에 해당 message를 전송
- 단말에서 GCM으로 REGISTER요청
- GCM에서 REGISTER 성공 후 resistration id 전송
- 3th party server로 registration id 전송
- resistration id값과 message를 gcm으로 전송.
- 해당 registration에 맞는 단말에 message전송.
GCM 시퀀스
GCM 용어정리
Sender ID
Application ID
Registration ID
Google User Account
Sender Auth Token
'웹 개발 > 안드로이드' 카테고리의 다른 글
RecyclerView란? (0) | 2017.05.10 |
---|---|
가변 비트레이트 스트리밍(Adaptive Bitrate Streaming) (0) | 2017.04.11 |
Parcelable (0) | 2017.04.08 |
Intent (0) | 2017.03.18 |
SurfaceView 와 SurfaceHolder (0) | 2017.03.14 |