Download the PHP package williamcruzme/laravel-fcm without Composer
On this page you can find all versions of the php package williamcruzme/laravel-fcm. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download williamcruzme/laravel-fcm
More information about williamcruzme/laravel-fcm
Files in williamcruzme/laravel-fcm
Package laravel-fcm
Short Description A powerful Laravel package to send Push Notifications
License MIT
Informations about the package laravel-fcm
Laravel FCM
laravel-fcm is a powerful Laravel package to send Push Notifications to all devices of one or many users. Being channel-based you only need to specify the channel
in your Laravel Notification.
Features
- Easy integration
- Compatible with any version of Laravel
- Send notifications to all devices of one or many users at the same time
- Send millions of notifications in batch
- Fully customizable and adaptable
- Queue support
📄 Content
- Installation
- Create Notification
- Routes
- Customizing The Notification
- Customizing The Controller
💿 Installation
1. Configure the enviroment
Get the Service Account and paste in your .env
file:
(gear-next-to-project-name) > Project Settings > Cloud Messaging
2. Adding traits
In your App\Models\User
model add the HasDevices
trait:
Remember, you are not limited to only including the trait on your
App\Models\User
model.
3. Running migrations
(Optional) Sometimes you may need to customize the migrations. Using the vendor:publish
command you can export the migrations:
4. Adding routes
In your routes/api.php
add the routes using the Device
facade, this is for manage the devices:
⚡ Create notification
1. Creating notifications
2. Adding delivery channels
Every notification class has a via
method that determines on which channels the notification will be delivered. Add fcm
as delivery channel:
3. Formatting notifications
The notification
method support the Firebase payload:
4. Sending notifications
FcmMessage
automatically gets all devices of the notifiable entities; you just need to send notifications. Notifications may be sent in two ways: using the notify
method of the Notifiable
trait or using the Notification
facade. First, let's explore using the trait:
Using The Notifiable Trait
This trait is utilized by the default App\User
model and contains one method that may be used to send notifications: notify
. The notify
method expects to receive a notification instance:
Remember, you may use the
Illuminate\Notifications\Notifiable
trait on any of your models. You are not limited to only including it on yourApp\User
model.
Using The Notification Facade
Alternatively, you may send notifications via the Notification
facade. This is useful primarily when you need to send a notification to multiple notifiable entities such as a collection of users. To send notifications using the facade, pass all of the notifiable entities and the notification instance to the send
method:
🌐 Routes
These routes are generated automatically, once wherever you add Device::routes();
Add device
Method | URI |
---|---|
POST | /devices |
Body Params
Remove device
Method | URI |
---|---|
DELETE | /devices |
Body Params
🎨 Customizing The Notification
Sending data
Using the data
method you can specify the custom key-value pairs of the notification payload:
Adding conditions
Using the condition
method you can specify a boolean expression to send the notification:
Setting priority
Using the priority
method you can specify a priority of the notification. Default is normal
:
Custom payload
Using the payload
method you can specify a custom payload to the notification:
🎨 Customizing The Controller
First of all, create your own DeviceController
controller and add the ManageDevices
trait.
Second, modify the namespace of the Device
facade routes to :
Custom request validations
The createRules
deleteRules
validationErrorMessages
methods in the DeviceController
allows you override the default request validations:
Custom response
The sendResponse
and sendDestroyResponse
method in the DeviceController
allows you override the default response:
Custom guards
The guard
method in the DeviceController
allows you override the default guard:
🚸 Contributing
You are welcome to contribute to this project, but before you do, please make sure you read the contribution guide.
🔒 License
MIT