2014-04-03 2 views
3

등록하려면 새로운 GCM API를 사용하고 있습니다. 방법에 대한 문서에 다음과 같이 명시되어 있습니다.Google Cloud Messaging - 등록 ID 상태

GCM 신청서를 등록하고 등록 ID를 반환하십시오. 은 응용 프로그램이 설치 될 때 이것을 한 번 호출해야하며 반환 된 등록 ID를 서버에 보냅니다.

이 메서드를 반복적으로 호출하면 원래 등록 ID가 반환됩니다. 이 문서 (http://developer.android.com/google/gcm/adv.html#reg-state를) 읽는 동안

그러나, 그것은 특별한 치료를 필요로 두 가지 경우가 있음 상태 :

특별한주의가 필요 두 개의 다른 시나리오도있다 :

  • 응용 프로그램 업데이트
  • 백업 및 복원

응용 프로그램이 업데이트되면 새 버전에서 작동하지 않을 수 있으므로 기존 등록 ID가 무효화되어야합니다.

개발자가 등록 ID를 무효화해야하는지 여부는 명확하지 않습니다. 새로운 GCM의 API 상태 등록 해제 단계를에 관한 또한

:

등록 취소 응용 프로그램. unregister()를 호출하면 서버의 모든 메시지가 중지됩니다. 이것은 차단 호출입니다. UI 스레드에서 호출해서는 안됩니다. 이 메소드를 호출 할 필요는 거의 없습니다. 리소스 측면에서 비용이 많이들뿐만 아니라 등록 ID가 무효화되므로 불필요하게 변경해서는 안됩니다. 더 나은 방법은 단순히 서버가 메시지를 보내지 않게하는 것입니다. 발신자 ID를 변경하려면 등록을 취소하십시오.

그러나 이전 같은 문서 상태 : 구현 GCM 클라이언트에 설명 된대로 응용 프로그램 등록, 그것은, 나중에 사용하기 위해 등록 ID를 저장 제 3 자 서버에 전달해야 할 때마다

등록을 완료하고 서버가 등록을 완료했는지 여부를 계속 추적하십시오 ( ). 서버가 등록을 완료하지 못하면 다시 시도하거나 GCM에서 등록을 취소해야합니다.

이것은 명확하지 않습니다 (등록 취소 처리 방법).

마지막으로 위에서 언급 한 바에 따르면 Canonical ID가 모바일과 어떻게 관련이 있는지 명확하지 않습니다. Google에서 기존 등록에 대한 Canonical ID를 생성하고이를 애플리케이션 백엔드로 다시 전달하는 경우 등록 메소드를 호출하면 모바일의 등록 ID도 변경됩니다. 모바일이 새로운 ID에 대한 정보를 얻으려면 다른 방법이 있습니까?

미리 감사드립니다.

답변

2

새 버전을 설치 한 후 앱을 실행하면 앱에서 등록 ID를 무효화해야한다고 Google에서 제안합니다. 그들의 GCM demo app이이 제안을 구현합니다. 이 경우를 제외하고는 등록 메소드를 두 번 이상 호출 할 필요가 없습니다 (앱이 처음 시작될 때).

등록 해제 - 보낸 사람 ID를 변경하려는 경우 또는 자신의 서버에 등록하지 못한 경우 등록을 취소하는 것이 좋습니다. 후자의 이유는 서버가 앱에서 등록 ID를 얻지 못하면 등록 ID를 사용하지 않으므로 나중에 앱을 다시 시도하지 않는 한 GCM에 앱을 등록 할 이유가 없기 때문입니다 귀하의 서버에 등록 ID를 보내려면).

정식 등록 ID의 경우 정식 등록 ID를 내 서버로 반환하는 방법을 알고있는 유일한 방법은 GCM (이전 등록 ID를 무효화)에서 앱을 등록 취소 한 다음 가져 오기 위해 다시 등록하는 것입니다. 새로운 등록 ID 이 시나리오에서 서버가 이전 등록 ID를 사용하면 작동하지만 새 등록 ID는 정식 등록 ID로 반환됩니다. 이것이 불필요하게 등록을 취소하지 않기를 제안한 주된 이유 중 하나입니다 (동일한 기기에서 동일한 앱에 대해 여러 개의 등록 ID를 생성하는 것을 방지하기 위해).

새로운 등록 ID는 클라이언트 측에서 취한 조치 (즉, 등록 취소 + 등록)의 결과로 생성되므로 앱은 이미 새 등록 ID를 알고 있어야합니다 (예, 등록자는 최신 등록 ID를 반환합니다 이는 정식 등록 ID와 동일 함) 서버에이를 통보하고 처음 등록 ID가있는 메시지를 보내지 않도록해야합니다. Google의 응답에서 정식 등록 ID를 얻는 것은 클라이언트가 새 등록 ID를 서버에 전달하지 못한 경우 (또는 서버가 이전 등록 ID를 삭제하지 못한 경우)에만 해당됩니다. 따라서 새로운 등록 ID를 고객에게 알릴 필요가 없습니다.

정식 등록 ID에 관한 자세한 내용은 here이고 등록 ID 변경 사항은 here입니다.

관련 문제