티스토리 뷰

WEB2.0

PHP로 C2DM 구현하기

나를찾는아이 2011. 4. 29. 11:30
728x90
반응형
<?php
$accountType = 'HOSTED_OR_GOOGLE';
$Email = '지메일계정주소';
$Passwd = '비밀번호';
$source = 'Test';
$service = 'ac2dm';

$ch = curl_init();  

curl_setopt($ch, CURLOPT_URL, "https://www.google.com/accounts/ClientLogin");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$account_info = array('accountType' => $accountType, 'Email' => $Email, 'Passwd' => $Passwd, 'source' => $source, 'service' => $service);

curl_setopt($ch, CURLOPT_POSTFIELDS, $account_info);

$response = curl_exec($ch);
$auth_tmp = substr(strstr($response, "Auth="), 5);
$auth = substr($auth_tmp, 0, strlen($auth_tmp)-1);

curl_setopt($ch, CURLOPT_URL, "https://android.apis.google.com/c2dm/send");

$registration_id = '고유아이디';
$collapse_key = 1;
$msg = '안녕하세요 C2DM 테스트 입니다';

$data = 'registration_id='.$registration_id.'&collapse_key='.$collapse_key.'&data.msg='.urlencode($msg);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

$headers = array(
    "Content-Type: application/x-www-form-urlencoded",
    "Content-Length: ".strlen($data),
    "Authorization: GoogleLogin auth=$auth"
);

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
curl_close($ch);

echo $result;
?>




애플에게 APNS(apple push notification service)가 있다면

안드로이드는 프로요 부터 지원하는 c2dm이 있습니다.

위의 소스코드는 php에서 c2dm을 발송하는 소스코드 예제입니다.


안드로이드의 c2dm은 1024 bytes까지 전송이 가능하며

전송후에 response된 값으로 사용자가 어플을 삭제하였는지 확인이 가능합니다.

레퍼런스참고



사용하실때는 지메일 계정정보를 넣어야 하는데

반드시 gmail에 가입된 계정이어야 합니다.

구글 어플리케이션을 통해 메일을 사용하고 있더라도 지메일에 가입이 안된 계정이라면

C2DM을 사용하실수 없습니다.


$collapse_key 는 1이라고 단순히 입력해도 c2dm이 쏴지나

동일한 내용의 c2dm이 발송될때 이 키를 가지고 서로 다른메시지 인지 확인을 한다고 하네요.

c2dm은 메시지 내용도 같고 collapse_key도 같으면

기존에 전달한 동일한 메세지로 판별하고 해당 메세지를 재전송하지 않습니다.

보통 url을 적는것이 좋다고 하는데

url이 긴경우도 있으니 꼭 url을 쓰지 않더라도 적당히 활용하시면 될것 같습니다.

실제로 테스트 해보면 그냥 단순히 1로 적어놔도

굉장히 많은 숫자를 같은 내용으로 발송하지 않는한 발송이 실패하지는 않는것 같습니다.



$auth 값을 활용할때는 문자열 끝에 개행문자가 있는지 반드시 체크해주시면

삽질을 할 걱정은 좀더 줄어들겁니다~!
728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함