마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

[GCM] 최초 실행시 ID가 빈 값입니다.

0 추천

안녕하세요.

푸시를 붙이는 중에 의문점이 생겨 질문 드리러 왔습니다.

푸시를 붙이고 정상적으로 동작하는건 확인 했는데요, 

이상한 점을 하나 발견한게 있는데, 앱을 삭제후 재설치하고 최초 실행시에는

푸시 register id가 항상 빈값이에요.

원래 이런건가요?

그럼 최소 2번은 실행해야 푸시를 받을수 있다는건데... 그럴 리는 없을것 같아서요.

 

제가 뭔가 잘못한건지..

일단 푸시는 register가 제대로 된 다음에 돌리면 정상동작 합니다.

아래는 제가 푸시를 등록하고 id를 받아오는 부분입니다.

onCreate 에서 실행합니다.


GCMRegistrar.checkDevice(this);
GCMRegistrar.checkManifest(this);
String pushId = GCMRegistrar.getRegistrationId(this);

Log.d("tag", before : " + pushId);

if("".equals(pushId)){
      GCMRegistrar.register(this, PUSH_ID);
      String pushId = GCMRegistrar.getRegistrationId(this);
}
Log.d("tag", after : " + pushId);

혹시나 해서 전후로 로그를 찍어봤는데 똑같아요.

항상 최초 실행시에는 pushId가 값이 없습니다.

두번째 실행하면 잘 들어오고요ㅠㅠ

 

제가 뭔가 잘못한건가요?

아니면 원래 이런건지, 해결책이 있는건지.. 도움 부탁드립니다.

ire (3,900 포인트) 님이 2014년 12월 31일 질문

1개의 답변

0 추천
 
채택된 답변
잘못하신건 아니고 원래 그렇습니다.

GCMRegistrar.register(this, PUSH_ID); 를 실행하시더라도 등록되는 시간이 있기 때문에 다음줄에서 바로 받아오기는 힘듭니다.

토큰을 사용하기 바로 직전에 받지 마시고 앱 실행 시 호출하여 먼저 받아오시면 됩니다.

-----------

아 다시보니 onCreate에서 실행하셨네요.

생성하신 IntentService의 onRegistered함수내에서 받아오신 토큰을 서버로 발송한다든지 하는 처리를 하시면 될듯합니다.
냉동참치 (2,340 포인트) 님이 2014년 12월 31일 답변
ire님이 2015년 1월 1일 채택됨
...