This package makes it easy to send web push notifications with Laravel 5.3.
You can install the package via composer:
composer require laravel-notification-channels/webpush
First you must install the service provider:
// config/app.php
'providers' => [
...
NotificationChannels\WebPush\WebPushServiceProvider::class,
],
Then configure Google Cloud Messaging by setting your key
and sender_id
:
// config/services.php
'gcm' => [
'key' => '',
'sender_id' => ',
],
You need to add the NotificationChannels\WebPush\HasPushSubscriptions
in your User
model:
use NotificationChannels\WebPush\HasPushSubscriptions;
class User extends Model
{
use HasPushSubscriptions;
}
Next publish the migration with:
php artisan vendor:publish --provider="NotificationChannels\WebPush\WebPushServiceProvider" --tag="migrations"
After the migration has been published you can create the push_subscriptions
table by running the migrations:
php artisan migrate
Now you can use the channel in your via()
method inside the notification as well as send a web push notification:
use Illuminate\Notifications\Notification;
use NotificationChannels\WebPush\WebPushMessage;
use NotificationChannels\WebPush\WebPushChannel;
class AccountApproved extends Notification
{
public function via($notifiable)
{
return [WebPushChannel::class];
}
public function toWebPush($notifiable, $notification)
{
return WebPushMessage::create()
// ->id($notification->id)
->title('Approved!')
->icon('/approved-icon.png')
->body('Your account was approved!')
->action('View account', 'view_account');
}
}
To save or update a subscription use the updatePushSubscription($endpoint, $key = null, $token = null)
method on your user:
$user = \App\User::find(1);
$user->updatePushSubscription($endpoint, $key, $token);
The $key
and $token
are optional and are used to encrypt your notifications. Only encrypted notifications can have a payload.
To delete a subscription use the deletePushSubscription($endpoint)
method on your user:
$user = \App\User::find(1);
$user->deletePushSubscription($endpoint);
For a complete implementation with a Service Worker check this demo.
The Push API currently works on Chrome and Firefox.
Please see CHANGELOG for more information what has changed recently.
$ composer test
If you discover any security related issues, please email themsaid@gmail.com instead of using the issue tracker.
Please see CONTRIBUTING for details.
The MIT License (MIT). Please see License File for more information.