2012-07-21 4 views
43

C2DM 등록이 만료되고 주기적으로 등록 ID를 새로 고쳐야한다는 것을 알고 있습니다. 이것이 GCM의 경우입니까? Android GCM 가이드 (아래 표시)에서 다음 코드를 살펴보면 한 번만 수행하고 새로 고침 할 필요가없는 것처럼 보입니다.하지만 어디서나 명시 적으로 작성된 코드는 표시되지 않으므로 확인하고 싶습니다.GCM 등록 ID가 만료 되었습니까?

final String regId = GCMRegistrar.getRegistrationId(this); 
if (regId.equals("")) { 
    GCMRegistrar.register(this, SENDER_ID); 
} else { 
    Log.v(TAG, "Already registered"); 
} 
+0

유사 : http://stackoverflow.com/questions/16838654/handling-registration-id-changes-in-google-cloud-messaging-on-android – trante

답변

41

EDIT :이 응답은 WAY OUT DATE OF IS, I는 현재 문제가


I 자신에 응답하는 결과 무엇인지 전혀 모른다. 명시 적으로 항상 다시 등록해야하는 것은 아닙니다 (just once according to the example in the docs). GCM과 C2DM의 이전 버전과 달리 또한

, , 구글 자체 지금 등록 자체를 새로 고칠 않습니다 초기 등록에서 등록 ID를 일단 하나 경우에 제외 , 갈 수 있습니다 : 새 버전에 대한 사용자 업그레이드 (이 경우도 위의 링크의 예에서 처리) 할 때 당신은 여전히 ​​재 등록을해야하나요 : 응용 프로그램이 업데이트 될 때

, 그것이 기존 무효화한다 등록 ID는 새 버전에서 작동하지 않을 수도 있기 때문에 응용 프로그램이 일 때 호출되는 수명주기 메서드가 없으므로이 유효성 검사를 수행하는 가장 좋은 방법은 등록 ID가 저장 될 때 현재 응용 프로그램 버전을 저장하는 것입니다.

+0

그러나 등록 ID를 생성하는 방법 mannn ????? –

+1

@AndroidKiller : http://developer.android.com/google/gcm/index.html –

+0

안녕하세요. @MohamedHafez.첫 단락은 GCM이 아닌 C2DM에서 나옵니다. 이는 GCM에 적용되지 않는다는 의미입니다. 이것은 당신의 대답을 약간 오도하게 만듭니다. Thx – AndroidGecko

10

결국은 그렇다고 생각합니다. 공식 문서에서 :

기존 등록 ID는 다음과 같은 시나리오의 숫자에 유효 중단 할 수 있습니다 : 를 응용 프로그램을 수동으로 com.google.android.c2dm.intent.UNREGISTER 의도를 실행하여 등록을 취소합니다. 응용 프로그램이 자동으로 등록 취소되는 경우 사용자가 응용 프로그램을 제거하면 발생할 수 있습니다 (그러나 보장되지는 않음). 등록 ID가 만료 된 경우. Google은 등록 ID를 새로 고침 할 수 있습니다. 이러한 모든 경우에 대해 타사 서버에서이 등록 ID를 제거하고 메시지 사용을 중지해야합니다. 오류 코드가 NotRegistered 일 때 발생합니다.

이 오류 등록되지 않은 장치와 JSON 응답을 반환하여 제 3 자 서버에서 GCM에 요청 일어날 수 있습니다.

일단 이러한 일이 발생하면 해당 ID를 새로 고쳐야합니다.

http://developer.android.com/guide/google/gcm/gcm.html

+0

그래서 토큰이있는 경우 만 확인하는 저장입니다 내 'RegistentIntentService'에서 변경 되었습니까? 공유 환경 설정에 토큰을 저장하고 매번 변경 사항이 있는지 확인합니다. – Zapnologica

관련 문제