Laravel firebase

  • December 5, 2024
  • 61

Sử dụng firebase sdk for php để tương tác với các service firebase: realtime database, push message... Tham khảo thêm bài viết

1. Install Firebase SDK

Chúng ta cần cài đặt Laravel Firebase package cho dự án


composer require kreait/laravel-firebase

// Public file config
php artisan vendor:publish --provider="Kreait\Laravel\Firebase\ServiceProvider" --tag=config 

2. Config package in laravel

Vào firebase truy cập vào project setting, service account tải server key firebase_credentials.json về thư mục root của dự án. Config key trong file config config/firebase.php


'credentials' => base_path(env('FIREBASE_CREDENTIALS', 'firebase_credentials.json')),

3. Service push

Viêt một service để gửi push notification



<?php

namespace App\Contracts\Services;

interface FirebaseService
{
    /**
     * @param array $data
     * @param array $fcmToken
     * @return void
     */
    public function pushNotifications(array $data, array $fcmToken = []): void;
}


<?php

namespace App\Services;

use Kreait\Firebase\Exception\FirebaseException;
use Kreait\Firebase\Exception\MessagingException;
use Kreait\Firebase\Messaging\CloudMessage;
use Kreait\Laravel\Firebase\Facades\Firebase;
use App\Contracts\Services\FirebaseService;

class FirebaseServiceImpl implements FirebaseService
{
    protected $notification;

    public function __construct()
    {
        $this->notification = Firebase::messaging();
    }

    /**
     * @param array $data
     * @param array $fcmToken
     * @return void
     * @throws FirebaseException
     * @throws MessagingException
     */
    public function pushNotifications(array $data ,array $fcmToken = []): void
    {
        $message = CloudMessage::fromArray([
            'notification' => [
                'title' => $data['title'] ?? null,
                'body' => $data['body'] ?? null
            ],
            'data' => $data
        ]);

        if ($fcmToken) {
            $this->notification->sendMulticast($message, $fcmToken);
        }
    }
}

4. Push notification

Khi muốn push notification sử dụng firebase thì binding FirebaseService trong service providers để sử dụng và gửi push là xong. Tham khảo thêm bài viết hướng dẫn gửi push notification laravel firebase


 $data = [
            'title' => trans('messages.title'),
            'body' => trans('messages.content'),
            'event_id' => $id,
        ];
$this->firebaseService->pushNotifications($data, $fcmTokens);

Tổng kết

Như vậy là chúng ta đã có thể sử dụng firebase sdk cho php để gửi push notification cho ứng dụng. Thanks for readding...

Tài liệu tham khảo

https://firebase-php.readthedocs.io/en/7.16.0/overview.html https://www.iankumu.com/blog/laravel-firebase/ https://www.iankumu.com/blog/laravel-firebase-push-notification/