Skip to content

WPP-Public/akqa-nz-php-firebase-cloud-messaging

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PHP Firebase Cloud Messaging

PHP API for Firebase Cloud Messaging from Google.

Currently this app server library only supports sending Messages/Notifications via HTTP.

Setup

composer require sngrl/php-firebase-cloud-messaging

Send message to Device

use sngrl\PhpFirebaseCloudMessaging\Client;
use sngrl\PhpFirebaseCloudMessaging\DeviceMessage;
use sngrl\PhpFirebaseCloudMessaging\Notification;

$server_key = '_YOUR_SERVER_KEY_';
$client = new Client();
$client->setApiKey($server_key);
$client->injectGuzzleHttpClient(new \GuzzleHttp\Client());

$message = new DeviceMessage();
$message->setPriority('high');
$message->addRecipient('_YOUR_DEVICE_TOKEN_');
$message
    ->setNotification(new Notification('some title', 'some body'))
    ->setData(['key' => 'value']);

$response = $client->send($message);
var_dump($response->getStatusCode());
var_dump($response->getBody()->getContents());

#Send message to multiple Devices

$message = new DeviceMessage();
$message->setPriority('high');

$message->addRecipient('_YOUR_DEVICE_TOKEN_');
$message->addRecipient('_ANOTHER_DEVICE_TOKEN_');

$message->addRecipients([
    '_YOUR_DEVICE_TOKEN_2_',
    '_YOUR_DEVICE_TOKEN_3_'
]);

$message
    ->setNotification(new Notification('some title', 'some body'))
    ->setData(['key' => 'value']);

#Send message to Topic

use sngrl\PhpFirebaseCloudMessaging\Client;
use sngrl\PhpFirebaseCloudMessaging\TopicMessage;
use sngrl\PhpFirebaseCloudMessaging\Notification;

$server_key = '_YOUR_SERVER_KEY_';
$client = new Client();
$client->setApiKey($server_key);
$client->injectGuzzleHttpClient(new \GuzzleHttp\Client());

$message = new TopicMessage();
$message->setPriority('high');
$message->addTopic('_YOUR_TOPIC_');
$message
    ->setNotification(new Notification('some title', 'some body'))
    ->setData(['key' => 'value']);

$response = $client->send($message);
var_dump($response->getStatusCode());
var_dump($response->getBody()->getContents());

#Send message to multiple Topics

See Firebase documentation for sending to combinations of multiple topics.

$message = new TopicMessage();
$message->setPriority('high');
$message->addTopic('_YOUR_TOPIC_');
$message->addTopic('_YOUR_TOPIC_2_');
$message->addTopic('_YOUR_TOPIC_3_');
$message
    ->setNotification(new Notification('some title', 'some body'))
    ->setData(['key' => 'value'])
    // Will send to devices subscribed to topic 1 AND topic 2 or 3
    ->setCondition('%s && (%s || %s)')
;

#Subscribe user to the topic

use sngrl\PhpFirebaseCloudMessaging\Client;

$server_key = '_YOUR_SERVER_KEY_';
$client = new Client();
$client->setApiKey($server_key);
$client->injectGuzzleHttpClient(new \GuzzleHttp\Client());

$response = $client->addTopicSubscription('_SOME_TOPIC_ID_', ['_FIRST_TOKEN_', '_SECOND_TOKEN_']);
var_dump($response->getStatusCode());
var_dump($response->getBody()->getContents());

#Remove user subscription to the topic

use sngrl\PhpFirebaseCloudMessaging\Client;

$server_key = '_YOUR_SERVER_KEY_';
$client = new Client();
$client->setApiKey($server_key);
$client->injectGuzzleHttpClient(new \GuzzleHttp\Client());

$response = $client->removeTopicSubscription('_SOME_TOPIC_ID_', ['_FIRST_TOKEN_', '_SECOND_TOKEN_']);
var_dump($response->getStatusCode());
var_dump($response->getBody()->getContents());

About

PHP API for Firebase Cloud Messaging from Google

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 100.0%