GCM PHP Server Push Message (GCMPushMessage.php)



Class to send push notifications using Google Cloud Messaging for Android
Example usage
$an = new GCMPushMessage($apiKey);
$response = $an->send($message);
$apiKey Your GCM api key
$devices An array or string of registered device tokens
$message The mesasge you want to push out
@author Matt Grundy
Adapted from the code available at:
class GCMPushMessage {
var $url = https://android.googleapis.com/gcm/send;
var $serverApiKey = ;
var $devices = array();
@param $apiKeyIn the server API key
function GCMPushMessage($apiKeyIn){
$this->serverApiKey = $apiKeyIn;
Set the devices to send to
@param $deviceIds array of device tokens to send to
function setDevices($deviceIds){
$this->devices = $deviceIds;
} else {
$this->devices = array($deviceIds);
Send the message to the device
@param $message The message to send
@param $data Array of data to accompany the message
function send($message, $data = false){
if(!is_array($this->devices) || count($this->devices) == 0){
$this->error(No devices set);
if(strlen($this->serverApiKey) < 8){
$this->error(Server API Key not set);
$fields = array(
registration_ids => $this->devices,
data => array( message => $message ),
foreach ($data as $key => $value) {
$fields[data][$key] = $value;
$headers = array(
Authorization: key= . $this->serverApiKey,
Content-Type: application/json
// Open connection
$ch = curl_init();
// Set the url, number of POST vars, POST data
curl_setopt( $ch, CURLOPT_URL, $this->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 ) );
// Avoids problem with https certificate
curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false);
// Execute post
$result = curl_exec($ch);
// Close connection
return $result;
function error($msg){
echo Android send notification failed with error:;
echo \t . $msg;

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s