Как работать с push уведомлениями в laravel?

Пользователь

от loyal , в категории: PHP , год назад

Как работать с push уведомлениями в laravel?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от bernardo_nolan , год назад

@loyal 

Для работы с push уведомлениями в Laravel можно использовать библиотеку laravel-notification-channels/webpush. Эта библиотека предоставляет удобный способ отправки push уведомлений на веб-страницы.


Для начала работы необходимо установить эту библиотеку через Composer:

1
composer require laravel-notification-channels/webpush


Далее, нужно добавить соответствующие настройки в файл config/services.php:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
'webpush' => [
    'vapid' => [
        'subject' => 'mailto:[email protected]',
        'public_key' => 'your-public-key',
        'private_key' => 'your-private-key',
        'pem_file' => '',
        'pem' => '',
        'ttl' => 60 * 60 * 24,
        'urgency' => 'normal',
        'topic' => null,
        'crypto_key_pair_id' => null,
    ],
    'gcm' => [
        'key' => 'your-gcm-api-key',
        'sender_id' => 'your-gcm-sender-id',
        'ttl' => 60 * 60 * 24,
        'topic' => null,
        'urgency' => 'normal',
    ],
],


Здесь нужно заменить your-public-key и your-private-key на свои ключи VAPID, которые можно получить на сайте https://tools.reactpwa.com/vapid.


После этого можно создать уведомление, которое будет отправлено на веб-страницу:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
use IlluminateNotificationsNotification;
use NotificationChannelsWebPushWebPushMessage;
use NotificationChannelsWebPushWebPushChannel;

class NewPostNotification extends Notification
{
    public function via($notifiable)
    {
        return [WebPushChannel::class];
    }

    public function toWebPush($notifiable, $notification)
    {
        return (new WebPushMessage)
            ->title('New Post')
            ->body('A new post has been published.')
            ->action('View post', 'view_post')
            ->data(['id' => $notification->post->id]);
    }
}


Здесь определен класс NewPostNotification, который реализует метод via(), который указывает, что уведомление должно быть отправлено через канал WebPushChannel. Также определен метод toWebPush(), который возвращает объект WebPushMessage, содержащий заголовок, текст, действие и данные уведомления.


Для отправки уведомления можно вызвать метод notify() на объекте уведомления:

1
$user->notify(new NewPostNotification($post));


Здесь $user - это объект, на который отправляется уведомление, а $post - это объект поста, которое содержит данные, передаваемые в уведомлении.


Если все настройки выполнены верно, уведомление должно успешно отправиться на веб-страницу, и пользователь должен получить соответствующее уведомление в браузере.