안녕하세요

 

php 3nd 파티 서버를 구현하고 안드로이드에서 처음 어플을 실행하면 등록id를 php서버로 보내줍니다.

 

그리고 받은 php서버는 바로 바로 다시 등록id로 c2dm서버에 요청을 하게됩니다.

 

그리고 안드로이드폰에서는 receive가 잘 됩니다.

 

하지만 여기서 문제가 생기는데, 이상하게도 intent.getExtras().getString("msg")를 하면 null이 들어옵니다.

 

그래서 intent.getextras90.toString()을 해보면 등록Id만 들어 있고 제가 보낸 파라미터값은 들어있지 않는데요.

 

이걸로 몇시간동안 고생하고 있는데 혹시 왜 그런지 아시는 분 있으시면 답 좀 해주시면 고맙겠습니다.

 

c2dm서버를 통해서 안드로이드폰에 receive가 된다는 것은 제대로 값이 날라왔다는 것인데,

 

왜 제가보낸 데이터는 null인지 모르겠습니다.

 

간단한 php서버 함수입니다. 이 함수로 요청을 하게 됩니다.

function sendMessageToPhone($auth, $deviceRegistrationId, $msgType, $messageText) {
  $data = array( 
  'registration_id' => $deviceRegistrationId, 
                                        'collapse_key' => $msgType, 
                                        'data.message' => $messageText);

  $ch = curl_init();     
 curl_setopt($ch, CURLOPT_URL, "https://android.apis.google.com/c2dm/send");
 
 $headers = array(
     "Content-Type: application/x-www-form-urlencoded",
     "Content-Length: ".strlen($data),
     "Authorization: GoogleLogin auth=$auth"
 );
if($headers){ 
                                            curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
                                        } 
                                        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
                                        curl_setopt($ch, CURLOPT_POST, true); 
                                        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
                                        curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 

 $result = curl_exec($ch);

 curl_close($ch);


}

안드로이드 소스입니다.


 @Override
 public void onReceive(Context context, Intent intent) {
  this.ctx = context;
  String c2dm_msg = null;

  // 등록을 하는 경우
  if (intent.getAction().equals(
    "com.google.android.c2dm.intent.REGISTRATION"))
   handleRegistration(context, intent);

  // 푸쉬 메시지를 받은 경우 Notification으로 메시지 보이기
  else if (intent.getAction().equals(
    "com.google.android.c2dm.intent.RECEIVE"))

   c2dm_msg = intent.getExtras().getString("message");
  Log.d(TAG, intent.getExtras().toString());
 
  
  //Log.d(TAG, c2dm_msg);
  setNotification("");
 }