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

GCMBroadcastReceiver 는 어떤역활을하는지 모르겠습니다

0 추천
GCM 앱을만들려구합니다

public class GCMIntentService extends GCMBaseIntentService

는 매니페스트에도 등록해줚는데

매니페스트에

<receiver android:name="com.google.android.gcm.GCMBroadcastReceiver"

이렇게 레시버 등록하는것은 어떤의미인가요?

GCMBroadcastReceiver 를 상속받아 구현한클래스가 있어야되는건가요?

 

강좌를보면

GCMIntentService 의 onMessage 를 통해서 gcm 서버에서보낸 메세지를 받을수있다고했는데

GCMBroadcastReceiver 는 어떤역활을하는지 모르겠습니다

조언부탁합니다
잡부 (5,110 포인트) 님이 2015년 3월 24일 질문

2개의 답변

+2 추천
 
채택된 답변

GCM을 어떤 버전으로 구현했는지는 모르겠으나 Google Service 라이브러리를 참조하여 구현한 경우는 아래 튜토리얼대로 구현하면 되고 

https://developer.android.com/google/gcm/client.html

 

예전 방식 gcm.jar 를 libs 폴더에 넣어서 구현하셨다면 따로 구현해줄 필요는 없습니다.

(왜냐하면 아래 작성된 소스가 이미 gcm.jar에 포함되어 있기 때문이죠)

위 링크에 들어가서 보면 GCMBroadcastReceiver는 다음과 같이 작성 되어 있습니다.

Receiver가 하는 일은 간단합니다. GCM 서버로부터 푸쉬 메시지를 받았을 때 해당 앱의 IntentService에서 메시지처리를 할 수 있도록 service를 실행시키고 개발자가 작성한 코드가 정상적으로 동작을 마칠때까지 CPU를 깨워주는 일입니다.

(그래야 단말이 Deep Sleep 모드에 들어가도 푸쉬 메시지를 받았을 때 정상동작 할 수 있거든요)

public class GcmBroadcastReceiver extends WakefulBroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        // Explicitly specify that GcmIntentService will handle the intent.
        ComponentName comp = new ComponentName(context.getPackageName(),
                GcmIntentService.class.getName());
        // Start the service, keeping the device awake while it is launching.
        startWakefulService(context, (intent.setComponent(comp)));
        setResultCode(Activity.RESULT_OK);
    }
}
Gradler (109,780 포인트) 님이 2015년 3월 25일 답변
잡부님이 2015년 3월 25일 채택됨
0 추천
푸시에 사용되는 키를 받습니다
쎄미 (162,410 포인트) 님이 2015년 3월 25일 답변
...