Надсилайте сповіщення в Laravel за допомогою Firebase Cloud Messaging та Notifier

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 06 серпня, 2025
Вам цікаво дізнатися, як легко інтегрувати FCM у ваш Laravel-проєкт? У статті розглянуто, як використовувати пакет Notifire для надсилання сповіщень з Firebase, а також всі його корисні можливості!

Firebase Cloud Messaging (FCM) — це рішення для обміну повідомленнями, яке працює на різних платформах і дозволяє надійно надсилати повідомлення. Якщо ви плануєте використовувати FCM з Laravel, Абделразек Канділ створив пакет Notifire, який підтримує систему сповіщень Laravel для надсилання FCM-увідомлень.

# Особливості

Примітка: Переконайтеся, що у вас вже є обліковий запис Firebase і налаштований проект, оскільки вам знадобиться ID проекту Firebase з консолі Firebase, а також облікові дані сервісного облікового запису Firebase, які повинні зберігатися в файлі /storage/firebase.json.

Ви можете встановити цей пакет за допомогою Composer, опублікувати файли пакету та запустити міграції:

composer require devkandil/notifire
php artisan vendor:publish --provider="DevKandil\NotiFire\FcmServiceProvider"
php artisan migrate

Крім того, вам потрібно внести деякі зміни до моделі User, зокрема додати поле fcm_token до масиву $fillable вашої моделі.

Пакет також містить API-ендпоінт /fcm/token у вбудованому класі FcmController. Цей ендпоінт автоматично реєструється з Middleware автентифікації Laravel Sanctum, тому переконайтеся, що Sanctum вже встановлено, і ваш користувач автентифікований перед виконанням запиту до цього ендпоінту.

Ви також можете додати трейти HasFcm до вашої моделі User для простого управління FCM-токенами. Наприклад:

$user->getFcmToken();
$user->updateFcmToken($token);

# Приклад

use DevKandil\NotiFire\Facades\Fcm;
 
$user = Auth::user();
$fcmToken = $user->getFcmToken();
 
$success = Fcm::withTitle('Laracon US Recap')
    ->withBody('Перегляньте все, що було оголошено на Laracon US')
    ->withImage('https://example.com/image.jpg')
    ->withIcon("notification_icon")
    ->withColor("#FF5733")
    ->withSound('default')
    ->sendNotification($fcmToken);

Використовуючи систему сповіщень Laravel, ви можете створити новий клас Notification, наприклад:

namespace App\Notifications;
 
use DevKandil\NotiFire\Enums\MessagePriority;
use DevKandil\NotiFire\FcmMessage;
use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Notification;
 
class NewAnnouncement extends Notification
{
    use Queueable;
 
    public function via(object $notifiable): array
    {
        return ['fcm'];
    }
 
    /**
     * Отримати FCM-репрезентацію сповіщення.
     */
    public function toFcm(object $notifiable): FcmMessage
    {
        return FcmMessage::create('Laravel AI Boost', 'Laravel AI Boost незабаром з’явиться!')
            ->image('https://example.com/image.jpg')
            ->sound('default')
            ->clickAction('OPEN_ACTIVITY')
            ->icon('notification_icon')
            ->color('#FF5733')
            ->priority(MessagePriority::HIGH)
            ->data([
                'timestamp' => now()->toIso8601String(),
            ]);
    }
}

А потім надішліть сповіщення за допомогою:

use \App\Notifications;
 
$user->notify(new NewAnnouncement());

Дізнайтеся більше про цей пакет та перегляньте вихідний код на GitHub.