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.