어제 이곳 게시판에 c2dm 사용시 registration_id 를 못받아오는 문제에 대해 질문을 했었는데요.
아무리 골똘히 봐도 소스자체에는 틀린게 없는것 같아서요.
그래서 궁금한점이...
1. 혹, c2dm 서버 등록후 구글로부터 메일을 받았지만 실제로 사용은 몇일 걸리는 것인가요???
2. startService()로 실행시킨 BroadcastRecever 클래스의 동작을 확인하는 방법이 별도로 있나요?
클래스 파일 안의 onReceive() 안에서 Log를 넣었는데 확인이 안되네요.
둘째 아이디받는 리시버가 매니패스트에 선언시 이름만 있네요
클래스의 풀패스를 넣어보세요
리시버 경로선언이 잘못되어 그런것일수있습니다
한 예로 아이디 요청후3g타겠죠?
그리고 곧 한번 통신을 더하면 아이디는 들어오는겁니다
ㅠㅠ 해결했습니다.
혹시나 같은 이유로 검색하시는 분을 위해서 답을 남김니다.
구글C2DM에서 registration_id를 못받아오던 이유는 역시 receiver 클래스를 띄우지 못하는 이유였고,
그 원인은 메니페스트의 권한 설정이 잘못되었습니다.
----------------------------------------------------------------------------------------------------------------------------------------
<permission android:name="com.myapp.testApp.permission.C2D_MESSAGE" android:protectionLevel="signature"/>
<uses-permission android:name="com.myapp.testApp.permission.C2D_MESSAGE"/>
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>
<uses-permission android:name="com.google.android.c2dm.permission.REGISTRATION"/>
첫번째 와 두번째의 name값이 원래는 com.google.android.permission~~~ 이렇게 되어 있던것을 자신의 패키지명으로
변경하니까 되네요.




패키지 명이 등록한것과 다른건 아닐까요?
그게 아니면 폰 전원을 껏다 키세요
가끔 개발중에는 안될때가 있긴합니다. 그때 재부팅 하면 되더라구요.
그런데.. 이전 질문의 코드를 보니
//c2dm 서비스를 위해 개별기기의 registration ID를 저장
SharedPreferences shared_pref = PreferenceManager.getDefaultSharedPreferences(act);
String regID = shared_pref.getString("regID", null); #이부분 값이 없을 경우 널인데..
Log.i("ttt", "appSite regID : " + regID);
if("".equals(regID)) { #여기선 값이 없을때를 "" 으로 처리합니다. 이러면 영원히 레지아이디 요청을 안하겠죠 이거 고쳐졌나요?
Intent intent = new Intent("com.google.android.c2dm.intent.REGISTER");
intent.putExtra("app", PendingIntent.getBroadcast(act, 0, new Intent(), 0));
intent.putExtra("sender", "xxx@gmail.com");
startService(intent);
}
if(null == regID) { 이렇게 되야 조건에 걸리죠