2011-08-30 7 views
4

저는 C2DM 앱이 작동하고 일반적으로 잘 작동하며 푸시 메시지가 빠르게 도착합니다. 그러나 나는 앱을 처음 시작하거나 포커스를 다시 가져 왔을 때 메시지가 도착하지 않으면 상당히 정기적으로 발견합니다.Android C2DM 푸시 메시지가 항상 도착하지 않는 이유는 무엇인가요?

그들은 분명히 성공적으로 (나는 200 개의 응답을 받는다) 메시지 포맷이 확실히 맞다. 실패는 몇 분 동안 지속될 수 있으며, 갑자기 다시 작업하기 시작하고 이후에도 계속 작동합니다.

그러나 작동이 시작된 후에도 오래된 메시지는 사라지고 결코 도착하지 않습니다. 메시지가 확실히 도착하지 않습니다 - 도착한 모든 C2DM 메시지를 강조 표시하는 광범위한 로깅 있습니다.

C2DM이 배달을 보장하지 않는다는 것을 충분히 알고 있기 때문에 일부 메시지는 실패 할 것으로 예상되지만 제 경험상 경우에 따라 작동하지 않는 경우가 있습니다. 분명히 그것이 내 앱 또는 C2DM 서비스 자체에서 잘못하고있는 것인지 이해하고 싶습니다.

C2DM이 메시지 배달에 실패 할 수있는 원인은 무엇입니까? 메시지를 배달 할 수없는 경우 C2DM 서버가 대기열에서 다시 시도하지 않는 이유는 무엇입니까? 관련 - 앱이 처음 시작될 때만 새로운 등록 ID를 얻어야합니까? 아니면 앱이 시작될 때마다 새로 고침해야합니까? 저는 현재 후자입니다 (활동이 아닌 신청서에서).

+0

내 앱과 정확히 동일한 문제가 있습니다. 나는 왜 이런 일이 발생하는지 사용자들로부터 자주 묻습니다 ... 그래서 저는 정말로 그 해답에 관심이 있습니다. 아마도 Google C2DM 팀의 누군가가이 질문에 답변 할 수 있습니다. 어쩌면 당신은 공식 메일 링리스트에 물어봐야합니다 - 그리고 대답을 얻는다면 여기에 게시하십시오;) – Mark

답변

10

나는 모범생 오류를 느꼈다. 앱이 시작될 때마다 C2DM에 다시 등록했습니다. 이 프로세스는 때로는 수 초가 걸리고 그 시간 동안 앱은 이전 등록 ID로 전송 된 푸시 메시지를받지 못합니다. 이는 푸시 메시지가 앱 시작 후 즉시 수신되지 않을 가능성이 높은 이유를 설명합니다.

해결책은 앱에 ID가 아직없는 경우에만 등록 ID를 요청하는 것입니다. 푸시 메시지가 이제 훨씬 더 안정적으로 작동합니다.

+0

나는이 문제를 나 자신으로 보지 못했지만, 당신의 대답을 읽는 것은 내가 같은 모범생 오류를 만든다는 것을 깨달았다. 그래서 이것은 도움이되었다 :-) –

+0

나는 같은 오류를 범했다. 하지만 지금 내 질문은 ... reg_ID가 변경되었는지 확인하기 위해 시작시 등록을 실행했습니다. 이 검사를하지 않으면 reg_id가 다른 시점을 어떻게 알 수 있습니까? 언젠가는 수표를 써야 해. 너 어떻게 생각해? – kinghomer

+0

@kinghomer - 새로운 질문을 시작하여 문제에 대한 도움 받기 –

1

이것은 올바른 동작 일 가능성이 큽니다. 메시지는 전혀 전달되지 않습니다. 혼자 내버려 두지 마라.

휴대 전화와 Google 서버 간의 연결이 끊어지고 다시 연결되는 데 약간의 시간이 걸릴 가능성이 큽니다.

+1

나는 이것이 문제라고 확신하지 않습니다. 네트워크 연결 상태가 좋고 열려있는 연결이 있지만 메시지가 전송되지 않는다는 것을 나타내는 다른 푸시 메시지 (예 : 앱 업데이트)가 정상적으로 작동하는 경우에도 앱 시작시 정기적으로 발생합니다. C2DM은 대기열 메시지로 문서화되어 재 시도하므로 어디로 가고 있습니까? 나는 C2DM 등록 문제가 그들에게 검은 구멍을 낀다고 의심한다. –

관련 문제