예를 들어, a라는 변수가 있습니다.  reg_id = hello 라고 가정합니다.

실제로 reg_id를 자바에서 length찍어봤는데 140정도 나왔습니다.

1) 안드로이드에서 php 서버 페이지로 Post 방식으로 reg_id를 전송합니다.

2) php서버 페이지에서 mysql과 연동하여 reg_id값은 mysql db에 저장이 됩니다.   

- (이 떄 reg_id은 nvarchar(250) 형태입니다.)

- 여기까지 db에는 reg_id값(안드로이드어플로부터 받은)이 저장이 되있습니다.

3) php변수중 a라는 변수에 mysql에 저장된 reg_id값을 빼와서 저장을 했습니다. (db에 저장된 red_id=hello 가정합니다.)

- db로부터 뺴온 reg_id값을 갖고 구글서버로 Post방식으로 전송했습니다. 밑에 curl소스가 그것입니다.
  
   문제는 이게 안됩니다.

4) a라는 변수에 제가 직접 hello라고 입력을 했습니다.

잘됩니다.


* 결론 *

- 제 생각으로는 구글서버에 보내는 데이터형은 Json형태입니다. 데이터형과 관련하여 계속해서 소스를 살펴보고 있습니다만

  안풀립니다.

- 제가 둘다 비교해가며 확인했지만 철자는 다른게 없습니다.

또한 제가 안드로이드에서 php로 reg_id를 post방식으로 전송해서 DB에 저장하는게 아닌

  제가 직접 DB에 reg_id 값을 집어넣어서 뺴와도 안됩니다.





아래는 제가 사용한 소스 및 환경설정입니다.

안드로이드에서 post방식으로 서버인 php로 구성된 페이지에 파라미터를 보냈습니다.

이 때 사용된 소스입니다.(자바)

conn.setRequestProperty("content-type", "application/x-www-form-urlencoded");

StringBuffer buffer = new StringBuffer();
buffer.append("id").append("=").append(id).append("&");
buffer.append("pw").append("=").append(pw).append("&");
buffer.append("reg_id").append("=").append(reg_id).append("&");
buffer.append("msg").append("=").append(msg);
PrintWriter pw = new PrintWriter(new OutputStreamWriter(conn.getOutputStream(), "euc-kr"));
pw.write(buffer.toString());            //write함으로써 php서버에 buffer형태의 값을 보냅니다.

파라미터안에는 reg_id라는 파라미터가있습니다. 

mysql에 저장된 reg_id는 nvarchar(250) 형태 입니다.





php 소스입니다.(서버)


<?
$headers = array(
 'Content-Type:application/json',
 'Authorization:key=AIzaSyCt0QXt8ZCG5w-gF6OYxkGKEmUs2OaTBOM'
);

$temp_id = $_POST['id'];                      //파라미터로 받은 id를 temp_id에 저장합니다.
$temp_msg = $_POST['msg'];              //파라미터로 받은 msg를 temp_msg에 저장합니다.


$connect=mysql_connect("localhost", "아이디", "비번");            //db연동하는 과정입니다.

mysql_select_db("테이블명", $connect);

$result=mysql_query("select reg_id from personinfo where id='$temp_id'");  // db에서 id=temp_id와 같은 reg_id를 뺴옵니다.

$reg_id=mysql_result($result, 0, "reg_id");                 // $reg_id에 db에서 빼온reg_id값을 집어넣습니다.

$arr   = array();                                                    //json형태의 데이터를 구성하기 위한 php 문법입니다.
$arr['data'] = array();
$arr['data']['msg'] = '$temp_msg'; 
$arr['registration_ids'] = array();
$arr['registration_ids'][0] = '$reg_id';                   // 이 부분이 가장 문제입니다. 이렇게 db에서 빼온값을 집어넣으면
                                // 작동이 안되고 
           // $arr['registration_ids'][0] = '실제 reg_id값' 을 직접 입력하면 됩니다.



$ch = curl_init();
// 구글에 post방식으로 메시지를 보내는 소스입니다.

curl_setopt($ch, CURLOPT_URL,    'https://android.googleapis.com/gcm/send');
curl_setopt($ch, CURLOPT_HTTPHEADER,  $headers);
curl_setopt($ch, CURLOPT_POST,    true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS,json_encode($arr));
$response = curl_exec($ch);
echo $response;
curl_close($ch);
?>