C2DM을 사용하여 개발 중입니다.

예제 소스가 있어서 지금 한번 돌려보고 있는데요...ㅠㅠ

 

androidManifest.xml 파일

 

<receiver android:name=".C2dm_BroadcastReceiver"
       android:permission="com.google.android.c2dm.permission.SEND"> 
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE"/>
<category android:name="test.android.test"/>
</intent-filter>
<intent-filter>
<action android:name="com.google.android.c2dm.intent.REGISTRATION"/>
<category android:name="test.android.test"/>
</intent-filter>
    </receiver>
    </application>
    
    <permission android:name="test.android.test.permission.C2D_MESSAGE"
     android:protectionLevel="signature"/>
    
    <uses-permission android:name="test.android.test.permission.C2D_MESSAGE"/>
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
 
 
정의 했구요.
 
public class C2dm_BroadcastReceiver extends BroadcastReceiver{
    /** Called when the activity is first created. */
static String registration_id = null;
static String c2dm_msg = "";
    @Override
    public void onReceive(Context context, Intent intent) {
     if (intent.getAction().equals("com.google.android.c2dm.intent.REGISTRATION")) {
    
     handleRegistration(context, intent);
    
     } else if (intent.getAction().equals("com.google.android.c2dm.intent.RECEIVE")) {
    
     c2dm_msg = intent.getExtras().getString("msg");
    
     System.out.println("c2dm_msg======>"+c2dm_msg);
     Toast toast = Toast.makeText(context, "메시지 도착!\n"+c2dm_msg, Toast.LENGTH_SHORT );
  toast.setGravity( Gravity.TOP | Gravity.CENTER, 0, 150 );
  toast.show();
    
     }
    }
    
    private void handleRegistration(Context context, Intent intent) {
    
     registration_id = intent.getStringExtra("registration_id");
    
     System.out.println("registration_id====>"+registration_id);
    
     if (intent.getStringExtra("error") != null) {
    
     Log.v("C2DM_REGISTRATION",">>>>>" + "Registration failed, should try again later." + "<<<<<");
    
     } else if (intent.getStringExtra("unregistered") != null) {

     Log.v("C2DM_REGISTRATION",">>>>>" + "unregistration done, new messages from the authorized sender will be rejected" + "<<<<<");
    
     } else if (registration_id != null) {
    
     System.out.println("registration_id complete!!");
     }
 
 
브로드캐스트 리시버도 위와 같이 했구요..
 
물론 소스에서
 
Intent registrationIntent = new Intent("com.google.android.c2dm.intent.REGISTER");
registrationIntent.putExtra("app", PendingIntent.getBroadcast(this, 0, new Intent(), 0)); // 어플리케이션ID
registrationIntent.putExtra("sender", "xxxxxxxx@gmail.com"); //개발자ID
startService(registrationIntent); //서비스 시작(등록ID발급받기
 
이렇게 까지 했습니다..
그런데..왜 !!!!!!!
 
intent.getAction().equals("com.google.android.c2dm.intent.REGISTRATION")
 

요기에서 받아야하는

 

registration_id 값이 안 넘어 올까요....정말 미칠지경입니다..ㅠㅠㅠ

 

현재 com.google.android.c2dm.intent.REGISTRATION 이 action도 안넘어 오는 상황입니다.ㅠㅠ

manifest 파일에 receiver 등록 하고 소스에서 등록 ID 요청도 했는데 말이죠

왜 Action이 안 넘어 올까요??? 

 

registrationIntent.putExtra("sender", "xxxxxxxx@gmail.com"); //개발자ID
 
여기에 사용한 ID는 구글 계정 ID 입니다.
 
고수님들의 의견 정말정말 기다리겠습니다..ㅠㅠㅠㅠ
 
그럼, 오늘도 즐거운 하루 좋은 하루 되세요...