PhpDev.App
kawankoding/laravel-fcm

kawankoding/laravel-fcm

Stars: 167

Forks: 55

Pull Requests: 31

Issues: 32

Watchers: 10

Last Updated: 2023-05-08 08:18:08

Firebase Cloud Messaging (FCM) sender for Laravel

License:

Languages: PHP

Laravel FCM

A simple package that help you send a Firebase notification with your Laravel applications

Installation

You can pull the package via composer :

$ composer require kawankoding/laravel-fcm "^0.2.0"

Laravel

You must register the service provider :

// config/app.php

'Providers' => [
   // ...
   Kawankoding\Fcm\FcmServiceProvider::class,
]

If you want to make use of the facade you must install it as well :

// config/app.php

'aliases' => [
    // ...
    'Fcm' => Kawankoding\Fcm\FcmFacade::class,
];

Next, You must publish the config file to define your FCM server key :

php artisan vendor:publish --provider="Kawankoding\Fcm\FcmServiceProvider"

This is the contents of the published file :

return [

    /**
     * Set your FCM Server Key
     * Change to yours
     */

    'server_key' => env('FCM_SERVER_KEY', ''),

];

Lumen

Add the following service provider to the bootstrap/app.php file

$app->register(Kawankoding\Fcm\FcmServiceProvider::class);

Also copy the laravel-fcm.php config file to config/laravel-fcm.php

Add the configuration to the bootstrap/app.php file Important: this needs to be before the registration of the service provider

$app->configure('laravel-fcm');
...
$app->register(Kawankoding\Fcm\FcmServiceProvider::class);

Set your FCM Server Key in .env file :

APP_NAME="Laravel"
# ...
FCM_SERVER_KEY=putYourKeyHere

Methods Ref

  • ->to()

  • ->toTopic()

  • ->data()

  • ->notification()

  • ->priority()

  • ->timeToLive()

  • ->enableResponseLog()

  • ->send()

Usage

If You want to send a FCM with just notification parameter, this is an example of usage sending a FCM with only data parameter :

$recipients = [
    'clKMv.......',
    'GxQQW.......',
];

fcm()
    ->to($recipients)
    ->priority('high')
    ->timeToLive(0)
    ->data([
        'title' => 'Test FCM',
        'body' => 'This is a test of FCM',
    ])
    ->send();

NOTE: By default, Firebase server will queue your notification in 4 weeks. You could change this behavior by setting ->timeToLive(value_in_seconds). For example snippet above "->timeToLive(0)" will skip the queue, the target device (eg. android) must be online when the notification arive, otherwhise the target device will not receive the notification.

If You want to send a FCM to topic, use method toTopic($topic) instead to() :

fcm()
    ->toTopic($topic) // $topic must an string (topic name)
    ->priority('normal')
    ->timeToLive(0)
    ->notification([
        'title' => 'Test FCM',
        'body' => 'This is a test of FCM',
    ])
    ->send();

If You want to send a FCM with just notification parameter, this is an example of usage sending a FCM with only notification parameter :

fcm()
    ->to($recipients) // $recipients must an array
    ->priority('high')
    ->timeToLive(0)
    ->notification([
        'title' => 'Test FCM',
        'body' => 'This is a test of FCM',
    ])
    ->send();

If You want to send a FCM with both data & notification parameter, this is an example of usage sending a FCM with both data & notification parameter :

fcm()
    ->to($recipients) // $recipients must an array
    ->priority('normal')
    ->timeToLive(0)
    ->data([
        'title' => 'Test FCM',
        'body' => 'This is a test of FCM',
    ])
    ->notification([
        'title' => 'Test FCM',
        'body' => 'This is a test of FCM',
    ])
    ->send();

Logging

To see the original response from Firebase, call enableResponseLog() method before calling the send() method.

fcm()
    ->to($recipients)
    // ...
    ->enableResponseLog()
    ->send();

Then you can check the response log in the file storage/logs/laravel.log