C2DM도 안해봤고 이번에 GCM을 사용하려고 테스트 하던중에 궁금한 점이 생겨 고수님들께 한수 듣고자 여쭙게 되었습니다.


일단은 android 개발자 사이트에 있는 GCM 메뉴얼을 보고 테스트 중인데 찬찬히 따라하니 잘 되더군요.


서버는 PHP를 이용해서 구현했구용.


클라이언트 실행을 하면 아래 소스를 따라

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

클라이언트 등록을 합니다.


그리고 GCMBaseIntentService를 상속받아 구현한 BroadCast Receiver 클래스의


onRegistered 메소드에서 registrationId 값을 받을 수 있었습니다.


등록 후 한동안(2,3시간 정도?)는 서버에서 registrationId에 해당하는 기기로 메시지 전송이 잘되는데


꽤 많은 시간이 지나면 등록되지 않았다고  NotRegistered 라는 결과가 나오면서 전송이 안되는군요.


다시 등록하게 되면 registrationId는 변경되고 변경된 registrationId로 메시지를 전송하면 다시 잘 되구요.


여기서 궁금한 점은 registrationId가 특정 기기의 등록번호를 나타내는 건데 이 번호가 계속 변경된다면 


클라이언트는 일정한 텀마다 서버의 DB에 registrationId 변경한 것을 업데이트해줘야 하는건가요 ?


다른 값(API Key, Project ID)들은 고정값인데 registrationId은 계속 변경되니 어떤 방식으로 registrationId를 관리하는지가 궁금합니다.