Laravel FCM (Firebase Cloud Messaging) Notification Channel
smartervision/laravel-fcm-notification is a Laravel package for laravel fcm (firebase cloud messaging) notification channel.
It currently has 0 GitHub stars and 792 downloads on Packagist.
Install it with composer require smartervision/laravel-fcm-notification.
Discover more Laravel packages by smartervision
or browse all Laravel packages to compare alternatives.
Last updated
Laravel FCM (Firebase Cloud Messaging) Notification Channel
Use this package to send push notifications via Laravel to Firebase Cloud Messaging. Laravel 5.5+ required.
This package works only with Legacy HTTP Server Protocol
This package can be installed through Composer.
composer require benwilkins/laravel-fcm-notification
If installing on < Laravel 5.5 then add the service provider:
// config/app.php
'providers' => [
...
Benwilkins\FCM\FcmNotificationServiceProvider::class,
...
];
Add your Firebase API Key in config/services.php.
return [
...
...
/*
* Add the Firebase API key
*/
'fcm' => [
'key' => env('FCM_SECRET_KEY')
]
];
Use Artisan to create a notification:
php artisan make:notification SomeNotification
Return [fcm] in the public function via($notifiable) method of your notification:
public function via($notifiable)
{
return ['fcm'];
}
Add the method public function toFcm($notifiable) to your notification, and return an instance of FcmMessage:
use Benwilkins\FCM\FcmMessage;
...
public function toFcm($notifiable)
{
$message = new FcmMessage();
$message->content([
'title' => 'Foo',
'body' => 'Bar',
'sound' => '', // Optional
'icon' => '', // Optional
'click_action' => '' // Optional
])->data([
'param1' => 'baz' // Optional
])->priority(FcmMessage::PRIORITY_HIGH); // Optional - Default is 'normal'.
return $message;
}
When sending to specific device, make sure your notifiable entity has routeNotificationForFcm method defined:
/**
* Route notifications for the FCM channel.
*
* @param \Illuminate\Notifications\Notification $notification
* @return string
*/
public function routeNotificationForFcm($notification)
{
return $this->device_token;
}
When sending to a topic, you may define so within the toFcm method in the notification:
use Benwilkins\FCM\FcmMessage;
...
public function toFcm($notifiable)
{
$message = new FcmMessage();
$message->to('the-topic', $recipientIsTopic = true)
->content([...])
->data([...]);
return $message;
}
Or when sending with a condition:
use Benwilkins\FCM\FcmMessage;
...
public function toFcm($notifiable)
{
$message = new FcmMessage();
$message->contentAvailable(true)
->priority('high')
->condition("'user_".$notifiable->id."' in topics")
->data([...]);
return $message;
}
You may provide optional headers or override the request headers using setHeaders():
use Benwilkins\FCM\FcmMessage;
...
public function toFcm($notifiable)
{
$message = new FcmMessage();
$message->setHeaders([
'project_id' => "48542497347" // FCM sender_id
])->content([
'title' => 'Foo',
'body' => 'Bar',
'sound' => '', // Optional
'icon' => '', // Optional
'click_action' => '' // Optional
])->data([
'param1' => 'baz' // Optional
])->priority(FcmMessage::PRIORITY_HIGH); // Optional - Default is 'normal'.
return $message;
}
To process any laravel notification channel response check Laravel Notification Events
This channel return a json array response:
{
"multicast_id": "number",
"success": "number",
"failure": "number",
"canonical_ids": "number",
"results": "array"
}
Check FCM Legacy HTTP Server Protocol for response interpreting documentation.
The MIT License (MIT). Please see License File for more information.