Android 云端推送C2DM php实现向终端推送消息

Android云端推送C2DM PHP端实现向终端发送消息

$registration = '===Registration ID generated for the app===';
$auth = '===Google auth===';

//curl_setopt参数
$options = array(
        CURLOPT_TIMEOUT        =>    60,
        CURLOPT_CONNECTTIMEOUT    =>     10,
        CURLOPT_URL        =>    "https://android.apis.google.com/c2dm/send",
        CURLOPT_POST        =>    TRUE,
        CURLOPT_RETURNTRANSFER    =>    TRUE
);
//post参数
$params = array(
                "registration_id"    =>    $registration,
                "collapse_key"        =>    "===a string===",
                "data.message"        =>    "xxxx" 这个可以有多对
);
$postdata = http_build_query($params,null,"&");    
$options[CURLOPT_POSTFIELDS] = $postdata;

//http header
$headers = array();
$headers[] = "Content-Length: " . strlen($postdata); #这个地方可费了劲了content-length一定要放在第一个,不然会报那个411.That an error的错误
$headers[] = "Authorization: GoogleLogin auth=" . $auth;

$options[CURLOPT_HTTPHEADER] = $headers;

//debug
$options[CURLOPT_HEADER] = TRUE;
$options[CURLOPT_VERBOSE] = TRUE;
$ch = curl_init();
if(!function_exists('curl_setopt_array')){
    foreach((array)$options as $key=>$value){
        curl_setopt($ch, $key, $value);
    }
} else {
    curl_setopt_array( $ch,$options);    
}
$result = curl_exec($ch);
curl_close( $ch);

成功的话会返回id=0:1329988332025998%36eaed9800000031 类似的串
如果失败则会返回Error=错误消息
具体参考地址请看:http://code.google.com/intl/zh-CN/android/c2dm/#example

posted @ 2012-02-23 17:48  sblack  阅读(689)  评论(0编辑  收藏  举报