2013-08-20 2 views
1

푸시 알림을 사용하는 앱을 만들려고합니다. 타사 서버 및 응용 프로그램 개발에서 모든 작업을 완료했으며 알림이 성공적으로 전송되었습니다.애플리케이션에서 GCM 등록 ID를 올바르게 업데이트하는 방법

응용 프로그램의 특정 부분에서 사용자는 특정 서비스를 통해 GCM 및 타사 서버에 등록한 다음 제 3 자 서버에 축구 경기를 업로드합니다. 완료되었습니다.

내가 직면 한 문제는 앱을 제거 할 때 GCM 서버 (메시지를 보낼 때)가 NotConnected 오류로 응답하지 않는다는 것입니다. 그래서 응용 프로그램을 다시 설치할 때 GCMRegistrar는 나에게 새로운 등록 ID를 제공하고 내 서버가 동일한 사용자에 대해 두 가지 등록 ID를 갖도록 만듭니다.

나는 정식 ID의 도움으로이 문제를 해결할 수 있지만. 특히 구글은

"canonical_ids": 1  
"results": [{ "message_id": "1:2342", "registration_id": "32" }] 

성공을 말한다하지만, 등록 ID는 등록을 변경하여, 나는 구글의 조언을 듣고 그렇다면

(23 32) 서버 데이터베이스에 업데이트해야합니다 ID가 오래된 (작동하는) ID로 변경되면 새 등록 아이디로 응용 프로그램이이 특정 새 등록 아이디로 서버에 축구 게임을 보내고 서버는이 정보를 저장할 위치를 이해하지 못합니다.

등록 ID는 사용자의 ID가 아니라 등록 된 기기의 ID임을 알고 있습니다.

나의 첫 번째 생각은 서버에 다른 등록 ID를 부여하는 것입니다. 따라서 정식 ID를 얻으면이를 무시합니다. 나는

은 아무도 들린다 말해 줄 수 ... 내가 한 이전에 등록 ID를 변경하려면 응용 프로그램에 어떻게 든 업데이트 할 때

내 두 번째 생각은 ...하지만이 아이디어를 좋아하지 않는다 내 상황에 더 좋은가요? I가 등록 ID를 변경하여, 구글의 조언을들을 경우에 ... 그래서

답변

0

내가 푸시 알림을 처음 사용 이전 한

의 반대의 그 (작업) 무엇을 Google에서 지시합니다. DB에서 이전 ID를 제거하고 새 등록 ID 만 유지하도록 권장합니다.

다음은 relevant quote입니다 :

정식 ID가 서버 측에

, 응용 프로그램이 잘 작동하고있는 한, 모든 것이 정상적으로 작동합니다. 그러나 응용 프로그램의 버그로 인해 동일한 장치에 대한 여러 등록이 트리거되는 경우 상태를 조정하기 어려울 수 있으며 중복 메시지가 발생할 수 있습니다.

GCM은 이러한 상황에서 쉽게 복구 할 수있는 "표준 등록 ID"라는 기능을 제공합니다. 정식 등록 ID는 응용 프로그램에서 요청한 마지막 등록의 ID 인 으로 정의됩니다.장치에 메시지를 보낼 때 서버에서을 사용해야하는 ID입니다.

나중에 다른 등록 ID를 사용하여 메시지를 보내려고하면 GCM이 요청을 평소대로 처리하지만 정식 등록 ID를 응답의 registration_id 필드에 포함시킵니다. 서버에 저장된 등록 ID를이 정식 ID으로 바꾸십시오. 결국 사용중인 ID는 작동을 멈 춥니 다.

관련 문제