This package makes it easy to send web push notifications with Laravel.
You can install the package via composer:
composer require laravel-notification-channels/webpushFirst you must install the service provider (skip for Laravel>=5.5):
// config/app.php
'providers' => [
...
NotificationChannels\WebPush\WebPushServiceProvider::class,
],Add the NotificationChannels\WebPush\HasPushSubscriptions trait to 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"Run the migrate command to create the necessary table:
php artisan migrateYou can also publish the config file with:
php artisan vendor:publish --provider="NotificationChannels\WebPush\WebPushServiceProvider" --tag="config"Generate the VAPID keys (required for browser authentication) with:
php artisan webpush:vapidThis command will set VAPID_PUBLIC_KEY and VAPID_PRIVATE_KEYin your .env file.
These keys must be safely stored and should not change.
If you still want support Google Cloud Messaging set the GCM_KEY and GCM_SENDER_ID in your .env file.
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 (new WebPushMessage)
->title('Approved!')
->icon('/approved-icon.png')
->body('Your account was approved!')
->action('View account', 'view_account')
->options(['TTL' => 1000]);
// ->data(['id' => $notification->id])
// ->badge()
// ->dir()
// ->image()
// ->lang()
// ->renotify()
// ->requireInteraction()
// ->tag()
// ->vibrate()
}
}You can find the available options here.
To save or update a subscription use the updatePushSubscription($endpoint, $key = null, $token = null, $contentEncoding = null) method on your user:
$user = \App\User::find(1);
$user->updatePushSubscription($endpoint, $key, $token, $contentEncoding);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);See the Push API browser compatibility.
Please see CHANGELOG for more information about what has changed recently.
$ composer testIf 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.