2012-08-27 3 views
0

C2DM에서 GCM으로 내 Android 앱을 이전하는 중입니다. GCM 대 C2DM 인 ID의 표시와 함께 수신 할 서버 측 설치가 있고 등록 된 서비스에 따라 적절한 서비스를 통해 서버 측에 전송합니다.GCM으로 이전했지만 C2DM 등록 ID가 여전히 있습니다.

내가 실행 한 문제는 응용 프로그램이 GCM (내 보낸 ID를 의도적으로 사용하는 앱 업데이트)으로 내 서버에 등록하고 있다는 것입니다.하지만 불행히도 ID가 서버에 전달되는 ID는 등록 ID는 실제로 이전 C2DM ID입니다.

기존 C2DM 등록 ID를 계속 사용하지 않고 새로운 (GCM) ID가 있는지 확인하기 위해 앱 마이그레이션에서이 작업의 일부로해야 할 일이 있습니까? 이는 테스트하고 재현하기가 쉬우 며 매번 일관된 결과를 얻습니다 (GCM 서버의 MisMatchedSenderId). 먼저 C2DM ID 등록을 취소해야합니까?

+0

앱에서 GCM에 등록하는 데 사용하는 코드가 마음에 드십니까? – Femaref

+0

public static void register (컨텍스트 컨텍스트, 문자열 senderId) { 인 텐트 registrationIntent = 새로운 인 텐트 (REQUEST_REGISTRATION_INTENT); registrationIntent.putExtra (EXTRA_APPLICATION_PENDING_INTENT, PendingIntent.getBroadcast (컨텍스트, 0, 새 Intent(), 0)); registrationIntent.putExtra (EXTRA_SENDER, senderId); context.startService (registrationIntent); } –

답변

0

장치에 이미 등록 ID (c2dm)가 있었기 때문에 문제가 무엇인지 파악할 수있었습니다. 새 senderId (gcm)로 등록 서버를 공격하려고했으나 사용하지 않아서 이전의 c2dm 등록 ID. 의견을 주셔서 감사합니다

+0

다행 당신은 그것을 바로 잡을 수있었습니다. 귀하의 질문에 대한 정답이기 때문에 자신의 대답을 받아 들여야합니다. 당신이 할 수 있다면 조금 더 정교하게 만드는 것이 좋을 것입니다. 왜 이전 등록 ID를 유지하고 있었는지에 대한 것입니다 (즉,이 코드 또는 prefs 또는 다른 것을 저장하는 코드를 일으킨 Google 코드였습니다). 당신이 그것을 고치기 위해 무엇을 했는가? (선택을 취소하면 다른 c2dm 방법이라고 부름)? – ajh158

+0

물론 문제가 없습니다. 기본적으로 이전 등록 ID (c2dm의 경우)가 등록 정보에 저장되어 있으므로 등록 ID가 있으면 GCM에 등록 할 메소드가 호출되지 않았습니다. 문제를 해결하기 위해 기본 설정에서 등록 아이디를 지우고 GCM에 새로운 등록을 시작했습니다. 이전 등록 ID를 지우기 전에 서버를 DELETE로 호출하여 C2DM 장치 목록에서 삭제하도록주의해야합니다. 따라서 GCM 장치가 계속 증가함에 따라 DB가 지속적으로 축소되는 것을 확인해야합니다. –

0

보낸 사람 ID 대신 전자 메일 주소 대신 Google API 프로젝트 ID를 보내도록 클라이언트 코드를 업데이트해야합니다.

Google API 프로젝트 ID를 얻는 방법은 GCM Getting Started Guide입니다.

내 경우
Intent registrationIntent = new Intent("com.google.android.c2dm.intent.REGISTER"); 
// sets the app name in the intent 
registrationIntent.putExtra("app", PendingIntent.getBroadcast(this, 0, new Intent(), 0)); 
registrationIntent.putExtra("sender", senderID); 
startService(registrationIntent);

, 센더 실제로 strings.xml의에서 읽었습니다, 그래서 구글 API를이 이메일 주소를 교환했다 : 여기

내가 Migration Guide에서 복사 예제 코드 변화 프로젝트 ID.

+0

예 실제로 해 보았습니다. 문제는 기기가 이전의 C2DM 등록 ID를 유지하고 새 GCM 등록 ID를받는 대신 내 서버로 전송한다는 것입니다. 그러나 새로운 설치 (결코 c2dm 등록 ID가 없었 음)가 성공적으로 작동합니다. –

+0

코드에서 어딘가에 – ajh158

+0

(으)로 전화해야합니다. 이전 의견을 죄송합니다. 편집하기에는 너무 오래 기다렸습니다. 내가 말하고자하는 것은 startService (새로운 sendID가 전달되는지 확인하기)와 수신자의 onRegister 및 onError를 호출하기 전에 중단 점을 설정하여 어떤 응답을 얻었는지 확인하는 것입니다. 참고로 C2DM 및 GCM에 대한 등록 ID는 동일한 형식으로 표시됩니다. – ajh158