从PHP发送GCM通知

时间:2016-05-23 15:44:30

标签: php android google-cloud-messaging

我正在尝试使用php发送GCM通知。如果我硬编码值并且我也收到通知,脚本运行正常。但是当我尝试将值作为输入传递时,它会失败并显示错误:

{
  "multicast_id":8013504586085987118,
  "success":0,
  "failure":1,
  "canonical_ids":0,
  "results":[
    {
      "error":"InvalidRegistration"
    }
  ]
}

工作代码:

<?php

// Replace with the real server API key from Google APIs
$apiKey = "Google Api Key";

// Replace with the real client registration IDs


$registrationIDs = array("Registerationid");


// Message to be sent
//$message = "Your message e.g. the title of post";
$msg = array
(
'message'   => 'TestMessage',
'title'     => 'TestTitle',
'subtitle'  => 'TestSubtitle',
'tickerText'    => 'TestTicker',
'vibrate'   => 1,
'sound'     => 1,
'largeIcon' => 'large_icon',
'smallIcon' => 'small_icon'
);


// Set POST variables
$url = 'https://android.googleapis.com/gcm/send';

$fields = array(
    'registration_ids' => $registrationIDs,
    'data' => array( "message" => $msg ),
);
$headers = array(
    'Authorization: key=' . $apiKey,
    'Content-Type: application/json'
);

// Open connection
$ch = curl_init();

// Set the URL, number of POST vars, POST data
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_POSTFIELDS, json_encode( $fields));

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
// curl_setopt($ch, CURLOPT_POST, true);
// curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode( $fields));
// Execute post
$result = curl_exec($ch);
// Close connection
curl_close($ch);
echo $result;
//print_r($result);
//var_dump($result);
?>

代码抛出错误

<?php

$registrationIDs = array( $_GET['id'] );

// Replace with the real server API key from Google APIs
$apiKey = "API KEY";

// Replace with the real client registration IDs


//$registrationIDs = array( $_GET['id'] );


// Message to be sent
//$message = "Your message e.g. the title of post";

$msg = array
(
'message'   => 'TestMessage',
'title'     => 'TestTitle',
'subtitle'  => 'TestSubtitle',
'tickerText'    => 'TestTicker',
'vibrate'   => 1,
'sound'     => 1,
'largeIcon' => 'large_icon',
'smallIcon' => 'small_icon'
);


// Set POST variables
$url = 'https://android.googleapis.com/gcm/send';

$fields = array(
    'registration_ids' => $registrationIDs,
    'data' => array( "message" => $msg ),
);
$headers = array(
    'Authorization: key=' . $apiKey,
    'Content-Type: application/json'
);

// Open connection
$ch = curl_init();

// Set the URL, number of POST vars, POST data
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_POSTFIELDS, json_encode( $fields));

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
// curl_setopt($ch, CURLOPT_POST, true);
// curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode( $fields));

// Execute post
$result = curl_exec($ch);

// Close connection
curl_close($ch);
// print the result if you really need to print else neglate thi
echo $result;
//print_r($result);
//var_dump($result);
?>

0 个答案:

没有答案