마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Android / 메신저 어플은 GCM으로 하면안되나요?

0 추천

안녕하세요.

 

 

회사에서 게임 내부와 소통할 수 있는, 메신저어플을 만드는중입니다.

기획 당시에는

 

 

1. 어플에서 로그인 -> 초기데이터를 전달받음 (친구 정보, 로그인정보)

 

2. 메세지 쓰기 친구초대 등은 서버에 request -> 관련 정보 response

 

3. 친구정보가 변경된다던가 메세지가 오는것은 무조건 GCM으로 푸시함.

 

 

이렇게 기획을 잡고 시작했습니다.

 

그런데 갑자기 서버개발자가 의문을 던지더군요. "GCM 손실율이 있지않아?"

 

 

검색해보니 "손실될 가능성을 염두해둬야한다" 라고 하더군요. 손실 가능성은 충분히 있고,

 

GCM의 경우 실제로도 20%정도의 정보가 손실된다고 하네요.

 

 

 

그래서 그럼 폴링 방식으로 진행하자는 얘기가 됐습니다.

 

그런데 서버쪽에서 골치아프다며 폴링 말고 다른방식이 없을까하면서 검색좀 해보랍니다.. ㅠ (클라지만,, 전 신입이기에..)

 

 

 

또 검색하다보니, 실제 어플이 켜졌을때랑, 백그라운드에 있을때랑 처리하는 방식을 달리하는 방법도 있더군요.

 

 

실제 어플이 켜져있을 때:

1. 소켓 연결로 바이너리 통신

2. 폴링하다가 정보 전달 후, 바로 다시 폴링

 

백그라운드에 있을 때:

1. GCM을 이용한 메세지가 왔다는 정보 전달 (실제로 어플을 켰을 때, 대화 정보를 가져옴. 그전엔 알림기능일뿐)

2. 10초, 20초 등 시간 단위를 두고 폴링

 

 

 

이런 방법들이 있다는 정도만 알게됐습니다.  2-2 (실제어플-백그라운드) 의 조합이 예전 카카오톡이였다나? 그랬던거같은데.. 흠..

 

뭐가 효율적인지 모르겠네요..

 

 

 

혹시 다른 방식이 있다면 알려주실 수 있을까요?

 

+ GCM 메세지 손실에 대해 알고계신거라던가, 어떤것을 손실로 하는지라던가.. 그에 대한 해결책은 없나요? GCM 메세지를 서버에서 보내고 나서 구조체를 받을 때, 성공했는지 실패했는지 정보가 온다는거 같은데, 이게 손실률에 포함된건가요?

시몬스 (120 포인트) 님이 2015년 9월 11일 질문

1개의 답변

0 추천
mqtt 검색해보세요           -
aucd29 (218,390 포인트) 님이 2015년 9월 11일 답변
mqtt로 하게되면 mqtt용으로 서버를 다시 재작해야한다는 말인가요?
mqtt는 통신 방식입니다(프로토콜)
mqtt서버를 직접 개발하거나 오픈소스를 이용해서 서버를 먼저 구성하세요
mqtt의 경우 ios에서는 제대로 호환이 안된다네요...
ios도 되야해서.. ㅠ
...