|
당연한거 아닌가라고 뭐라고 할수 있지만
혹시나
저같은분이 있을까 하고 글을 올립니다.
샘플코드가
에러없이 잘돌아간다고 그냥 쓰면 안되는걸 이번에도 또 느끼네요..ㅜㅜ
(뭐든지
대충하는 습성을 고쳐야되는데..OTL...)
메세지
PUSH를 C2DM에서 GCM으로 바꾸고 기대를 많이 했습니다. 이전 C2DM은 유실율이 너무 심했거든요..
그런데
GCM도 바꿨는데도 C2DM 못지 않게 유실율이 심했습니다.
저는
메세지는 서버에 저장하고 PUSH가 되었으면 플래그를 두어 'Y','N'으로 표시를 합니다.
그런데
GCM으로 변경해도 'N'이 수두룩하더군요..
사용자들은
계속항의하고 저는 계속 GCM만 탓했죠..(알림이 안되요 등등)
GCM
loss 관련 검색을 아무리해도 찾을수가 없어서 답답해 하던중 아래 번역글을 찾았네요..ㅜㅜ
보통
GCM 이라고 검색하면 뜨는 대부분의 샘플소스가 아래와 같이 검색됩니다.
boolean
SHOW_ON_IDLE = true; //기기가 활성화 상태일때 보여줄것인지
int
LIVE_TIME = 1; //기기가 비활성화 상태일때 GCM가 메시지를 유효화하는 시간
int
RETRY = 2; //메시지 전송실패시 재시도 횟수
Sender
sender = new Sender(simpleApiKey);
Message
message = new Message.Builder()
.collapseKey("collapseKey" + System.currentTimeMillis())
.delayWhileIdle(SHOW_ON_IDLE)
.timeToLive(LIVE_TIME)
.addData("test","PUSH!!!!")
.build();
MulticastResult
result = sender.send(message,regid,RETRY);
위
소스되로 하면 정상적으로 보내지는 메세지는 65프로 밖에 안되는데요(아래 스샷참조)
그리고
아래 처럼 수정하였습니다.
SHOW_ON_IDLE 를
false로 주고(이건 기본값이 false입니다.)
LIVE_TIME =
1800 이건 시간이 아니고 초더군요..
그리고
중요한 것, collapseKey 값을 주지 않았습니다.
boolean
SHOW_ON_IDLE = false; //기기가 활성화 상태일때 보여줄것인지
int
LIVE_TIME = 1800; //이건 시간이 아니고 초를 의미..
int
RETRY = 3; //메시지 전송실패시 재시도 횟수
Sender
sender = new Sender(simpleApiKey);
Message
message = new Message.Builder()
//.collapseKey("collapseKey" + System.currentTimeMillis())
//주석막음
.delayWhileIdle(SHOW_ON_IDLE)
.timeToLive(LIVE_TIME)
.addData("test","PUSH!!!!")
.build();
MulticastResult
result = sender.send(message,regid,RETRY);
이렇게
하면 82프로로 올랐네요..(아래 스샷참조)
90프로
이상 성공율을 보여야하는데 GCM의 한계인걸까요??
이상
허접 삽질기였습니다.
지금
생각해보니 C2DM도 샘플소스 그대로 해서 유실율이 많았던거 같다는..OTL..
반응형
'차근차근 > Android' 카테고리의 다른 글
GCM 사용하기 2 (단말에 GCM 구현하기) (0) | 2014.07.30 |
---|---|
안드로이드 GCM(Google Cloud Messaging for Android) 만들기 (0) | 2014.07.30 |
Google Cloud Messaging / GCM (0) | 2014.07.29 |
[본문스크랩] apk 디컴파일부터 빌드, 서명, zip 정렬까지 한큐에 해결! 이보다 쉬운 설명은 없다고 장담한다. (0) | 2014.07.29 |
glEndTilingQCOM: 0x502 (0) | 2014.07.29 |