从GCM获取回复

时间:2014-08-10 14:14:58

标签: php android push-notification google-cloud-messaging

如果使用Php脚本发送或不发送消息,我如何获得响应,然后我想使用响应来确定设备是否在线,

这是我发送消息的Php脚本:

function send_push_notification($registration_ids, $message) {

 $regId=$registration_ids;
 $msg=$message;
 $message = array("message" => $msg);

 $regArray[]=$registration_ids;
 $url = 'https://android.googleapis.com/gcm/send';

 $fields = array('registration_ids' => $regArray, 'data' => $message,);
 $headers = array( 'Authorization: key=API_KEY','Content-Type: application/json');

 $ch = curl_init();

 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_POST, true);
 curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
 curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));

 $result=curl_exec($ch);
 echo $result; 
 if($result==FALSE)
 {
die('Curl Failed');

}
 curl_close($ch);

 }

由于

2 个答案:

答案 0 :(得分:0)

你没有得到应用程序的回复;您只能从GCM系统本身获得响应。当CURL调用完成时,$result包含一个JSON编码的对象;其id属性在成功时包含消息ID。

答案 1 :(得分:0)

服务器从GCM服务器获取的响应不会告诉您消息是否已发送。它仅告知您GCM服务器是接受该消息还是拒绝该消息。如果它被接受,GCM服务器将尝试提供它,但不能保证它会成功。如果它被拒绝,您会收到一条错误消息(例如InvalidRegistrationMissingRegistration等...)。

如果您想要确认递送,您必须在Android应用中拥有一个代码,在收到消息后会拨打您的服务器,以确认收到了消息。