반응형
아래 코드를 보라 무척 쉽다.
$headers = array(
'Content-Type:application/json',
'Authorization:key=AIzaSyCzMhR0yAL5RrZwMDaNnQaOq1w9mbTJDBg'
);
$arr = array();
$arr['data'] = array();
$arr['data']['msg'] = "gcm으로 보낼 메시지를 쓰면 된다.";
$arr['registration_ids'] = array();
$arr['registration_ids'][0] = "디바이스에서 얻어낸 아이디";
$ch = curl_init();
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);
어떤 외국인이 왜 잘 안될까요? 요러고 남긴거보고 해보니 잘되더라 그 외국인은 안타깝게도
array -> json 으로 안 하고 문자열 하나로 하다가 안 되었다.
하여간 내가 쓰고 있는 코드다. $response에 결과가 들어 있는데 걍 웹에서 뿌려보고
성공 나오는 것은 확인했다.
안 되는 경우 다시 보내지 않게 처리해줘야 하는거 같은데 세부적인 코드를 몰라서 일단 보류다.
하여간 당장 메시지 쏘고 싶으면 긁어다 살짝 고쳐서 쓰시라.
보면 알겠지만 json과 curl이 필요하다.
윈도우 서버에 apm 깔고 쓰는데 dll복사하고 php.ini수정하니 바로 사용 가능하더라
보편적인것 같으니 없으면 설치해서 쓰는게 정신건강에 이로울 것이다.
추가)
db에서 select 한 아이디들을 $arr['registration_ids'][] 에 집어 넣고 200명 넘게 보내봤는데
한 명씩 쏘는 것에 비해서 빠른 결과를 보였다.
결과도 200개가 다 넘어온다. 결과는 아이디를 넣은 순서에 맞춰서 나오는 것으로 보인다.
db에서 제거 해야 하는 처리를 하거나 재발송하는 처리를 하긴 해야 하는데..
테스트 삼아서 해본거라 문제 있는 부분은 넘어갔다.
하여간 개별로 전송하는 것 보다는 1,000개 단위로 넘기는 것이 좋은 것 같다.
'프로그래밍 > 안드로이드' 카테고리의 다른 글
안드로이드 - Android AppWidget, RemoteViews and CheckBox (0) | 2013.12.31 |
---|---|
안드로이드 - DataBase 변경 시에 ContentObserver 이용하여 check 하는 방법. (0) | 2013.12.31 |
안드로이드 - 앱위젯 appwidget 만들기 2탄 (0) | 2013.12.27 |
안드로이드 - 앱위젯 appwidget 만들기 1탄 (0) | 2013.12.27 |
안드로이드 - php를 이용한 gcm 푸시 예제[2] (0) | 2013.12.25 |
안드로이드 - php를 이용한 gcm 푸시 예제[1] (0) | 2013.12.25 |
안드로이드 - 원하는 theme로 widget 생성하기 (0) | 2013.12.22 |
안드로이드 - GCM이용시 com.google.android.gms import 에러 해결법 (2) | 2013.12.22 |