2013-07-16 6 views
0

저는 BroadcastReceiverServiceGoogleCloudMessaging을 처음 접합니다. 내 작업 공간으로 라이브러리를 가져 와서 내 프로젝트에 참조 된 후 나는 http://developer.android.com/google/gcm/gs.htmlGoogle 클라우드 메시징 시작 문제

에서 자습서를 다음과 같은거야, 나는 런타임 예외를 받고 있어요 "어떤 클래스 데프 오류를 찾을 수 없습니다". 인터넷을 통해 탐색했을 때 실수가 내 AndroidManifest.xml과 관련이 있다는 사실을 알았습니다. 튜토리얼에 설명 된 매니페스트에 대해 알지 못해서 이해가 될 수 있습니다. 예를 들어

:

<receiver 
    android:name=".MyBroadcastReceiver" 
    android:permission="com.google.android.c2dm.permission.SEND" > 
    <intent-filter> 
     <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
     <category android:name="com.my.package" /> 
    </intent-filter> 
</receiver> 
<service android:name=".MyIntentService" /> 

BroadcastReceiver를 확장 "GcmBroadcastReceiver"라는 이름의 클래스를 정의에 가장 먼저하는 일이 튜토리얼에서, 그들은 이름이 "MyBroadcastReceiver"와 receiver를 선언한다는 것입니다하지만 후자. 그래서 나는 그들이 서로 다른 두 가지인지, 아니면 실수인지를 모르고 똑같은 이름을 지어야합니다.

두 번째 것은 Service입니다. 튜토리얼에는 서비스가 없습니다. 그래서 내가 세 번째 것은 어떻게, 어디 MainActivity에서 호출 BroadcastReceiver 및/또는 Service이다 나는 그들이 함께 등등 연결 얼마나 이해하지 않는 것입니다 서비스

을 만들 가정하자 것 같아.

편집 : 새로운 Google 클라우드 메시징 API를 사용하고 있습니다.

답변

1

서비스가 더 이상 필요하지 않습니다. 이전 API에서 사용되었습니다. 이것은 도착한 메시지와 등록 결과를 처리하기 위해 브로드 캐스트 리시버에 의해 호출되었지만 도착한 메시지의 모든 처리는 브로드 캐스트 리시버에서 수행됩니다.

브로드 캐스트 수신기 클래스가 필요합니다. 어떻게 부르는 지 상관 없습니다. GcmBroadcastReceiver은 데모 앱을 위해 만든 클래스입니다. MyBroadcastReceiver이라는 이름은 수업을 만들어야한다고 제안합니다. 브로드 캐스트 리시버는 주 활동에서 호출되지 않습니다. GCM 메시지가 앱으로 전송 될 때 호출됩니다.

No class def found error의 경우 Eclipse를 사용 중이라고 가정하면 Android 프로젝트에서 Java 빌드 경로 -> 주문 및 내보내기 -> Android 개인 라이브러리 플래그를 확인하지 못했을 수 있습니다.

+0

글쎄, 나는 지금 약 3 시간 동안 이것에 질질 흘 렸고, 당신은 나에게 답을 주었다. 덕분에 많이 받았다. –

+0

@ChristopherFrancisco 환영합니다! – Eran

관련 문제