Download the PHP package laravel-notification-channels/webpush without Composer
On this page you can find all versions of the php package laravel-notification-channels/webpush. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download laravel-notification-channels/webpush
More information about laravel-notification-channels/webpush
Files in laravel-notification-channels/webpush
Package webpush
Short Description Web Push Notifications driver for Laravel.
License MIT
Homepage https://github.com/laravel-notification-channels/webpush
Informations about the package webpush
Web Push Notifications Channel for Laravel
This package makes it easy to send web push notifications with Laravel.
Features
- Easy integration with Laravel notifications: Seamlessly integrates with Laravel's notification system, allowing you to send web push notifications using familiar notification channels.
- Multiple browser support: Works with all major browsers that implement the Push API, including Chrome, Firefox, Edge, and Safari.
- VAPID support: Easily generate and manage VAPID keys for secure browser authentication.
- Flexible message options: Customize notifications with title, body, icon, actions, TTL, and more. Supports advanced options like vibration, badge, image, and custom data payloads.
- Subscription management: Convenient methods to save, update, and delete push subscriptions directly on your notifiable models.
- Automatic expired subscription cleanup: When sending a push message to an expired subscription, the package detects expired endpoints (using the
expired
flag ofMinishlink\WebPush\MessageSentReport
). This package will automatically delete expired subscriptions. - Configurable and extendable: Publish and customize the package's config file to fit your application's needs.
Installation
You can install the package via Composer:
First, add the NotificationChannels\WebPush\HasPushSubscriptions
trait to your User
model:
Next, publish the migration with:
Run the migrate command to create the necessary table:
You can also publish the config file with:
Generate the VAPID keys (required for browser authentication) with:
This command will set VAPID_PUBLIC_KEY
and VAPID_PRIVATE_KEY
in your .env
file. You need the VAPID_PUBLIC_KEY
as applicationServerKey
when using the Push API.
Note for Safari:
- If targeting Safari or iOS (especially after 2023), you must include the
VAPID_SUBJECT
variable in your.env
file. This should be a valid URL (e.g.https://example.com
) or amailto:
address (e.g.mailto:[email protected]
).- Apple will reject requests with a
BadJwtToken
error ifVAPID_SUBJECT
is missing or invalid.- The domain in
VAPID_SUBJECT
must be a valid, existing top-level domain (TLD).
These keys must be safely stored and should not change.
Usage
Now you can use the channel in your via()
method inside the notification and send a web push notification:
You can find the available options here.
Save/Update Subscriptions
To save or update a subscription, use the updatePushSubscription($endpoint, $key = null, $token = null, $contentEncoding = null)
method on your user:
The $key
and $token
are optional and are used to encrypt your notifications. However, all major browsers require encryption when sending notifications.
When using the Push API, $key
is the value of the getKey('p256dh')
method, and $token
is the value of the getKey('auth')
method of the PushSubscription
interface.
Delete Subscriptions
To delete a subscription, use the deletePushSubscription($endpoint)
method on your user:
Browser Compatibility
See the Push API browser compatibility.
Changelog
Please see CHANGELOG for more information about what has changed recently.
Testing
Security
If you discover any security-related issues, please email [email protected] instead of using the issue tracker.
Contributing
Please see CONTRIBUTING for details.
Credits
- Cretu Eusebiu
- All Contributors
License
The MIT License (MIT). Please see License File for more information.
All versions of webpush with dependencies
illuminate/notifications Version ^11.0|^12.0
illuminate/support Version ^11.0|^12.0
minishlink/web-push Version ^9.0