Skip to content

Sends push notification via Firebase Cloud Messaging Server

Notifications You must be signed in to change notification settings

VasylDmytruk/fcm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Firebase Cloud Messaging

Sends push notification via Firebase Cloud Messaging Server

Note: This package is not supported properly

Installation

The preferred way to install this extension is through composer.

Either run

php composer.phar require --prefer-dist autoxloo/fcm "*"

or

composer require --prefer-dist autoxloo/fcm "*"

or add

"autoxloo/fcm": "*"

to the require section of your composer.json file.

Usage

To send push notification you should have private key file for your service account.

To generate a private key file for your service account:

  1. In the Firebase console, open Settings > Service Accounts.
  2. Click Generate New Private Key, and confirm by clicking Generate Key.
$projectId = 'autoxloo';                                        // id of your project created in firebase console
$serviceAccountFilePath = __DIR__ . '/service_account.json';    // path to your generated private key file for your service account

Sending push notification:

$fcm = new FirebaseCloudMessaging($projectId, $serviceAccountFilePath);
$response = $fcm->send($message);   // $message is instance of \autoxloo\fcm\message\Message
                                    // $response is instance of \GuzzleHttp\Psr7\Response

Complete example:

// initial data:
$projectId = 'autoxloo';
$serviceAccountFile = __DIR__ . '/service_account.json';
$token = 'some device token';
$name = 'Some name';
$title = 'Some title';
$body = 'Some body';
$data = [
    'some key1' => 'some value1',
    'some key2' => 'some value2',
]; 

// sending push notification:

$target = FCMFacade::createTargetToken($token);     // only target is required
$notification = FCMFacade::createNotification($title, $body);
$androidConfig = FCMFacade::createAndroidConfig([AndroidConfig::FIELD_PRIORITY => AndroidConfig::PRIORITY_HIGH]);

$message = FCMFacade::createMessage();
$message->setTarget($target)
    ->setName($name)
    ->setData($data)
    ->setNotification($notification)
    ->setAndroidConfig($androidConfig);

$fcm = new FirebaseCloudMessaging($projectId, $serviceAccountFile);
$response = $fcm->send($message);   // $response is instance of \GuzzleHttp\Psr7\Response

Or

$messageConfig = [
    // required one of: token, topic or condition
    Message::FIELD_TOKEN => $token,     // or Message::FIELD_TOPIC => $topic or Message::FIELD_CONDITION => $condition

    // not required values:
    Message::FIELD_NAME => $name,
    Message::FIELD_DATA => $data,
    Message::FIELD_NOTIFICATION => FCMFacade::createNotification($title, $body),
    Message::FIELD_ANDROID => FCMFacade::createAndroidConfig([
        AndroidConfig::FIELD_PRIORITY => AndroidConfig::PRIORITY_HIGH
   ]),
];

$message = FCMFacade::createMessage($messageConfig);

$fcm = new FirebaseCloudMessaging($projectId, $serviceAccountFile);
$response = $fcm->send($message);   // $response is instance of \GuzzleHttp\Psr7\Response

Target

You can use target one of:

  • TargetToken
  • TargetTopic
  • TargetCondition

To create use facade:

$targetToken = FCMFacade::createTargetToken('some token');
$targetTopic = FCMFacade::createTargetTopic('some topic');
$targetCondition = FCMFacade::createTargetCondition('some condition');

See Firebase Build App Server Send Requests for more details.

Note: TargetCondition and TargetTopic was not tested properly.

About

Sends push notification via Firebase Cloud Messaging Server

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages